Skip to content

Commit d59b569

Browse files
author
Vladislav
committed
Small fixes, added pairing tests
1 parent 614c7d5 commit d59b569

18 files changed

+249
-62
lines changed

eform-client/e2e/Helper methods/go-to-pages.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ export function goToDeviceUsersPage() {
2424
export function goToMainPage() {
2525
browser.get(data.startPageUrl);
2626
loginPage.login();
27-
waitTillVisibleAndClick(navbar.mainPageButton);
27+
browser.waitForAngular();
28+
// waitTillVisibleAndClick(navbar.mainPageButton);
2829
}
2930

3031
export function gotToSites() {

eform-client/e2e/Helper methods/other-helper-methods.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {browser, ElementFinder, ExpectedConditions} from 'protractor';
1+
import {browser, by, element, ElementFinder, ExpectedConditions} from 'protractor';
22
import {LoginPage} from '../Page objects/LoginPage';
33
import {default as data} from '../data';
44
import {Navbar} from '../Page objects/Navbar';
@@ -19,7 +19,9 @@ export function getToPage(page) {
1919
}
2020

2121
export function signOut() {
22+
browser.waitForAngular();
2223
navbar.signOutDropdown.click();
24+
browser.waitForAngular();
2325
navbar.signOutButton.click();
2426
browser.wait(ExpectedConditions.elementToBeClickable(loginPage.loginButton));
2527
}
@@ -28,3 +30,10 @@ export function waitFor(element) {
2830
browser.wait(ExpectedConditions.elementToBeClickable(element));
2931
}
3032

33+
export async function getStringsFromXpath(xpath, arr) {
34+
const x = element.all(by.xpath(xpath));
35+
for (let i = 0; i < await x.count(); i++) {
36+
const item = x.get(i);
37+
arr.push(await item.getText());
38+
}
39+
}

eform-client/e2e/Page objects/Main Page/MainPage.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import {$, $$, by, element, ElementArrayFinder, ElementFinder} from 'protractor';
1+
import {$, $$, browser, by, element, ElementArrayFinder, ElementFinder} from 'protractor';
22
import {DeleteEformModal} from './delete-eform.modal';
33
import {EditColumnsModal} from './edit-columns.modal';
44
import {EditTagModal} from './edit-tag.modal';
55
import {PairEformModal} from './pair-eform.modal';
66
import {CreateEformModal} from './create-eform.modal';
7+
import {getMainPageRowObject, MainPageRowObject} from './mainPage.row-object';
78

89
export class MainPage {
910
// Modals
@@ -21,15 +22,26 @@ export class MainPage {
2122
nameEFormSortBtn: ElementFinder;
2223
tagSelector: ElementFinder;
2324

25+
static async getAllMainPageRowObjects() {
26+
const rowObjArr: MainPageRowObject[] = [];
27+
const rowNum = await $$('#mainPageEFormsTableBody > tr').count(); // dublicate of method below, will be refactored in future
28+
for (let i = 1; i < rowNum; i++) {
29+
const obj = await getMainPageRowObject(i);
30+
rowObjArr.push(obj);
31+
}
32+
return rowObjArr;
33+
}
2434

2535
// actions
26-
async getRowNumber() {
36+
async getRowNumber() { // this method will be made static in future
37+
browser.waitForAngular();
2738
const rowNum = $$('#mainPageEFormsTableBody > tr').count();
2839
return await rowNum;
2940
}
3041

3142
getTagsForFilter(): ElementArrayFinder {
32-
return element.all(by.xpath('//*[@id="tagSelector"]/div/div/a'));
43+
browser.waitForAngular();
44+
return element.all(by.xpath('//*[@id="tagSelector"]/div/ul/li/a'));
3345
}
3446

3547
constructor() {
Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
import {by, element, ElementFinder} from 'protractor';
1+
import {browser, by, element, ElementFinder} from 'protractor';
2+
import {getStringsFromXpath} from '../../Helper methods/other-helper-methods';
23

34
export class MainPageRowObject {
45
id: number;
56
createdAt: string;
67
nameEForm: string;
78
tags: string[];
9+
pairedNames: string[];
810
pairingBtn: ElementFinder;
911
tagEditBtn: ElementFinder;
1012
editColumnsBtn: ElementFinder;
@@ -13,14 +15,17 @@ export class MainPageRowObject {
1315

1416
export async function getMainPageRowObject(rowNumber: number) {
1517
const _mainPageRowObj = new MainPageRowObject();
16-
_mainPageRowObj.id = +(await element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[1]`)).getText());
17-
_mainPageRowObj.createdAt = await element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[2]`)).getText();
18-
_mainPageRowObj.nameEForm = await element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[3]`)).getText();
19-
const tagsString = await element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[4]/div/div[1]`)).getText();
18+
_mainPageRowObj.id = +(await element(by.xpath(`//*[@id="mainPageEFormsTableBody"]/tr[${rowNumber}]/td[1]`)).getText());
19+
_mainPageRowObj.createdAt = await element(by.xpath(`//*[@id="mainPageEFormsTableBody"]/tr[${rowNumber}]/td[2]`)).getText();
20+
_mainPageRowObj.nameEForm = await element(by.xpath(`//*[@id="mainPageEFormsTableBody"]/tr[${rowNumber}]/td[3]`)).getText();
21+
const tagsString = await element(by.xpath(`//*[@id="mainPageEFormsTableBody"]//tr[${rowNumber}]/td[4]/div/div[1]`)).getText();
2022
_mainPageRowObj.tags = tagsString.split(' , ');
21-
_mainPageRowObj.tagEditBtn = element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[4]/div/div[2]/a`));
22-
_mainPageRowObj.editColumnsBtn = element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[6]/div/a`));
23-
_mainPageRowObj.pairingBtn = element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[5]/button`));
24-
_mainPageRowObj.deleteEFormBtn = element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[6]/div/button`));
23+
_mainPageRowObj.tagEditBtn = element(by.xpath(`//*[@id="mainPageEFormsTableBody"]/tr[${rowNumber}]/td[4]/div/div[2]/a`));
24+
_mainPageRowObj.editColumnsBtn = element(by.xpath(`//*[@id="mainPageEFormsTableBody"]/tr[${rowNumber}]/td[6]/div/a`));
25+
_mainPageRowObj.pairingBtn = element(by.xpath(`//*[@id="mainPageEFormsTableBody"]/tr[${rowNumber}]/td[5]/button`));
26+
_mainPageRowObj.deleteEFormBtn = element(by.xpath(`//*[@id="mainPageEFormsTableBody"]/tr[${rowNumber}]/td[6]/div/button`));
27+
const pairedNamesArr: string[] = [];
28+
await getStringsFromXpath(`//*[@id="mainPageEFormsTableBody"]/tr[${rowNumber}]/td[5]/span`, pairedNamesArr);
29+
_mainPageRowObj.pairedNames = pairedNamesArr;
2530
return _mainPageRowObj;
2631
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
1+
import {PairingModalRowObject} from './pairingModal.row-object';
2+
import {$, by, element, ElementFinder} from 'protractor';
3+
14
export class PairEformModal {
5+
public pairEformRowObjects: PairingModalRowObject[] = [];
6+
public checkedPairEformRowObjects: PairingModalRowObject[] = [];
7+
public uncheckedPairEformRowObjects: PairingModalRowObject[] = [];
8+
public saveBtn: ElementFinder;
9+
public cancelBtn: ElementFinder;
10+
public pairedEformRowObjectsNames: string[] = [];
11+
12+
async getPairingModalRowObj(rowNumber: number) {
13+
const rowObj = new PairingModalRowObject();
14+
rowObj.microtingId = await element(by.xpath(`//*[@id="pairingModalTableBody"]/tr[${rowNumber}]/td[1]`)).getText();
15+
rowObj.userDeviceName = await element(by.xpath(`//*[@id="pairingModalTableBody"]/tr[${rowNumber}]/td[2]`)).getText();
16+
rowObj.checkToPairChbx = await element(by.xpath(`//*[@id="pairingModalTableBody"]/tr[${rowNumber}]/td[3]/div[${rowNumber}]/div/input`));
17+
rowObj.paired = await rowObj.checkToPairChbx.isSelected();
18+
return rowObj;
19+
}
20+
21+
async getAllPairingModalRowObjects() {
22+
const pairingModalRowObjNum = await element.all(by.xpath('//*[@id="pairingModalTableBody"]/tr')).count();
23+
for (let i = 1; i <= pairingModalRowObjNum; i++) {
24+
this.pairEformRowObjects.push(await this.getPairingModalRowObj(i));
25+
}
26+
this.checkedPairEformRowObjects = this.pairEformRowObjects.filter(obj => obj.paired === true);
27+
this.uncheckedPairEformRowObjects = this.pairEformRowObjects.filter(obj => obj.paired === false);
28+
}
29+
30+
constructor() {
31+
this.saveBtn = $('#pairingModalSaveBtn');
32+
this.cancelBtn = $('#pairingModalCancelBtn');
33+
}
234

335
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import {ElementFinder} from 'protractor';
2+
3+
export class PairingModalRowObject {
4+
public microtingId: string;
5+
public userDeviceName: string;
6+
public paired: boolean;
7+
public checkToPairChbx: ElementFinder;
8+
}

eform-client/e2e/Page objects/Navbar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ export class Navbar {
1717
this.headerImage = element(by.xpath('//*[@id="header_full_top"]/div/div/div[1]/img'));
1818
this.signOutDropdown = $('#sign-out-dropdown');
1919
this.signOutButton = $('#sign-out');
20-
this.mainPageButton = $('#mainPage');
20+
this.mainPageButton = $('a#m5[href="/"]');
2121
}
2222
}

eform-client/e2e/data.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export default {
4242
forthTagForAdding: 'testTag4',
4343
fifthTagForAdding: 'testTag5',
4444
tagsNumberForSelectionForFilter: 2,
45-
xpathForTagsInTagSelectorInEditTagModal: '//*[@id="templateTagsSelector"]/div/div/a/span/span[2]',
45+
xpathForTagsInTagSelectorInEditTagModal: '//*[@id="templateTagsSelector"]/div/ul/li/a',
4646
xpathForTagsInTagListForDeletion: '//*[@id="tagListSelectorForDelete"]/option'
4747
}
4848
};

eform-client/e2e/tests/device-users/device-users.add.e2e-spec.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import {signOut} from '../../Helper methods/other-helper-methods';
66
import {getRowObject} from '../../Page objects/Device users/row-object';
77
import data from '../../data';
88

9-
const navbar: Navbar = new Navbar();
109
const deviceUsersPage: DeviceUsersPage = new DeviceUsersPage();
1110

1211
describe('Tests for adding users', function () {

eform-client/e2e/tests/main-page/main-page.create-eform.e2e-spec.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,12 @@ describe('Main Page - CREATE', function () {
1313
goToMainPage();
1414
done();
1515
});
16-
1716
afterAll(done => {
1817
signOut();
1918
done();
2019
});
21-
2220
describe('Positive: user', function () {
23-
beforeAll(done =>{
21+
beforeAll(done => {
2422
browser.get(data.startPageUrl);
2523
signOut();
2624
done();
@@ -43,9 +41,9 @@ describe('Main Page - CREATE', function () {
4341
browser.wait(ExpectedConditions.elementToBeClickable(mainPage.newEformBtn));
4442
const finalRowNum = await mainPage.getRowNumber();
4543
const awaitedTagArray = [''];
46-
expect(finalRowNum).toEqual(initRowNum + 1);
44+
expect(finalRowNum).toEqual(initRowNum + 1, 'EForm was not added');
4745
const firstRowObj = await getMainPageRowObject(1);
48-
expect(firstRowObj.tags).toEqual(awaitedTagArray);
46+
expect(firstRowObj.tags).toEqual(awaitedTagArray, 'Tag list is not empty');
4947
done();
5048
});
5149
it('should create eform simultaneously with creating 1 tag', async function (done) {
@@ -74,7 +72,7 @@ describe('Main Page - CREATE', function () {
7472
expect(finalRowNum).toEqual(initRowNum + 1, 'Row was not added!');
7573
const firstRowObj = await getMainPageRowObject(1);
7674
const awaitedTagArray = [data.MainPage.firstTagForAdding];
77-
expect(firstRowObj.tags).toEqual(awaitedTagArray);
75+
expect(firstRowObj.tags).toEqual(awaitedTagArray, 'Tags are added not properly');
7876
done();
7977
});
8078
it('should create eform simultaneously with creating 2 and more tags', async function (done) {
@@ -199,11 +197,10 @@ describe('Main Page - CREATE', function () {
199197
describe('Negative: user ', function () {
200198
beforeEach(done => {
201199
goToMainPage();
202-
browser.waitForAngular();
203200
done();
204201
});
205202
it('should not create eform if xml is empty', async function (done) {
206-
browser.sleep(5000);
203+
browser.waitForAngular();
207204
const initRowNum = await mainPage.getRowNumber();
208205
mainPage.newEformBtn.click();
209206
waitFor(mainPage.createEFormModal.cancelBtn);
@@ -212,7 +209,6 @@ describe('Main Page - CREATE', function () {
212209
const finalRowNum = await mainPage.getRowNumber();
213210
expect(finalRowNum).toEqual(initRowNum);
214211
browser.waitForAngular();
215-
browser.sleep(4000);
216212
done();
217213
});
218214

0 commit comments

Comments
 (0)