Skip to content

Commit 2f251ca

Browse files
author
Vladislav
committed
Finished tags tests + test refactoring
1 parent 7007eca commit 2f251ca

20 files changed

+510
-122
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import {browser, ExpectedConditions} from 'protractor';
1+
import {browser, 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';
55

66
const loginPage = new LoginPage();
77
const navbar = new Navbar();
8-
const startPageUrl = data.startPageUrl;
98

109
export function waitTillVisibleAndClick(element): void {
10+
browser.waitForAngular();
1111
browser.wait(ExpectedConditions.visibilityOf(element));
1212
element.click();
1313
}
@@ -27,3 +27,4 @@ export function signOut() {
2727
export function waitFor(element) {
2828
browser.wait(ExpectedConditions.elementToBeClickable(element));
2929
}
30+

eform-client/e2e/Page objects/Device users/DeviceUsersPage.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import {DeleteModal} from './delete.modal';
99
export class DeviceUsersPage {
1010

1111
// modal windows
12-
OTPModal = new OtpModal();
13-
addNewUserModal = new AddNewUserModal();
14-
deleteModal = new DeleteModal();
12+
OTPModal: OtpModal;
13+
addNewUserModal: AddNewUserModal;
14+
deleteModal: DeleteModal;
1515
// elements
1616
newDeviceUserButton: ElementFinder;
1717
deleteUserButton: ElementFinder;
@@ -24,16 +24,20 @@ export class DeviceUsersPage {
2424

2525
async usersCleanup() {
2626
let startNum = await this.getRowsNumber();
27-
while (startNum > 2) {
27+
for (let i = 0; i < startNum - 2; i++) {
28+
// while (startNum > 2) {
2829
this.deleteUserButton.click();
2930
this.deleteModal.okButton.click();
3031
startNum = await this.getRowsNumber();
3132
}
32-
return;
33+
// return;
3334
}
3435

3536
constructor() {
3637
this.newDeviceUserButton = $('#newDeviceUserButton');
3738
this.deleteUserButton = element(by.xpath(data.DeviceUsersPage.deleteUserXPath));
39+
this.OTPModal = new OtpModal();
40+
this.addNewUserModal = new AddNewUserModal();
41+
this.deleteModal = new DeleteModal();
3842
}
3943
}

eform-client/e2e/Page objects/Device users/delete.modal.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export class DeleteModal {
55
public cancelButton: ElementFinder;
66

77
constructor() {
8-
this.okButton = $('#deleteOkButton');
9-
this.cancelButton = $('#deleteCancelButton');
8+
this.okButton = $('#deleteModalOkButton');
9+
this.cancelButton = $('#deleteModalCancelButton');
1010
}
1111
}

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

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
import {$, $$, browser, by, element, ElementArrayFinder, ElementFinder, ExpectedConditions} from 'protractor';
1+
import {$, $$, 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 {MainPageRowObject} from './mainPage.row-object';
8-
import {promise} from 'selenium-webdriver';
97

108
export class MainPage {
119
// Modals
@@ -30,31 +28,10 @@ export class MainPage {
3028
return await rowNum;
3129
}
3230

33-
selectTagForFilter(tagName) {
34-
const tag = element(by.xpath(`//*[@id="tagSelector"]//span[text()="${tagName}"]`));
35-
tag.click();
36-
}
37-
3831
getTagsForFilter(): ElementArrayFinder {
3932
return element.all(by.xpath('//*[@id="tagSelector"]/div/div/a'));
4033
}
4134

42-
sortByID() {
43-
44-
}
45-
46-
sortByCreatedAt() {
47-
48-
}
49-
50-
sortByNameEForm() {
51-
52-
}
53-
54-
deleteEform() {
55-
56-
}
57-
5835
constructor() {
5936
// modals
6037
this.deleteEformModal = new DeleteEformModal();

eform-client/e2e/Page objects/Main Page/create-eform.modal.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,14 @@ export class CreateEformModal {
1818
const tag = element(by.xpath(`//*[@id="createEFormMultiSelector"]//span[text()="${tagName}"]`));
1919
tag.click();
2020
};
21+
2122
enterXML(name) {
2223
let text = xmlData.xmlTest1.text;
2324
text = text.replace(data.MainPage.wordToReplaceInXML,
2425
name + Math.floor(Math.random() * data.MainPage.auxiliaryNumberForReplacing) + 1);
2526
this.xmlTextArea.clear();
26-
// browser.executeScript(this.xmlTextArea)
27-
// let sampletext = 'SAMPLE_TEXT--';
28-
// browser.executeScript('document.getElementById(\'eFormXml\').value = arguments[0]', text);
29-
// browser.executeScript('document.getElementById(\'eFormXml\').setAttribute(\'ng-reflect-model\', arguments[0])', text);
30-
// browser.executeScript('document.getElementById(\'eFormXml\').setAttribute(\'value\', arguments[0])', text);
31-
this.xmlTextArea.sendKeys(text);
27+
browser.executeScript(`document.querySelector('#eFormXml').value = arguments[0];`, text);
28+
this.xmlTextArea.sendKeys(' ');
3229
}
3330

3431
constructor() {
@@ -40,5 +37,4 @@ export class CreateEformModal {
4037
this.saveEFormBtn = $('#createEFormSaveEFormBtn');
4138
this.closeTagInputBtn = $('#closeTagInputBtn');
4239
}
43-
4440
}

eform-client/e2e/Page objects/Main Page/delete-eform.modal.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export class DeleteEformModal {
55
deleteEFormOkBtn: ElementFinder;
66
deleteEFormCancelBtn: ElementFinder;
77

8-
constructor(){
8+
constructor() {
99
this.deleteEFormOkBtn = $('#deleteEFormOkBtn');
1010
this.deleteEFormCancelBtn = $('#deleteEFormCancelBtn');
1111
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,40 @@
1+
import {$, $$, by, element, ElementArrayFinder, ElementFinder} from 'protractor';
2+
import data from '../../data';
3+
14
export class EditTagModal {
5+
// elements
6+
saveBtn: ElementFinder;
7+
saveNewTagBtn: ElementFinder;
8+
deleteTagBtn: ElementFinder;
9+
templateTagsSelector: ElementFinder;
10+
newTagInput: ElementFinder;
11+
cancelBtn: ElementFinder;
12+
tagListSelectorForDelete: ElementFinder;
13+
14+
// actions
15+
async getTemplateTags() {
16+
const elementFinderArray = element.all(by.xpath(data.MainPage.xpathForTagsInTagSelectorInEditTagModal));
17+
const elementFinderArrayLength = await elementFinderArray.count();
18+
let tagArr: ElementFinder[];
19+
const elementPromiseArr = [];
20+
for (let i = 0; i < elementFinderArrayLength; i++) {
21+
elementPromiseArr.push(elementFinderArray.get(i));
22+
}
23+
tagArr = await Promise.all(elementPromiseArr);
24+
return tagArr;
25+
}
26+
27+
getTagsInTagList() {
28+
return element.all(by.xpath(`${data.MainPage.xpathForTagsInTagListForDeletion}`));
29+
}
230

31+
constructor() {
32+
this.saveBtn = $('#saveTemplateTagBtn');
33+
this.newTagInput = $('#newTagInput');
34+
this.cancelBtn = $('#cancelCreationOfTemplateTagBtn');
35+
this.saveNewTagBtn = $('#saveNewTagBtn');
36+
this.deleteTagBtn = $('#deleteTagBtn');
37+
this.templateTagsSelector = $('#templateTagsSelector');
38+
this.tagListSelectorForDelete = $('#tagListSelectorForDelete');
39+
}
340
}

eform-client/e2e/Page objects/Main Page/mainPage.row-object.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export class MainPageRowObject {
1313

1414
export async function getMainPageRowObject(rowNumber: number) {
1515
const _mainPageRowObj = new MainPageRowObject();
16-
_mainPageRowObj.id = +element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[1]`)).getText();
16+
_mainPageRowObj.id = +(await element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[1]`)).getText());
1717
_mainPageRowObj.createdAt = await element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[2]`)).getText();
1818
_mainPageRowObj.nameEForm = await element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[3]`)).getText();
1919
const tagsString = await element(by.xpath(`//*[@id="units"]/tbody/tr[${rowNumber}]/td[4]/div/div[1]`)).getText();

eform-client/e2e/data.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ export default {
4141
thirdTagForAdding: 'testTag3',
4242
forthTagForAdding: 'testTag4',
4343
fifthTagForAdding: 'testTag5',
44-
tagsNumberForSelectionForFilter: 2
44+
tagsNumberForSelectionForFilter: 2,
45+
xpathForTagsInTagSelectorInEditTagModal: '//*[@id="templateTagsSelector"]/div/div/a/span/span[2]',
46+
xpathForTagsInTagListForDeletion: '//*[@id="tagListSelectorForDelete"]/option'
4547
}
46-
}
48+
};
4749

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

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
11
import {goToDeviceUsersPage} from '../../Helper methods/go-to-pages';
2-
import {signOut} from '../../Helper methods/other-helper-methods';
2+
import {signOut, waitTillVisibleAndClick} from '../../Helper methods/other-helper-methods';
33
import {DeviceUsersPage} from '../../Page objects/Device users/DeviceUsersPage';
44
import {browser, ExpectedConditions} from 'protractor';
5+
import {getMainPageRowObject} from '../../Page objects/Main Page/mainPage.row-object';
6+
import {getRowObject} from '../../Page objects/Device users/row-object';
57

68

79
const deviceUsersPage: DeviceUsersPage = new DeviceUsersPage();
810

911
describe('Tests for user deletion', function () {
10-
beforeAll((done) => {
12+
beforeEach((done) => {
1113
goToDeviceUsersPage();
1214
done();
1315
});
14-
afterAll((done) => {
16+
afterEach((done) => {
1517
signOut();
1618
done();
1719
});
1820

19-
describe('Device user delete button', function () {
21+
xdescribe('Device user delete button', function () {
2022
it('should delete user', async function (done) {
21-
console.log('Adding person');
2223
const initialrowNumber = deviceUsersPage.getRowsNumber();
2324
deviceUsersPage.newDeviceUserButton.click();
2425
browser.wait(ExpectedConditions.visibilityOf(deviceUsersPage.addNewUserModal.saveButton));
@@ -28,32 +29,33 @@ describe('Tests for user deletion', function () {
2829
browser.wait(ExpectedConditions.visibilityOf(deviceUsersPage.newDeviceUserButton));
2930
const finalRowSnumber = deviceUsersPage.getRowsNumber();
3031
expect(await initialrowNumber + 1).toEqual(await finalRowSnumber, 'User was not added!');
31-
deviceUsersPage.deleteUserButton.click();
32+
waitTillVisibleAndClick(deviceUsersPage.deleteUserButton);
3233
deviceUsersPage.deleteModal.okButton.click();
3334
browser.wait(ExpectedConditions.elementToBeClickable(deviceUsersPage.newDeviceUserButton));
3435
const afterDeleteRowCount = deviceUsersPage.getRowsNumber();
35-
expect(await afterDeleteRowCount).toEqual(await initialrowNumber);
36+
expect(afterDeleteRowCount).toEqual(initialrowNumber);
3637
done();
3738
});
3839
});
3940

4041
describe('Cancel button in delete modal', function () {
4142
it('should not delete user', async function (done) {
42-
console.log('Adding person');
43-
const initialrowNumber = deviceUsersPage.getRowsNumber();
43+
const initialrowNumber = await deviceUsersPage.getRowsNumber();
4444
deviceUsersPage.newDeviceUserButton.click();
4545
browser.wait(ExpectedConditions.visibilityOf(deviceUsersPage.addNewUserModal.saveButton));
4646
deviceUsersPage.addNewUserModal.fillFirstNameInput();
4747
deviceUsersPage.addNewUserModal.fillLastNameInput();
4848
deviceUsersPage.addNewUserModal.save();
4949
browser.wait(ExpectedConditions.visibilityOf(deviceUsersPage.newDeviceUserButton));
50-
const finalRowSnumber = deviceUsersPage.getRowsNumber();
51-
expect(await initialrowNumber + 1).toEqual(await finalRowSnumber, 'User was not added!');
52-
deviceUsersPage.deleteUserButton.click();
50+
const finalRowSnumber = await deviceUsersPage.getRowsNumber();
51+
const userAdded: boolean = initialrowNumber + 1 === finalRowSnumber;
52+
expect(userAdded).toBeTruthy('User was not added! -- It doesn\'t mean that deletion does not work,' +
53+
' but there\'s trouble with adding person');
54+
waitTillVisibleAndClick(deviceUsersPage.deleteUserButton);
5355
deviceUsersPage.deleteModal.cancelButton.click();
5456
browser.wait(ExpectedConditions.elementToBeClickable(deviceUsersPage.newDeviceUserButton));
55-
const afterDeleteCancel = deviceUsersPage.getRowsNumber();
56-
expect(await afterDeleteCancel).toEqual(await initialrowNumber + 1);
57+
const afterDeleteCancel = await deviceUsersPage.getRowsNumber();
58+
expect(afterDeleteCancel).toEqual(finalRowSnumber, 'User was deleted');
5759
done();
5860
});
5961
});

0 commit comments

Comments
 (0)