Skip to content

Commit 9d2b81a

Browse files
committed
User Menu buttons per product
1 parent 060cacd commit 9d2b81a

File tree

2 files changed

+100
-9
lines changed
  • services/static-webserver/client/source/class/osparc/navigation
  • tests/e2e-frontend/tests/userMenu

2 files changed

+100
-9
lines changed

services/static-webserver/client/source/class/osparc/navigation/UserMenu.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ qx.Class.define("osparc.navigation.UserMenu", {
3737
break;
3838
case "theme-switcher":
3939
control = new osparc.ui.switch.ThemeSwitcherMenuBtn();
40+
osparc.utils.Utils.setIdToWidget(control, "userMenuThemeSwitcherBtn");
4041
this.add(control);
4142
break;
4243
case "log-in":
@@ -46,6 +47,7 @@ qx.Class.define("osparc.navigation.UserMenu", {
4647
break;
4748
case "user-center":
4849
control = new qx.ui.menu.Button(this.tr("My Account"));
50+
osparc.utils.Utils.setIdToWidget(control, "userMenuMyAccountBtn");
4951
control.addListener("execute", () => osparc.desktop.account.MyAccountWindow.openWindow(), this);
5052
this.add(control);
5153
break;
@@ -80,6 +82,7 @@ qx.Class.define("osparc.navigation.UserMenu", {
8082
control = new qx.ui.menu.Button(this.tr("Organizations")).set({
8183
visibility: osparc.data.Permissions.getInstance().canDo("user.organizations.create") ? "visible" :"excluded"
8284
});
85+
osparc.utils.Utils.setIdToWidget(control, "userMenuOrganizationsBtn");
8386
control.addListener("execute", () => osparc.desktop.organizations.OrganizationsWindow.openWindow(), this);
8487
this.add(control);
8588
break;
@@ -97,12 +100,13 @@ qx.Class.define("osparc.navigation.UserMenu", {
97100
break;
98101
case "about":
99102
control = new qx.ui.menu.Button(this.tr("About oSPARC"));
100-
control.addListener("execute", () => osparc.About.getInstance().open());
101103
osparc.utils.Utils.setIdToWidget(control, "userMenuAboutBtn");
104+
control.addListener("execute", () => osparc.About.getInstance().open());
102105
this.add(control);
103106
break;
104107
case "about-product": {
105108
control = new qx.ui.menu.Button(this.tr("About Product"));
109+
osparc.utils.Utils.setIdToWidget(control, "userMenuAboutProductBtn");
106110
const displayName = osparc.store.StaticInfo.getInstance().getDisplayName();
107111
control.getChildControl("label").setRich(true);
108112
control.setLabel(this.tr("About ") + displayName);

tests/e2e-frontend/tests/userMenu/userMenu.js

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

10-
const userMenuButtonsPerRole = {
10+
const userMenuButtons = {
11+
"osparc": {
12+
"userMenuMyAccountBtn": true,
13+
"userMenuBillingCenterBtn": false,
14+
"userMenuPreferencesBtn": true,
15+
"userMenuOrganizationsBtn": true,
16+
"userMenuThemeSwitcherBtn": true,
17+
"userMenuAboutBtn": true,
18+
"userMenuAboutProductBtn": true,
19+
"userMenuAccessTIPBtn": false,
20+
"userMenuLogoutBtn": true,
21+
},
22+
"s4l": {
23+
"userMenuMyAccountBtn": true,
24+
"userMenuBillingCenterBtn": true,
25+
"userMenuPreferencesBtn": true,
26+
"userMenuOrganizationsBtn": true,
27+
"userMenuThemeSwitcherBtn": true,
28+
"userMenuAboutBtn": true,
29+
"userMenuAboutProductBtn": true,
30+
"userMenuAccessTIPBtn": false,
31+
"userMenuLogoutBtn": true,
32+
},
33+
"s4lacad": {
34+
"userMenuMyAccountBtn": true,
35+
"userMenuBillingCenterBtn": true,
36+
"userMenuPreferencesBtn": true,
37+
"userMenuOrganizationsBtn": true,
38+
"userMenuThemeSwitcherBtn": true,
39+
"userMenuAboutBtn": true,
40+
"userMenuAboutProductBtn": true,
41+
"userMenuAccessTIPBtn": false,
42+
"userMenuLogoutBtn": true,
43+
},
44+
"s4llite": {
45+
"userMenuMyAccountBtn": true,
46+
"userMenuBillingCenterBtn": true,
47+
"userMenuPreferencesBtn": true,
48+
"userMenuOrganizationsBtn": true,
49+
"userMenuThemeSwitcherBtn": true,
50+
"userMenuAboutBtn": true,
51+
"userMenuAboutProductBtn": true,
52+
"userMenuAccessTIPBtn": false,
53+
"userMenuLogoutBtn": true,
54+
},
55+
"tis": {
56+
"userMenuMyAccountBtn": true,
57+
"userMenuBillingCenterBtn": true,
58+
"userMenuPreferencesBtn": true,
59+
"userMenuOrganizationsBtn": true,
60+
"userMenuThemeSwitcherBtn": true,
61+
"userMenuAboutBtn": true,
62+
"userMenuAboutProductBtn": true,
63+
"userMenuAccessTIPBtn": false,
64+
"userMenuLogoutBtn": true,
65+
},
66+
"tiplite": {
67+
"userMenuMyAccountBtn": true,
68+
"userMenuBillingCenterBtn": true,
69+
"userMenuPreferencesBtn": true,
70+
"userMenuOrganizationsBtn": true,
71+
"userMenuThemeSwitcherBtn": true,
72+
"userMenuAboutBtn": true,
73+
"userMenuAboutProductBtn": true,
74+
"userMenuAccessTIPBtn": true,
75+
"userMenuLogoutBtn": true,
76+
},
77+
};
78+
79+
const dedicatedCentersPerRole = {
1180
"USER": {
12-
"My Account": true,
1381
"PO Center": false,
1482
"Admin Center": false,
1583
},
1684
"TESTER": {
17-
"My Account": true,
1885
"PO Center": false,
1986
"Admin Center": false,
2087
},
2188
"PRODUCT_OWNER": {
22-
"My Account": true,
2389
"PO Center": true,
2490
"Admin Center": false,
2591
},
2692
"ADMIN": {
27-
"My Account": true,
2893
"PO Center": true,
2994
"Admin Center": true,
3095
},
@@ -60,13 +125,35 @@ for (const product in products) {
60125
await browser.close();
61126
});
62127

63-
test(`Options per Role in User Menu ${role}`, async () => {
64-
expect(userMenuButtonsPerRole[role]).toBeDefined();
128+
test(`User Menu buttons per ${product}`, async () => {
129+
expect(userMenuButtons[product]).toBeDefined();
130+
131+
// open user menu
132+
await page.getByTestId("userMenuBtn").click();
133+
134+
const buttons = userMenuButtons[product];
135+
for (const buttonId in buttons) {
136+
const menuButton = page.getByTestId(buttonId);
137+
const isVisible = buttons[buttonId];
138+
if (isVisible) {
139+
await expect(menuButton).toBeVisible();
140+
} else {
141+
await expect(menuButton).toHaveCount(0);
142+
}
143+
}
144+
145+
// close user menu
146+
await page.getByTestId("userMenuBtn").click();
147+
});
148+
userMenuButtons
149+
150+
test(`Dedicated Centers per Role in User Menu ${role}`, async () => {
151+
expect(dedicatedCentersPerRole[role]).toBeDefined();
65152

66153
// open user menu
67154
await page.getByTestId("userMenuBtn").click();
68155

69-
const buttons = userMenuButtonsPerRole[role];
156+
const buttons = dedicatedCentersPerRole[role];
70157
for (const buttonText in buttons) {
71158
const expected = buttons[buttonText];
72159
const isVisible = await page.getByText(buttonText).isVisible();

0 commit comments

Comments
 (0)