Skip to content

Commit c64602c

Browse files
committed
feat: port items-planning test specs to Playwright
1 parent aca9533 commit c64602c

9 files changed

Lines changed: 996 additions & 0 deletions
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { test, expect } from '@playwright/test';
2+
import { LoginPage } from '../../../Page objects/Login.page';
3+
import { MyEformsPage } from '../../../Page objects/MyEforms.page';
4+
import { PluginPage } from '../../../Page objects/Plugin.page';
5+
6+
let page;
7+
8+
test.describe('Application settings page - site header section', () => {
9+
test.beforeAll(async ({ browser }) => {
10+
page = await browser.newPage();
11+
});
12+
13+
test.afterAll(async () => {
14+
await page.close();
15+
});
16+
17+
test('should go to plugin settings page', async () => {
18+
const loginPage = new LoginPage(page);
19+
const myEformsPage = new MyEformsPage(page);
20+
const pluginPage = new PluginPage(page);
21+
22+
await loginPage.open('/auth');
23+
await loginPage.login();
24+
await myEformsPage.Navbar.goToPluginsPage();
25+
26+
const plugin = await pluginPage.getFirstPluginRowObj();
27+
expect(plugin.id).toBe(1);
28+
expect(plugin.name.trim()).toBe('Microting Items Planning Plugin');
29+
expect(plugin.status.trim()).toBe('toggle_off');
30+
});
31+
32+
test('should activate the plugin', async () => {
33+
test.setTimeout(240000);
34+
const pluginPage = new PluginPage(page);
35+
36+
const plugin = await pluginPage.getFirstPluginRowObj();
37+
await plugin.enableOrDisablePlugin();
38+
39+
const pluginAfter = await pluginPage.getFirstPluginRowObj();
40+
expect(pluginAfter.id).toBe(1);
41+
expect(pluginAfter.name.trim()).toBe('Microting Items Planning Plugin');
42+
expect(pluginAfter.status.trim()).toBe('toggle_on');
43+
});
44+
});
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
import { test, expect } from '@playwright/test';
2+
import { LoginPage } from '../../../Page objects/Login.page';
3+
import { MyEformsPage } from '../../../Page objects/MyEforms.page';
4+
import { FoldersPage } from '../../../Page objects/Folders.page';
5+
import { generateRandmString, getRandomInt } from '../../../helper-functions';
6+
import {
7+
ItemsPlanningPlanningPage,
8+
PlanningCreateUpdate,
9+
PlanningRowObject,
10+
} from '../ItemsPlanningPlanningPage';
11+
import { ItemsPlanningModalPage } from '../ItemsPlanningModal.page';
12+
import { format, set } from 'date-fns';
13+
14+
let page;
15+
16+
const planningData: PlanningCreateUpdate = {
17+
name: [generateRandmString(), generateRandmString(), generateRandmString()],
18+
eFormName: generateRandmString(),
19+
folderName: generateRandmString(),
20+
description: generateRandmString(),
21+
repeatEvery: '1',
22+
repeatType: 'Dag',
23+
startFrom: { year: 2020, day: 7, month: 9 },
24+
repeatUntil: { year: 2020, day: 6, month: 10 },
25+
type: generateRandmString(),
26+
locationCode: '12345',
27+
buildYear: '10',
28+
number: '10',
29+
daysBeforeRedeploymentPushMessage: getRandomInt(1, 27),
30+
pushMessageEnabled: true,
31+
};
32+
33+
test.describe('Items planning - Add', () => {
34+
test.beforeAll(async ({ browser }) => {
35+
page = await browser.newPage();
36+
const loginPage = new LoginPage(page);
37+
const myEformsPage = new MyEformsPage(page);
38+
const foldersPage = new FoldersPage(page);
39+
const itemsPlanningPlanningPage = new ItemsPlanningPlanningPage(page);
40+
41+
await loginPage.open('/auth');
42+
await loginPage.login();
43+
if ((await myEformsPage.rowNum()) <= 0) {
44+
await myEformsPage.createNewEform(planningData.eFormName);
45+
} else {
46+
planningData.eFormName = (
47+
await myEformsPage.getFirstMyEformsRowObj()
48+
).eFormName;
49+
}
50+
await myEformsPage.Navbar.goToFolderPage();
51+
if ((await foldersPage.rowNum()) <= 0) {
52+
await foldersPage.createNewFolder(planningData.folderName, 'Description');
53+
} else {
54+
planningData.folderName = (await foldersPage.getFolder(1)).name;
55+
}
56+
await itemsPlanningPlanningPage.goToPlanningsPage();
57+
});
58+
59+
test.afterAll(async () => {
60+
const myEformsPage = new MyEformsPage(page);
61+
const foldersPage = new FoldersPage(page);
62+
const itemsPlanningPlanningPage = new ItemsPlanningPlanningPage(page);
63+
64+
await itemsPlanningPlanningPage.clearTable();
65+
66+
await myEformsPage.Navbar.goToFolderPage();
67+
await (await foldersPage.getFolderByName(planningData.folderName)).delete();
68+
69+
await myEformsPage.Navbar.goToMyEForms();
70+
await myEformsPage.clearEFormTable();
71+
72+
await page.close();
73+
});
74+
75+
test('should create planning with all fields', async () => {
76+
const itemsPlanningPlanningPage = new ItemsPlanningPlanningPage(page);
77+
const itemsPlanningModalPage = new ItemsPlanningModalPage(page);
78+
79+
const rowNumBeforeCreatePlanning = await itemsPlanningPlanningPage.rowNum();
80+
await itemsPlanningModalPage.createPlanning(planningData);
81+
await page.waitForTimeout(500);
82+
expect(rowNumBeforeCreatePlanning + 1).toBe(
83+
await itemsPlanningPlanningPage.rowNum()
84+
);
85+
});
86+
87+
test('check all fields planning', async () => {
88+
const itemsPlanningPlanningPage = new ItemsPlanningPlanningPage(page);
89+
const itemsPlanningModalPage = new ItemsPlanningModalPage(page);
90+
91+
const planningRowObject = await itemsPlanningPlanningPage.getPlaningByName(
92+
planningData.name[0]
93+
);
94+
expect(planningRowObject.name).toBe(planningData.name[0]);
95+
expect(planningRowObject.eFormName).toBe(planningData.eFormName);
96+
expect(planningRowObject.description).toBe(planningData.description);
97+
expect(planningRowObject.repeatEvery.toString()).toBe(planningData.repeatEvery);
98+
expect(planningRowObject.repeatType).toBe(planningData.repeatType);
99+
100+
await planningRowObject.openEdit();
101+
for (let i = 0; i < planningData.name.length; i++) {
102+
expect(
103+
await itemsPlanningModalPage.editPlanningItemName(i).inputValue()
104+
).toBe(planningData.name[i]);
105+
}
106+
expect(
107+
await itemsPlanningModalPage.editPlanningDescription.inputValue()
108+
).toBe(planningData.description);
109+
expect(
110+
(await itemsPlanningModalPage.editPlanningSelector.locator('.ng-value').textContent() || '').trim()
111+
).toBe(planningData.eFormName);
112+
expect(
113+
await itemsPlanningModalPage.editRepeatEvery.inputValue()
114+
).toBe(planningData.repeatEvery);
115+
expect(
116+
(await itemsPlanningModalPage.editRepeatType.locator('.ng-value-label').textContent() || '').trim()
117+
).toBe(planningData.repeatType);
118+
expect(
119+
await itemsPlanningModalPage.editItemType.inputValue()
120+
).toBe(planningData.type);
121+
expect(
122+
await itemsPlanningModalPage.editItemBuildYear.inputValue()
123+
).toBe(planningData.buildYear);
124+
expect(
125+
await itemsPlanningModalPage.editFolderName.locator('#editFolderSelectorInput').inputValue()
126+
).toBe(planningData.folderName);
127+
expect(
128+
await itemsPlanningModalPage.editItemLocationCode.inputValue()
129+
).toBe(planningData.locationCode);
130+
131+
const startDateForExpect = format(set(new Date(), {
132+
year: planningData.startFrom.year,
133+
month: planningData.startFrom.month - 1,
134+
date: planningData.startFrom.day,
135+
}), 'dd.MM.yyyy');
136+
expect(
137+
await itemsPlanningModalPage.editStartFrom.inputValue()
138+
).toBe(startDateForExpect);
139+
140+
expect(
141+
(await itemsPlanningModalPage.pushMessageEnabledEdit.locator('.ng-value-label').textContent() || '').trim()
142+
).toBe(planningData.pushMessageEnabled ? 'Aktiveret' : 'Deaktiveret');
143+
expect(
144+
+(await itemsPlanningModalPage.editDaysBeforeRedeploymentPushMessage.locator('.ng-value-label').textContent() || '0')
145+
).toBe(planningData.daysBeforeRedeploymentPushMessage);
146+
147+
await planningRowObject.closeEdit(true);
148+
});
149+
});
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
import { test, expect } from '@playwright/test';
2+
import { LoginPage } from '../../../Page objects/Login.page';
3+
import { MyEformsPage } from '../../../Page objects/MyEforms.page';
4+
import { FoldersPage } from '../../../Page objects/Folders.page';
5+
import { generateRandmString } from '../../../helper-functions';
6+
import {
7+
ItemsPlanningPlanningPage,
8+
PlanningCreateUpdate,
9+
} from '../ItemsPlanningPlanningPage';
10+
import { ItemsPlanningModalPage } from '../ItemsPlanningModal.page';
11+
12+
let page;
13+
14+
const planningData: PlanningCreateUpdate = {
15+
name: [generateRandmString(), generateRandmString(), generateRandmString()],
16+
eFormName: generateRandmString(),
17+
description: 'Description',
18+
repeatEvery: '1',
19+
repeatType: 'Dag',
20+
folderName: generateRandmString(),
21+
startFrom: { year: 2020, month: 7, day: 9 },
22+
repeatUntil: { year: 2021, month: 6, day: 10 },
23+
};
24+
25+
test.describe('Items planning actions - Delete', () => {
26+
test.beforeAll(async ({ browser }) => {
27+
page = await browser.newPage();
28+
const loginPage = new LoginPage(page);
29+
const myEformsPage = new MyEformsPage(page);
30+
const foldersPage = new FoldersPage(page);
31+
const itemsPlanningPlanningPage = new ItemsPlanningPlanningPage(page);
32+
33+
await loginPage.open('/auth');
34+
await loginPage.login();
35+
if ((await myEformsPage.rowNum()) <= 0) {
36+
await myEformsPage.createNewEform(planningData.eFormName);
37+
} else {
38+
planningData.eFormName = (
39+
await myEformsPage.getFirstMyEformsRowObj()
40+
).eFormName;
41+
}
42+
await myEformsPage.Navbar.goToFolderPage();
43+
if ((await foldersPage.rowNum()) <= 0) {
44+
await foldersPage.createNewFolder(planningData.folderName, 'Description');
45+
} else {
46+
planningData.folderName = (await foldersPage.getFolder(1)).name;
47+
}
48+
await itemsPlanningPlanningPage.goToPlanningsPage();
49+
});
50+
51+
test.afterAll(async () => {
52+
await page.close();
53+
});
54+
55+
test('should create planning', async () => {
56+
const itemsPlanningModalPage = new ItemsPlanningModalPage(page);
57+
await itemsPlanningModalPage.createPlanning(planningData);
58+
});
59+
60+
test('should not delete existing planning', async () => {
61+
const itemsPlanningPlanningPage = new ItemsPlanningPlanningPage(page);
62+
const numRowBeforeDelete = await itemsPlanningPlanningPage.rowNum();
63+
const planningRowObject = await itemsPlanningPlanningPage.getPlaningByName(
64+
planningData.name[0]
65+
);
66+
await planningRowObject.delete(true);
67+
expect(numRowBeforeDelete).toBe(
68+
await itemsPlanningPlanningPage.rowNum()
69+
);
70+
});
71+
72+
test('should delete existing planning', async () => {
73+
const itemsPlanningPlanningPage = new ItemsPlanningPlanningPage(page);
74+
const numRowBeforeDelete = await itemsPlanningPlanningPage.rowNum();
75+
const planningRowObject = await itemsPlanningPlanningPage.getPlaningByName(
76+
planningData.name[0]
77+
);
78+
await planningRowObject.delete();
79+
expect(numRowBeforeDelete - 1).toBe(
80+
await itemsPlanningPlanningPage.rowNum()
81+
);
82+
});
83+
});

0 commit comments

Comments
 (0)