Skip to content

Commit 325265f

Browse files
committed
User Menu test
1 parent 3bc516d commit 325265f

File tree

2 files changed

+183
-17
lines changed

2 files changed

+183
-17
lines changed

tests/e2e-frontend/tests/navigationBar/navigationBar.spec.js

Lines changed: 101 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,110 @@ import { LoginPage } from '../fixtures/loginPage';
77
import products from '../products.json';
88
import users from '../users.json';
99

10-
const userMenuButtonsPerRole = {
11-
"USER": {
12-
"My Account": true,
13-
"PO Center": false,
14-
"Admin Center": false,
10+
const expectedElements = {
11+
"osparc": {
12+
"poweredByOsparc": false,
13+
"studies": {
14+
"visible": true,
15+
"label": "STUDIES",
16+
},
17+
"templates": {
18+
"visible": true,
19+
"label": "TEMPLATES",
20+
},
21+
"services": {
22+
"visible": true,
23+
"label": "SERVICES",
24+
},
25+
"data": {
26+
"visible": true,
27+
"label": "DATA",
28+
},
1529
},
16-
"TESTER": {
17-
"My Account": true,
18-
"PO Center": false,
19-
"Admin Center": false,
30+
"s4l": {
31+
"poweredByOsparc": true,
32+
"studies": {
33+
"visible": true,
34+
"label": "PROJECTS",
35+
},
36+
"templates": {
37+
"visible": true,
38+
"label": "TUTORIALS",
39+
},
40+
"services": {
41+
"visible": true,
42+
"label": "SERVICES",
43+
},
44+
"data": {
45+
"visible": false,
46+
},
2047
},
21-
"PRODUCT_OWNER": {
22-
"My Account": true,
23-
"PO Center": true,
24-
"Admin Center": false,
48+
"s4lacad": {
49+
"poweredByOsparc": true,
50+
"studies": {
51+
"visible": true,
52+
"label": "PROJECTS",
53+
},
54+
"templates": {
55+
"visible": true,
56+
"label": "TUTORIALS",
57+
},
58+
"services": {
59+
"visible": true,
60+
"label": "SERVICES",
61+
},
62+
"data": {
63+
"visible": false,
64+
},
2565
},
26-
"ADMIN": {
27-
"My Account": true,
28-
"PO Center": true,
29-
"Admin Center": true,
66+
"s4llite": {
67+
"poweredByOsparc": true,
68+
"studies": {
69+
"visible": true,
70+
"label": "PROJECTS",
71+
},
72+
"templates": {
73+
"visible": true,
74+
"label": "TUTORIALS",
75+
},
76+
"services": {
77+
"visible": false,
78+
},
79+
"data": {
80+
"visible": false,
81+
},
82+
},
83+
"tis": {
84+
"poweredByOsparc": true,
85+
"studies": {
86+
"visible": true,
87+
"label": "STUDIES",
88+
},
89+
"templates": {
90+
"visible": false,
91+
},
92+
"services": {
93+
"visible": false,
94+
},
95+
"data": {
96+
"visible": false,
97+
},
98+
},
99+
"tiplite": {
100+
"poweredByOsparc": true,
101+
"studies": {
102+
"visible": true,
103+
"label": "STUDIES",
104+
},
105+
"templates": {
106+
"visible": false,
107+
},
108+
"services": {
109+
"visible": false,
110+
},
111+
"data": {
112+
"visible": false,
113+
},
30114
},
31115
};
32116

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/* eslint-disable no-undef */
2+
3+
const { test, expect } = require('@playwright/test');
4+
5+
import { LoginPage } from '../fixtures/loginPage';
6+
7+
import products from '../products.json';
8+
import users from '../users.json';
9+
10+
const userMenuButtonsPerRole = {
11+
"USER": {
12+
"My Account": true,
13+
"PO Center": false,
14+
"Admin Center": false,
15+
},
16+
"TESTER": {
17+
"My Account": true,
18+
"PO Center": false,
19+
"Admin Center": false,
20+
},
21+
"PRODUCT_OWNER": {
22+
"My Account": true,
23+
"PO Center": true,
24+
"Admin Center": false,
25+
},
26+
"ADMIN": {
27+
"My Account": true,
28+
"PO Center": true,
29+
"Admin Center": true,
30+
},
31+
};
32+
33+
for (const product in products) {
34+
if (product in users) {
35+
const productUrl = products[product];
36+
const productUsers = users[product];
37+
for (const user of productUsers) {
38+
const role = user.role;
39+
40+
test.describe.serial(`Navigation Bar: ${product}`, () => {
41+
let page = null;
42+
let loginPageFixture = null;
43+
44+
test.beforeAll(async ({ browser }) => {
45+
page = await browser.newPage();
46+
47+
loginPageFixture = new LoginPage(page, productUrl);
48+
await loginPageFixture.goto();
49+
50+
await loginPageFixture.login(user.email, user.password);
51+
52+
const response = await page.waitForResponse('**/me');
53+
const meData = await response.json();
54+
expect(meData["data"]["role"]).toBe(role);
55+
});
56+
57+
test.afterAll(async ({ browser }) => {
58+
await loginPageFixture.logout();
59+
await page.close();
60+
await browser.close();
61+
});
62+
63+
test(`Options per Role in User Menu ${role}`, async () => {
64+
expect(userMenuButtonsPerRole[role]).toBeDefined();
65+
66+
// open user menu
67+
await page.getByTestId("userMenuBtn").click();
68+
69+
const buttons = userMenuButtonsPerRole[role];
70+
for (const buttonText in buttons) {
71+
const expected = buttons[buttonText];
72+
const isVisible = await page.getByText(buttonText).isVisible();
73+
expect(isVisible).toEqual(expected);
74+
}
75+
76+
// close user menu
77+
await page.getByTestId("userMenuBtn").click();
78+
});
79+
});
80+
}
81+
}
82+
}

0 commit comments

Comments
 (0)