@camunda/e2e-test-suite 0.0.1219 → 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
|
}
|
|
@@ -351,6 +351,13 @@ class ModelerHomePage {
|
|
|
351
351
|
if (await committedProjectName.first().isVisible()) {
|
|
352
352
|
return;
|
|
353
353
|
}
|
|
354
|
+
// A failed create-project POST logs the SPA out on its own -- the tab
|
|
355
|
+
// bounces to the Auth0 login form (or lands on "Project not found") -- so
|
|
356
|
+
// the inline editor never mounts and every probe below waits out its
|
|
357
|
+
// budget on a page Modeler does not own. Recover the session first, the
|
|
358
|
+
// same primitive clickCreateNewProjectButton uses, so the re-creation
|
|
359
|
+
// branch below runs against Modeler rather than the login form.
|
|
360
|
+
await this.recoverModelerSession();
|
|
354
361
|
// The rename runs on a freshly created project, which is exactly when an
|
|
355
362
|
// announcement dialog mounts on top of it: it takes focus, the inline
|
|
356
363
|
// editor unmounts, and the click below then waits out its whole timeout
|