Skip to content

Commit 39d12b1

Browse files
committed
//WIP
Tests for customer settings page
1 parent 76740ab commit 39d12b1

13 files changed

+1127
-0
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import Page from '../Page';
2+
3+
export class CustomersPage extends Page {
4+
constructor() {
5+
super();
6+
}
7+
8+
public get rowNum(): number {
9+
return $$('#tableBody > tr').length;
10+
}
11+
12+
getCustomer(num): CustomersRowObject {
13+
return new CustomersRowObject(num);
14+
}
15+
16+
public get newCustomerBtn() {
17+
return browser.element('#newCustomerBtn');
18+
}
19+
20+
public get customersSettingsBtn() {
21+
return browser.element('#firstName');
22+
}
23+
24+
public get importCustomersSettingsBtn() {
25+
return browser.element('#lastName');
26+
}
27+
28+
public get saveImportCustomersBtn() {
29+
return browser.element('#saveCreateBtn');
30+
}
31+
32+
public get cancelImportCustomersBtn() {
33+
return browser.element('#saveCreateBtn');
34+
}
35+
36+
public get deleteCustomerBtn() {
37+
return browser.element('#cancelCreateBtn');
38+
}
39+
40+
public get editCustomerBtn() {
41+
return browser.element('#editCustomerBtn');
42+
}
43+
44+
public get customersButton() {
45+
return browser.element('#customers-pn');
46+
}
47+
48+
public goToCustomersPage() {
49+
this.customersButton.click();
50+
browser.pause(20000);
51+
}
52+
53+
public get saveDeleteBtn() {
54+
return browser.element('#customerSaveDeleteBtn');
55+
}
56+
}
57+
58+
const customersPage = new CustomersPage();
59+
export default customersPage;
60+
61+
export class CustomersRowObject {
62+
constructor(rowNumber) {
63+
this.createdBy = $$('#CreatedBy')[rowNumber - 1].getText();
64+
this.customerNo = $$('#CustomerNo')[rowNumber - 1].getText();
65+
this.contactPerson = $$('#ContactPerson')[rowNumber - 1].getText();
66+
this.companyName = $$('#CompanyName')[rowNumber - 1].getText();
67+
this.companyAddress = $$('#CompanyAddress')[rowNumber - 1].getText();
68+
this.zipCode = $$('#ZipCode')[rowNumber - 1].getText();
69+
this.cityName = $$('#CityName')[rowNumber - 1].getText();
70+
this.email = $$('#Email')[rowNumber - 1].getText();
71+
this.phone = $$('#Phone')[rowNumber - 1].getText();
72+
this.editBtn = $$('#editCustomerBtn')[rowNumber - 1];
73+
this.deleteBtn = $$('#deleteCustomerBtn')[rowNumber - 1];
74+
}
75+
76+
public id;
77+
public version;
78+
public updatedByUserId;
79+
public createdBy;
80+
public customerNo;
81+
public contactPerson;
82+
public companyName;
83+
public companyAddress;
84+
public zipCode;
85+
public cityName;
86+
public email;
87+
public phone;
88+
public editBtn;
89+
public deleteBtn;
90+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import Page from '../Page';
2+
3+
export class CustomersImportPage extends Page {
4+
constructor() {
5+
super();
6+
}
7+
8+
public get saveImportCustomersBtn() {
9+
return browser.element('#saveCreateBtn');
10+
}
11+
12+
public get cancelImportCustomersBtn() {
13+
return browser.element('#saveCreateBtn');
14+
}
15+
}
16+
17+
const customersImportPage = new CustomersImportPage();
18+
export default customersImportPage;
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
import Page from '../Page';
2+
import customersPage from "./Customers.page";
3+
4+
export class CustomersModalPage extends Page {
5+
constructor() {
6+
super();
7+
}
8+
9+
public get createBtn() {
10+
return browser.element('#createCustomerBtn');
11+
}
12+
13+
public get cancelCreateBtn() {
14+
return browser.element('#cancelCreateCustomerBtn');
15+
}
16+
17+
public get saveEditBtn() {
18+
return browser.element('#saveEditBtn');
19+
}
20+
21+
public get cancelEditBtn() {
22+
return browser.element('#cancelEditBtn');
23+
}
24+
25+
public get saveDeleteBtn() {
26+
return browser.element('#customerSaveDeleteBtn');
27+
}
28+
29+
public get cancelDeleteBtn() {
30+
return browser.element('#customerCancelDeleteBtn');
31+
}
32+
33+
public get createCreatedByInput() {
34+
return browser.element('#createCreatedBy');
35+
}
36+
37+
public get editCreatedByInput() {
38+
return browser.element('#editCreatedBy');
39+
}
40+
41+
public get createCustomerNo() {
42+
return browser.element('#createCustomerNo');
43+
}
44+
45+
public get editCustomerNo() {
46+
return browser.element('#editCustomerNo');
47+
}
48+
49+
public get createContactPerson() {
50+
return browser.element('#createContactPerson');
51+
}
52+
53+
public get editContactPerson() {
54+
return browser.element('#editContactPerson');
55+
}
56+
57+
public get createCompanyName() {
58+
return browser.element('#createCompanyName');
59+
}
60+
61+
public get editCompanyName() {
62+
return browser.element('#editCompanyName');
63+
}
64+
65+
public get createCompanyAddress() {
66+
return browser.element('#createCompanyAddress');
67+
}
68+
69+
public get editCompanyAddress() {
70+
return browser.element('#editCompanyAddress');
71+
}
72+
73+
public get createZipCode() {
74+
return browser.element('#createZipCode');
75+
}
76+
77+
public get editZipCode() {
78+
return browser.element('#editZipCode');
79+
}
80+
81+
public get createCityName() {
82+
return browser.element('#createCityName');
83+
}
84+
85+
public get editCityName() {
86+
return browser.element('#editCityName');
87+
}
88+
89+
public get createPhone() {
90+
return browser.element('#createPhone');
91+
}
92+
93+
public get editPhone() {
94+
return browser.element('#editPhone');
95+
}
96+
97+
public get createEmail() {
98+
return browser.element('#createEmail');
99+
}
100+
101+
public get editEmail() {
102+
return browser.element('#editEmail');
103+
}
104+
105+
public createCustomer(data: any) {
106+
this.createCreatedByInput.setValue(data.createdBy);
107+
this.createCustomerNo.setValue(data.customerNo);
108+
this.createContactPerson.setValue(data.contactPerson);
109+
this.createCompanyName.setValue(data.companyName);
110+
this.createCompanyAddress.setValue(data.companyAddress);
111+
this.createZipCode.setValue(data.zipCode);
112+
this.createCityName.setValue(data.cityName);
113+
this.createPhone.setValue(data.phone);
114+
this.createEmail.setValue(data.email);
115+
this.createBtn.click();
116+
browser.pause(16000);
117+
}
118+
119+
public updateCustomer(data: any) {
120+
this.editCreatedByInput.setValue(data.createdBy);
121+
this.editCustomerNo.setValue(data.customerNo);
122+
this.editContactPerson.setValue(data.contactPerson);
123+
this.editCompanyName.setValue(data.companyName);
124+
this.editCompanyAddress.setValue(data.companyAddress);
125+
this.editZipCode.setValue(data.zipCode);
126+
this.editCityName.setValue(data.cityName);
127+
this.editPhone.setValue(data.phone);
128+
this.editEmail.setValue(data.email);
129+
this.saveEditBtn.click();
130+
browser.pause(16000);
131+
}
132+
133+
public createEmptyCustomer() {
134+
this.createBtn.click();
135+
browser.pause(16000);
136+
}
137+
138+
public deleteCustomer() {
139+
this.saveDeleteBtn.click();
140+
browser.pause(16000);
141+
}
142+
143+
}
144+
145+
const customersModalPage = new CustomersModalPage();
146+
export default customersModalPage;
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import Page from '../Page';
2+
3+
export class CustomersSettingsPage extends Page {
4+
constructor() {
5+
super();
6+
}
7+
8+
public get deleteCustomerBtn() {
9+
return browser.element('#cancelCreateBtn');
10+
}
11+
12+
public get saveEditBtn() {
13+
return browser.element('#saveEditBtn');
14+
}
15+
16+
public get cancelEditBtn() {
17+
return browser.element('#cancelEditBtn');
18+
}
19+
20+
public get saveDeleteBtn() {
21+
return browser.element('#saveDeleteBtn');
22+
}
23+
public getCheckboxById(id: string) {
24+
return browser.element('#checkbox' + id);
25+
}
26+
27+
public clickOnChecboxById(id: string) {
28+
const el = browser.element('#mat-checkbox-' + id);
29+
el.click();
30+
browser.pause(2000);
31+
}
32+
33+
public get cancelDeleteBtn() {
34+
return browser.element('#cancelDeleteBtn');
35+
}
36+
}
37+
38+
const customersSettingsPage = new CustomersSettingsPage();
39+
export default customersSettingsPage;
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import loginPage from '../../Page objects/Login.page';
2+
import {generateRandmString} from '../../Helpers/helper-functions';
3+
import customersPage, {CustomersRowObject} from '../../Page objects/Customers/Customers.page';
4+
import customersModalPage from '../../Page objects/Customers/CustomersModal.page';
5+
6+
const expect = require('chai').expect;
7+
8+
describe('Customers plugin page', function () {
9+
before(function () {
10+
loginPage.open('/');
11+
loginPage.login();
12+
customersPage.goToCustomersPage();
13+
});
14+
it('should add new customer with all empty fields', function () {
15+
customersPage.newCustomerBtn.click();
16+
browser.pause(6000);
17+
const rowCountBeforeCreation = customersPage.rowNum;
18+
customersModalPage.createEmptyCustomer();
19+
const rowCountAfterCreation = customersPage.rowNum;
20+
expect(rowCountAfterCreation, 'Number of rows hasn\'t changed after creating new customer').equal(rowCountBeforeCreation + 1);
21+
});
22+
it('should add new customer with all fields', function () {
23+
customersPage.newCustomerBtn.click();
24+
browser.pause(6000);
25+
const customerObject = {
26+
createdBy: 'John Smith',
27+
customerNo: '1',
28+
contactPerson: 'Samantha Black',
29+
companyName: 'BMW',
30+
companyAddress: 'ABC Street 22',
31+
zipCode: '021551',
32+
cityName: 'Odense',
33+
phone: '123124',
34+
35+
};
36+
const rowCountBeforeCreation = customersPage.rowNum;
37+
customersModalPage.createCustomer(customerObject);
38+
const rowCountAfterCreation = customersPage.rowNum;
39+
browser.pause(2000);
40+
expect(rowCountAfterCreation, 'Number of rows hasn\'t changed after creating new user').equal(rowCountBeforeCreation + 1);
41+
const lastCustomer: CustomersRowObject = customersPage.getCustomer(customersPage.rowNum);
42+
expect(lastCustomer.createdBy, 'Created by of created customer is incorrect').equal(customerObject.createdBy);
43+
expect(lastCustomer.customerNo, 'Customer number of created customer is incorrect').equal(customerObject.customerNo);
44+
expect(lastCustomer.contactPerson, 'Contact person of created customer is incorrect').equal(customerObject.contactPerson);
45+
expect(lastCustomer.companyName, 'Company name of created customer is incorrect').equal(customerObject.companyName);
46+
expect(lastCustomer.companyAddress, 'Company address of created customer is incorrect').equal(customerObject.companyAddress);
47+
expect(lastCustomer.zipCode, 'Zip code of created customer is incorrect').equal(customerObject.zipCode);
48+
expect(lastCustomer.cityName, 'City name of created customer is incorrect').equal(customerObject.cityName);
49+
expect(lastCustomer.phone, 'Phone of created customer is incorrect').equal(customerObject.phone);
50+
expect(lastCustomer.email, 'Email of created customer is incorrect').equal(customerObject.email);
51+
browser.pause(6000);
52+
});
53+
it('should not add new customer if cancel is clicked', function () {
54+
customersPage.newCustomerBtn.click();
55+
browser.pause(6000);
56+
customersModalPage.cancelCreateBtn.click();
57+
});
58+
});
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import loginPage from '../../Page objects/Login.page';
2+
import {generateRandmString} from '../../Helpers/helper-functions';
3+
import customersPage, {CustomersRowObject} from '../../Page objects/Customers/Customers.page';
4+
import customersModalPage from '../../Page objects/Customers/CustomersModal.page';
5+
6+
const expect = require('chai').expect;
7+
8+
describe('Customer modal', function () {
9+
before(function () {
10+
loginPage.open('/');
11+
loginPage.login();
12+
customersPage.goToCustomersPage();
13+
});
14+
it('should delete customer', function () {
15+
const rowBeforeDeletion = customersPage.rowNum;
16+
const lastCustomer: CustomersRowObject = customersPage.getCustomer(rowBeforeDeletion);
17+
lastCustomer.deleteBtn.waitForVisible(3000);
18+
lastCustomer.deleteBtn.click();
19+
browser.pause(3000);
20+
customersModalPage.deleteCustomer();
21+
const rowAfterDeletion = customersPage.rowNum;
22+
expect(rowBeforeDeletion, 'Number of rows hasn\'t changed after deleting customer').equal(rowAfterDeletion + 1);
23+
});
24+
it('should not delete customer if cancel was clicked', function () {
25+
const lastCustomer: CustomersRowObject = customersPage.getCustomer(customersPage.rowNum);
26+
lastCustomer.deleteBtn.waitForVisible(3000);
27+
lastCustomer.deleteBtn.leftClick();
28+
browser.pause(3000);
29+
customersModalPage.cancelDeleteBtn.leftClick();
30+
});
31+
});

0 commit comments

Comments
 (0)