Skip to content

Commit b4f9937

Browse files
Added automation for location component and tests code refactor SDK-A (#328)
Co-authored-by: tumms2021389 <[email protected]>
1 parent b597b81 commit b4f9937

34 files changed

+362
-783
lines changed

projects/angular-test-app/tests/common.js

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
1+
const { expect } = require('@playwright/test');
12
const { config } = require('./config');
23

4+
const createCase = async (caseTypeName, page) => {
5+
const createCase = page.locator('mat-list-item[id="create-case-button"]');
6+
await createCase.click();
7+
const caseType = page.locator(`mat-list-item[id="case-list-item"] > span:has-text("${caseTypeName}")`);
8+
await caseType.click();
9+
};
10+
311
const launchPortal = async ({ page }) => {
412
await page.setViewportSize({ width: 1720, height: 1080 });
513
await page.goto(`${config.baseUrl}`, { waitUntil: 'networkidle' });
@@ -45,12 +53,38 @@ const getFutureDate = () => {
4553
return getFormattedDate(futureDate);
4654
};
4755

56+
const selectCategory = async (category, page, exact = false) => {
57+
const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]');
58+
await selectedCategory.click();
59+
await page.getByRole('option', { name: category, exact }).click();
60+
};
61+
62+
const selectSubCategory = async (subCategory, page, exact = false) => {
63+
const selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
64+
await selectedSubCategory.click();
65+
await page.getByRole('option', { name: subCategory, exact }).click();
66+
};
67+
68+
const verifyHomePage = async page => {
69+
/** Testing announcement banner presence */
70+
const announcementBanner = page.locator('h2:has-text("Announcements")');
71+
await expect(announcementBanner).toBeVisible();
72+
73+
/** Testing worklist presence */
74+
const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")');
75+
await expect(worklist).toBeVisible();
76+
};
77+
4878
module.exports = {
79+
createCase,
4980
launchPortal,
5081
launchEmbedded,
5182
launchSelfServicePortal,
5283
login,
5384
getAttributes,
5485
getFutureDate,
55-
getFormattedDate
86+
getFormattedDate,
87+
selectCategory,
88+
selectSubCategory,
89+
verifyHomePage
5690
};

projects/angular-test-app/tests/e2e/DigV2/ComplexFields/CaseReference.spec.js

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,10 @@ test.describe('E2E test', () => {
1111
test('should login, create case and run different test cases for Case Reference', async ({ page }) => {
1212
await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page);
1313

14-
/** Testing announcement banner presence */
15-
const announcementBanner = page.locator('h2:has-text("Announcements")');
16-
await expect(announcementBanner).toBeVisible();
17-
18-
/** Testing worklist presence */
19-
const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")');
20-
await expect(worklist).toBeVisible();
21-
22-
/** Hovering over navbar */
23-
const navbar = page.locator('app-navbar');
24-
await navbar.locator('div[class="psdk-appshell-nav"]').hover();
14+
await common.verifyHomePage(page);
2515

2616
// /** Creating a Query case-type which will be referred by Complex Fields case type */
27-
let createCase = page.locator('mat-list-item[id="create-case-button"]');
28-
await createCase.click();
29-
30-
let queryCase = await page.locator('mat-list-item[id="case-list-item"] > span:has-text("Query")');
31-
await queryCase.click();
17+
await common.createCase('Query', page);
3218

3319
let modal = page.locator('div[id="dialog"]');
3420
await modal.waitFor({ state: 'visible' });
@@ -46,12 +32,7 @@ test.describe('E2E test', () => {
4632
caseID.push(await page.locator('div[id="caseId"]').textContent());
4733

4834
/** Creating another Query case-type which will be used for ListOfRecords mode */
49-
await navbar.locator('div[class="psdk-appshell-nav"]').hover();
50-
createCase = page.locator('mat-list-item[id="create-case-button"]');
51-
await createCase.click();
52-
53-
queryCase = await page.locator('mat-list-item[id="case-list-item"] > span:has-text("Query")');
54-
await queryCase.click();
35+
await common.createCase('Query', page);
5536

5637
modal = page.locator('div[id="dialog"]');
5738
await modal.waitFor({ state: 'visible' });
@@ -64,18 +45,10 @@ test.describe('E2E test', () => {
6445

6546
/** Creating a Complex Fields case-type */
6647
/** opening all case types */
67-
await navbar.locator('div[class="psdk-appshell-nav"]').hover();
68-
createCase = page.locator('mat-list-item[id="create-case-button"]');
69-
await createCase.click();
70-
71-
/** Creating a Complex Fields case-type */
72-
const complexFieldsCaseBtn = await page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")');
73-
await complexFieldsCaseBtn.click();
48+
await common.createCase('Complex Fields', page);
7449

7550
/** Selecting CaseReference from the Category dropdown */
76-
const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]');
77-
await selectedCategory.click();
78-
await page.locator('mat-option > span:has-text("CaseReference")').click();
51+
await common.selectCategory('CaseReference', page);
7952

8053
await page.locator('button:has-text("submit")').click();
8154

projects/angular-test-app/tests/e2e/DigV2/ComplexFields/CaseView.spec.js

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,9 @@ test.describe('E2E test', () => {
1717
test('should login, create case and run different test cases for Case View', async ({ page }) => {
1818
await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page);
1919

20-
/** Testing announcement banner presence */
21-
const announcementBanner = page.locator('h2:has-text("Announcements")');
22-
await expect(announcementBanner).toBeVisible();
23-
24-
/** Testing worklist presence */
25-
const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")');
26-
await expect(worklist).toBeVisible();
27-
28-
/** Click on the Create Case button */
29-
const createCase = page.locator('mat-list-item[id="create-case-button"]');
30-
await createCase.click();
20+
await common.verifyHomePage(page);
3121

32-
/** Creating a Complex Fields case-type */
33-
const complexFieldsCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")');
34-
await complexFieldsCase.click();
22+
await common.createCase('Complex Fields', page);
3523

3624
/** Wait until newly created case loads */
3725
await expect(page.locator('div[id="case-view"]')).toBeVisible();
@@ -57,20 +45,10 @@ test.describe('E2E test', () => {
5745
await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page);
5846

5947
/** Testing announcement banner presence */
60-
const announcementBanner = page.locator('h2:has-text("Announcements")');
61-
await expect(announcementBanner).toBeVisible();
62-
63-
/** Testing worklist presence */
64-
const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")');
65-
await expect(worklist).toBeVisible();
48+
await common.verifyHomePage(page);
6649

6750
/** Click on the Create Case button */
68-
const createCase = page.locator('mat-list-item[id="create-case-button"]');
69-
await createCase.click();
70-
71-
/** Creating a Complex Fields case-type */
72-
const complexFieldsCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")');
73-
await complexFieldsCase.click();
51+
await common.createCase('Complex Fields', page);
7452

7553
/** Wait until newly created case loads */
7654
await expect(page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]')).toBeVisible();

projects/angular-test-app/tests/e2e/DigV2/ComplexFields/DataReference.spec.js

Lines changed: 12 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,20 @@ test.describe('E2E test', () => {
1212
test('should login, create case and run different test cases for Data Reference', async ({ page }) => {
1313
await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page);
1414

15-
/** Testing announcement banner presence */
16-
const announcementBanner = page.locator('h2:has-text("Announcements")');
17-
await expect(announcementBanner).toBeVisible();
18-
19-
/** Testing worklist presence */
20-
const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")');
21-
await expect(worklist).toBeVisible();
15+
await common.verifyHomePage(page);
2216

2317
/** Click on the Create Case button */
24-
const createCase = page.locator('mat-list-item[id="create-case-button"]');
25-
await createCase.click();
26-
27-
/** Creating a Complex Fields case-type */
28-
const complexFieldsCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")');
29-
await complexFieldsCase.click();
18+
await common.createCase('Complex Fields', page);
3019

3120
/** Selecting Data Reference from the Category dropdown */
32-
const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]');
33-
await selectedCategory.click();
34-
await page.locator('mat-option >> span').getByText('DataReference', { exact: true }).click();
21+
await common.selectCategory('DataReference', page, true);
3522

3623
await page.locator('button:has-text("submit")').click();
3724

3825
/** Display subcategory tests */
3926

4027
/** Autocomplete display type test */
41-
let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
42-
await selectedSubCategory.click();
43-
await page.getByRole('option', { name: 'Display' }).click();
28+
await common.selectSubCategory('Display', page);
4429

4530
let selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');
4631
await selectedTestName.click();
@@ -65,9 +50,7 @@ test.describe('E2E test', () => {
6550
await page.locator('button:has-text("Previous")').click();
6651

6752
/** Dropdown display type tests */
68-
selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
69-
await selectedSubCategory.click();
70-
await page.getByRole('option', { name: 'Display' }).click();
53+
await common.selectSubCategory('Display', page);
7154

7255
selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');
7356
await selectedTestName.click();
@@ -94,9 +77,7 @@ test.describe('E2E test', () => {
9477
await page.locator('button:has-text("Previous")').click();
9578

9679
/** Table display type tests */
97-
selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
98-
await selectedSubCategory.click();
99-
await page.getByRole('option', { name: 'Display' }).click();
80+
await common.selectSubCategory('Display', page);
10081

10182
selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');
10283
await selectedTestName.click();
@@ -124,9 +105,7 @@ test.describe('E2E test', () => {
124105
/** Options subcategory tests */
125106

126107
/** SingleRecord options type test */
127-
selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
128-
await selectedSubCategory.click();
129-
await page.getByRole('option', { name: 'Options' }).click();
108+
await common.selectSubCategory('Options', page);
130109

131110
selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');
132111
await selectedTestName.click();
@@ -153,9 +132,7 @@ test.describe('E2E test', () => {
153132
await page.locator('button:has-text("Previous")').click();
154133

155134
/** ListOfRecords options type test */
156-
selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
157-
await selectedSubCategory.click();
158-
await page.getByRole('option', { name: 'Options' }).click();
135+
await common.selectSubCategory('Options', page);
159136

160137
selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');
161138
await selectedTestName.click();
@@ -182,9 +159,7 @@ test.describe('E2E test', () => {
182159
/** Mode subcategory tests */
183160

184161
/** SingleSelect mode type test */
185-
selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
186-
await selectedSubCategory.click();
187-
await page.getByRole('option', { name: 'Mode' }).click();
162+
await common.selectSubCategory('Mode', page);
188163

189164
selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');
190165
await selectedTestName.click();
@@ -212,9 +187,7 @@ test.describe('E2E test', () => {
212187
await page.locator('button:has-text("Previous")').click();
213188

214189
/** MultiSelect mode type test */
215-
selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
216-
await selectedSubCategory.click();
217-
await page.getByRole('option', { name: 'Mode' }).click();
190+
await common.selectSubCategory('Mode', page);
218191

219192
selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');
220193
await selectedTestName.click();
@@ -273,9 +246,7 @@ test.describe('E2E test', () => {
273246
await page.locator('button:has-text("Previous")').click();
274247

275248
/** Readonly mode type test */
276-
selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
277-
await selectedSubCategory.click();
278-
await page.getByRole('option', { name: 'Mode' }).click();
249+
await common.selectSubCategory('Mode', page);
279250

280251
selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');
281252
await selectedTestName.click();
@@ -300,9 +271,7 @@ test.describe('E2E test', () => {
300271
await page.locator('button:has-text("Previous")').click();
301272

302273
/** Testing Sorting(both ascending and descending) */
303-
selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
304-
await selectedSubCategory.click();
305-
await page.getByRole('option', { name: 'Options' }).click();
274+
await common.selectSubCategory('Options', page);
306275

307276
selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');
308277
await selectedTestName.click();

projects/angular-test-app/tests/e2e/DigV2/ComplexFields/EmbeddedData.spec.js

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,12 @@ test.describe('E2E test', () => {
1111
test('should login, create case and run different test cases for Embedded Data', async ({ page }) => {
1212
await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page);
1313

14-
/** Testing announcement banner presence */
15-
const announcementBanner = page.locator('h2:has-text("Announcements")');
16-
await expect(announcementBanner).toBeVisible();
14+
await common.verifyHomePage(page);
1715

18-
/** Testing worklist presence */
19-
const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")');
20-
await expect(worklist).toBeVisible();
21-
22-
/** Hovering over navbar */
23-
const navbar = page.locator('app-navbar');
24-
await navbar.locator('div[class="psdk-appshell-nav"]').hover();
25-
26-
/** opening all case types */
27-
const createCase = page.locator('mat-list-item[id="create-case-button"]');
28-
await createCase.click();
29-
30-
/** Creating a Complex Fields case-type */
31-
const complexFieldsCaseBtn = await page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")');
32-
await complexFieldsCaseBtn.click();
16+
await common.createCase('Complex Fields', page);
3317

3418
/** Selecting Embedded Data from the Category dropdown */
35-
const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]');
36-
await selectedCategory.click();
37-
await page.locator('mat-option > span:has-text("EmbeddedData")').click();
19+
await common.selectCategory('EmbeddedData', page);
3820

3921
await page.locator('button:has-text("submit")').click();
4022

@@ -44,9 +26,7 @@ test.describe('E2E test', () => {
4426
await page.locator('mat-option > span:has-text("ListOfRecords")').click();
4527

4628
/** Table subcategory tests */
47-
let selectedSubCategory = await page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
48-
await selectedSubCategory.click();
49-
await page.locator('mat-option > span:has-text("Table")').click();
29+
await common.selectSubCategory('Table', page);
5030

5131
/** Editable mode type tests */
5232
let selectedEditMode = await page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');
@@ -210,9 +190,7 @@ test.describe('E2E test', () => {
210190

211191
/** FieldGroup subcategory tests */
212192

213-
selectedSubCategory = await page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
214-
await selectedSubCategory.click();
215-
await page.locator('mat-option > span:has-text("FieldGroup")').click();
193+
await common.selectSubCategory('FieldGroup', page);
216194

217195
/** Editable mode type tests */
218196
selectedEditMode = await page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');
@@ -289,9 +267,7 @@ test.describe('E2E test', () => {
289267
await selectedOption.click();
290268
await page.locator('mat-option > span:has-text("ListOfRecords")').click();
291269

292-
selectedSubCategory = await page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]');
293-
await selectedSubCategory.click();
294-
await page.locator('mat-option > span:has-text("Table")').click();
270+
await common.selectSubCategory('Table', page);
295271

296272
/** Editable mode type tests */
297273
selectedEditMode = await page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]');

projects/angular-test-app/tests/e2e/DigV2/ComplexFields/ManyToMany.spec.js

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,10 @@ test.describe('E2E test', () => {
1212
test('should login, create case and run different test cases for Many to Many', async ({ page }) => {
1313
await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page);
1414

15-
/** Testing announcement banner presence */
16-
const announcementBanner = page.locator('h2:has-text("Announcements")');
17-
await expect(announcementBanner).toBeVisible();
18-
19-
/** Testing worklist presence */
20-
const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")');
21-
await expect(worklist).toBeVisible();
15+
await common.verifyHomePage(page);
2216

2317
/** Creating a Many to Many case-type */
24-
const createCase = page.locator('mat-list-item[id="create-case-button"]');
25-
await createCase.click();
26-
27-
const manyToManyCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Many to Many")');
28-
await manyToManyCase.click();
18+
await common.createCase('Many to Many', page);
2919

3020
const ID = '1234';
3121
const orderID = await page.locator('input[data-test-id="8f2a855dda1f657670e39f50eab1c10e"]');

0 commit comments

Comments
 (0)