Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions eform-client/e2e/Helper methods/go-to-pages.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// these functions navigate user from login page to another page
import {LoginPage} from '../Page objects/LoginPage';
import {waitTillVisibleAndClick} from './other-helper-methods';
import {Navbar} from '../Page objects/Navbar';
import {browser} from 'protractor';
import data from '../data';

const loginPage = new LoginPage();
const navbar = new Navbar();

export function goToSettingsPage() {
browser.get(data.startPageUrl);
loginPage.login();
waitTillVisibleAndClick(navbar.advancedButton);
waitTillVisibleAndClick(navbar.settingsButton);
}

export function goToDeviceUsersPage() {
browser.get(data.startPageUrl);
loginPage.login();
waitTillVisibleAndClick(navbar.deviceUsersButton);
}

export function myEFormsPage() {

}

export function gotToSites() {

}

export function gotToWorkers() {

}

export function gotToUnits() {

}

export function gotToSearchableList() {

}

export function gotSelectableList() {

}

export function gotToUserManagement() {

}

export function gotToGoogleAuthenticator() {

}

export function goToChangePassword() {

}
25 changes: 25 additions & 0 deletions eform-client/e2e/Helper methods/other-helper-methods.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import {browser, ExpectedConditions} from 'protractor';
import {LoginPage} from '../Page objects/LoginPage';
import {default as data} from '../data';
import {Navbar} from '../Page objects/Navbar';

const loginPage = new LoginPage();
const navbar = new Navbar();
const startPageUrl = data.startPageUrl;

export function waitTillVisibleAndClick(element): void {
browser.wait(ExpectedConditions.visibilityOf(element));
element.click();
}

export function getToPage(page) {
browser.get(data.startPageUrl);
loginPage.login();
waitTillVisibleAndClick(page);
}

export function signOut() {
navbar.signOutDropdown.click();
navbar.signOutButton.click();
browser.wait(ExpectedConditions.elementToBeClickable(loginPage.loginButton));
}
39 changes: 39 additions & 0 deletions eform-client/e2e/Page objects/Device users/DeviceUsersPage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import {$, $$, browser, by, element, ElementFinder, ExpectedConditions} from 'protractor';
import {OtpModal} from './otp.modal';
import {AddNewUserModal} from './add-new-user.modal';
import data from '../../data';
import {getRowObject, RowObject} from './row-object';
import {DeleteModal} from './delete.modal';


export class DeviceUsersPage {

// modal windows
OTPModal = new OtpModal();
addNewUserModal = new AddNewUserModal();
deleteModal = new DeleteModal();
// elements
newDeviceUserButton: ElementFinder;
deleteUserButton: ElementFinder;
lastUser: RowObject;

// actions
async getRowsNumber() {
return $$(data.DeviceUsersPage.rowCountSelector).count();
}

async usersCleanup() {
let startNum = await this.getRowsNumber();
while (startNum > 2) {
this.deleteUserButton.click();
this.deleteModal.okButton.click();
startNum = await this.getRowsNumber();
}
return;
}

constructor() {
this.newDeviceUserButton = $('#newDeviceUserButton');
this.deleteUserButton = element(by.xpath(data.DeviceUsersPage.deleteUserXPath));
}
}
27 changes: 27 additions & 0 deletions eform-client/e2e/Page objects/Device users/EditUserPage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import {$, ElementFinder} from 'protractor';
import data from '../../data';

export class EditUserPage {
// elements
public firstNameInput: ElementFinder;
public lastNameInput: ElementFinder;
public saveButton: ElementFinder;

// actions
save(): void {
this.saveButton.click();
}

fillInputs() {
this.firstNameInput.clear();
this.firstNameInput.sendKeys(data.DeviceUsersPage.sampleEditFistName);
this.lastNameInput.clear();
this.lastNameInput.sendKeys(data.DeviceUsersPage.sampleEditLastName);
}

constructor() {
this.firstNameInput = $('#firstName');
this.lastNameInput = $('#lastName');
this.saveButton = $('#saveButton');
}
}
36 changes: 36 additions & 0 deletions eform-client/e2e/Page objects/Device users/add-new-user.modal.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import data from '../../data';
import {$, ElementFinder} from 'protractor';

export class AddNewUserModal {

// elements
public firstNameInput: ElementFinder;
public lastNameInput: ElementFinder;
public saveButton: ElementFinder;
public cancelButton: ElementFinder;

// actions
fillFirstNameInput(): void {
this.firstNameInput.sendKeys(data.DeviceUsersPage.sampleFirstName);

}

fillLastNameInput(): void {
this.lastNameInput.sendKeys(data.DeviceUsersPage.sampleLastName);
}

save(): void {
this.saveButton.click();
}

cancel(): void {
this.cancelButton.click();
}

constructor() {
this.firstNameInput = $('#firstName');
this.lastNameInput = $('#lastName');
this.saveButton = $('#saveButton');
this.cancelButton = $('#cancelButton');
}
}
11 changes: 11 additions & 0 deletions eform-client/e2e/Page objects/Device users/delete.modal.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import {$, ElementFinder} from 'protractor';

