@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
- await this.defaultNamedProjectRow
268
- .locator('[data-test="entity-context-dropdown"]')
269
- .click({ timeout: 30000 });
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.1220",
3
+ "version": "0.0.1221",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",