@camunda/e2e-test-suite 0.0.897 → 0.0.898
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -106,8 +106,19 @@ class OCIdentityRolesPage {
|
|
|
106
106
|
await this.selectResourceTypeTab('Mapping Rules').click();
|
|
107
107
|
}
|
|
108
108
|
async clickRole(roleID) {
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
// The Roles table can settle on a stale render after the Roles tab loads:
|
|
110
|
+
// a role returned by /orchestration/v2/roles/search is missing from the
|
|
111
|
+
// rendered rows (another role is duplicated in its place). Reload between
|
|
112
|
+
// attempts so the table refetches instead of waiting out the timeout on a
|
|
113
|
+
// render that will never update.
|
|
114
|
+
await (0, clickLocatorWithRetry_1.clickLocatorWithRetry)(this.page, this.roleCell(roleID).first(), {
|
|
115
|
+
visibilityTimeout: 30000,
|
|
116
|
+
totalTimeout: 120000,
|
|
117
|
+
maxRetries: 4,
|
|
118
|
+
postAction: async () => {
|
|
119
|
+
await this.page.reload({ waitUntil: 'domcontentloaded' });
|
|
120
|
+
},
|
|
121
|
+
});
|
|
111
122
|
}
|
|
112
123
|
async assignMappingRuleToRole(roleId, mappingId) {
|
|
113
124
|
await this.clickRole(roleId);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SettingsPage = void 0;
|
|
4
|
+
const LoginPage_1 = require("./LoginPage");
|
|
4
5
|
class SettingsPage {
|
|
5
6
|
page;
|
|
6
7
|
openSettingsButton;
|
|
@@ -19,7 +20,27 @@ class SettingsPage {
|
|
|
19
20
|
await this.openUserSidebarButton.click({ timeout: 120000 });
|
|
20
21
|
}
|
|
21
22
|
async clickLogoutButton() {
|
|
23
|
+
const loginPage = new LoginPage_1.LoginPage(this.page);
|
|
24
|
+
// Logging out is *usually* a redirect chain (app -> OIDC end-session ->
|
|
25
|
+
// login page) -- wait for the login screen before returning so a caller
|
|
26
|
+
// resetting the session doesn't reload while that navigation is still in
|
|
27
|
+
// flight (aborts the reload with net::ERR_ABORTED). But a known identity
|
|
28
|
+
// bug (https://github.com/camunda/camunda/issues/32382) means the chain
|
|
29
|
+
// doesn't always complete: this can settle back on the still-authenticated
|
|
30
|
+
// app instead of a login screen (confirmed via CI screenshots -- the page
|
|
31
|
+
// stays on Identity > Mapping rules, fully logged in, both on first
|
|
32
|
+
// attempt and retry). Every caller of this method follows it with
|
|
33
|
+
// resetSession(), which force-clears cookies and reloads regardless of
|
|
34
|
+
// where this lands -- that's the actual, reliable logout here, so this
|
|
35
|
+
// wait is best-effort: give the redirect a chance to settle, but don't
|
|
36
|
+
// fail the test over a known bug that resetSession() already works around.
|
|
22
37
|
await this.logoutButton.click({ timeout: 30000 });
|
|
38
|
+
await loginPage.usernameInput
|
|
39
|
+
.or(loginPage.coreUsernameInput)
|
|
40
|
+
.or(loginPage.keycloakBanner)
|
|
41
|
+
.first()
|
|
42
|
+
.waitFor({ state: 'visible', timeout: 15000 })
|
|
43
|
+
.catch(() => { });
|
|
23
44
|
}
|
|
24
45
|
}
|
|
25
46
|
exports.SettingsPage = SettingsPage;
|