export class DeleteModal {
public okButton: ElementFinder;
public cancelButton: ElementFinder;

constructor() {
this.okButton = $('#deleteOkButton');
this.cancelButton = $('#deleteCancelButton');
}
}
3 changes: 3 additions & 0 deletions eform-client/e2e/Page objects/Device users/otp.modal.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export class OtpModal {

}
29 changes: 29 additions & 0 deletions eform-client/e2e/Page objects/Device users/row-object.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import {by, element} from 'protractor';

// returning row with some number like an object.
export function getRowObject(rowNumber: number): RowObject {
const rowObject = new RowObject();
// cells of the row
rowObject.siteID = element(by.xpath(`//*[@id="simple_sites"]/tbody/tr[${rowNumber}]/td[1]`)).getText();
rowObject.firstName = element(by.css(`#tableBody > tr:nth-child(${rowNumber}) > td:nth-child(2) > span:nth-last-child(1)`)).getText();
rowObject.lastName = element(by.css(`#tableBody > tr:nth-child(${rowNumber}) > td:nth-child(3) > span:nth-last-child(1)`)).getText();
rowObject.deviceId = element(by.xpath(`//*[@id="simple_sites"]/tbody/tr[${rowNumber}]/td[4]/div`)).getText();
rowObject.otpCode = element(by.xpath(`//*[@id="simple_sites"]/tbody/tr[${rowNumber}]/td[5]/div`)).getText();
rowObject.retrieveOtpCodeButton = rowNumber < 3 ? element(by
.xpath(`//*[@id="simple_sites"]/tbody/tr[${rowNumber}]/td[5]/button`)) : null;

rowObject.editButton = element(by.xpath(`//*[@id="tableBody"]/tr[${rowNumber}]/td[6]/a`));
rowObject.deleteButton = element(by.xpath(`//*[@id="simple_sites"]/tbody/tr[${rowNumber}]/td[1]`));
return rowObject;
}

export class RowObject {
public siteID;
public firstName;
public lastName;
public deviceId;
public otpCode;
public retrieveOtpCodeButton;
public editButton;
public deleteButton;
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
import {$, by, element, ElementFinder} from 'protractor';

export class MainPage {
export class Navbar {

advancedButton: ElementFinder;
settingsButton: ElementFinder;
deviceUsersButton: ElementFinder;
headerImage: ElementFinder;
signOutDropdown: ElementFinder;
signOutButton: ElementFinder;

constructor() {
this.advancedButton = element(by.xpath('//*[@id="bs-example-navbar-collapse-1"]/ul/li[3]/a'));
this.settingsButton = $('a[href="/settings"]');
this.deviceUsersButton = $('a[href="/simplesites"]');
this.headerImage = element(by.xpath('//*[@id="header_full_top"]/div/div/div[1]/img'));
this.signOutDropdown = $('#sign-out-dropdown');
this.signOutButton = $('#sign-out');
}
}
11 changes: 1 addition & 10 deletions eform-client/e2e/Page objects/SettingsPage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ export class SettingsPage {
public saveButton: ElementFinder;
public headerMainText: ElementFinder;
public headerSecondaryText: ElementFinder;
public signOutDropdown: ElementFinder;
public signOutButton: ElementFinder;
public fileInput: ElementFinder;

// helper functions
Expand All @@ -32,12 +30,6 @@ export class SettingsPage {
browser.waitForAngular();
}

public signOut(): void {
this.signOutDropdown.click();
this.signOutButton.click();
browser.waitForAngular();
}

constructor() {
// parts of settings
this.SiteHeader = new SiteHeader();
Expand All @@ -50,7 +42,6 @@ export class SettingsPage {
this.saveButton = $('button.btn-ar.btn-danger');
this.headerMainText = element(this.mainTextHeaderMatcher);
this.headerSecondaryText = element(this.secondaryTextHeaderMatcher);
this.signOutDropdown = $('#sign-out-dropdown');
this.signOutButton = $('#sign-out');

}
}
10 changes: 10 additions & 0 deletions eform-client/e2e/data.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export default {
login: 'admin',
password: 'Qq1234567$',
startPageUrl: '/',
SiteHeaderSettings: {
defaultSettings: {
headerMainText: 'Microting eForm',
Expand All @@ -21,6 +22,15 @@ export default {
loginPageMainTextSample: 'Sample login page main text',
loginPageSecondaryTextSample: 'Sample login page secondary text'
}
},
DeviceUsersPage: {
sampleFirstName: 'FirstName',
sampleLastName: 'LastName',
sampleEditFistName: 'Edit First Name',
sampleEditLastName: 'Edit Last Name',
notAvaliableName: 'N/A',
rowCountSelector: '#tableBody tr',
deleteUserXPath: '//*[@id="tableBody"]/tr[3]/td[6]/button'
}

};
Expand Down
Loading