@camunda/e2e-test-suite 0.0.1220 → 0.0.1221
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.
|
@@ -264,9 +264,23 @@ class ModelerHomePage {
|
|
|
264
264
|
// into it, so the breadcrumb editor was never mounted at all. Rename the
|
|
265
265
|
// row in place rather than clicking "New project" again, which would leave
|
|
266
266
|
// a second, permanently unnamed project behind in the org.
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
267
|
+
//
|
|
268
|
+
// Routed through clickLocatorWithRetry with a dialog-dismiss preAction --
|
|
269
|
+
// the same guard clickCreateNewProjectButton and the folder tile already
|
|
270
|
+
// use, and the one row control in this flow that was still a raw click.
|
|
271
|
+
// Creating a project mounts an announcement dialog over the projects list
|
|
272
|
+
// (see enterNewProjectName); it re-appears during the waits above and
|
|
273
|
+
// intercepts this context-dropdown, so the bare click timed out for its
|
|
274
|
+
// whole budget every toPass iteration. Dismissing right before each
|
|
275
|
+
// attempt clears the overlay the caller's earlier dismiss no longer
|
|
276
|
+
// covers.
|
|
277
|
+
await (0, clickLocatorWithRetry_1.clickLocatorWithRetry)(this.page, this.defaultNamedProjectRow.locator('[data-test="entity-context-dropdown"]'), {
|
|
278
|
+
totalTimeout: 90000,
|
|
279
|
+
visibilityTimeout: 15000,
|
|
280
|
+
preAction: async () => {
|
|
281
|
+
await this.dismissBlockingDialog();
|
|
282
|
+
},
|
|
283
|
+
});
|
|
270
284
|
await this.renameMenuItem.click({ timeout: 10000 });
|
|
271
285
|
}
|
|
272
286
|
async enterIdpApplicationName(name) {
|
|
@@ -259,6 +259,25 @@ async function withSessionRecovery(page, loginPage, appsPage, modelerBanner, tes
|
|
|
259
259
|
return;
|
|
260
260
|
}
|
|
261
261
|
catch (error) {
|
|
262
|
+
// A mid-flow sign-out redirects to the IdP asynchronously: at the instant
|
|
263
|
+
// action() throws, the tab can still report the Modeler URL for a beat
|
|
264
|
+
// before it commits to weblogin.*, so a single synchronous isSignedOut()
|
|
265
|
+
// check reads "still signed in" and the recovery below never fires -- the
|
|
266
|
+
// error then propagates while the tab drifts on to the login page, which
|
|
267
|
+
// is exactly how a create-button-never-visible timeout presented on the
|
|
268
|
+
// isolated provisioning burst. Give the redirect a bounded window to land
|
|
269
|
+
// before deciding whether this was a dropped session.
|
|
270
|
+
if (!isSignedOut(page)) {
|
|
271
|
+
try {
|
|
272
|
+
await page.waitForURL((url) => url.hostname.startsWith('weblogin.') ||
|
|
273
|
+
(url.hostname.startsWith('modeler.') &&
|
|
274
|
+
/^\/login\/?$/.test(url.pathname)), { timeout: 15000 });
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
// Redirect never landed within the window: this was not a dropped
|
|
278
|
+
// session, so fall through and let the original error propagate.
|
|
279
|
+
}
|
|
280
|
+
}
|
|
262
281
|
if (!isSignedOut(page) || recovery === maxRecoveries) {
|
|
263
282
|
throw error;
|
|
264
283
|
}
|