@camunda/e2e-test-suite 0.0.1138 → 0.0.1140

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.
@@ -129,7 +129,11 @@ class ModelerCreatePage {
129
129
  name: 'Change element',
130
130
  exact: true,
131
131
  });
132
- this.userTaskOption = page.getByRole('option', { name: 'User task' });
132
+ // Anchor on the built-in entry's data-id: the popup also lists the
133
+ // project's deployed resources (`data-id="resources-replace-bpmnProcess-N"`)
134
+ // labelled with the diagram name, which makes a role+name match on
135
+ // 'User task' ambiguous as soon as such a diagram exists.
136
+ this.userTaskOption = page.locator('.djs-popup-results [data-id="replace-with-user-task"]');
133
137
  this.serviceTaskOption = page.getByRole('option', { name: 'Service task' });
134
138
  this.appendEndEventButton = page.getByRole('button', {
135
139
  name: 'Append end event',
@@ -1327,7 +1331,9 @@ class ModelerCreatePage {
1327
1331
  }
1328
1332
  async assertImplementationOption(implementationType) {
1329
1333
  await this.expandImplementationOptionIfNecessary();
1330
- (0, test_1.expect)(await this.implementationOptions.inputValue()).toEqual(implementationType);
1334
+ await (0, test_1.expect)(this.implementationOptions).toHaveValue(implementationType, {
1335
+ timeout: 30000,
1336
+ });
1331
1337
  }
1332
1338
  async chooseImplementationOption(implementationType) {
1333
1339
  // Wait for implementation section to be attached and stable after task type change
@@ -1345,12 +1351,23 @@ class ModelerCreatePage {
1345
1351
  await this.assertImplementationOption(implementationType);
1346
1352
  }
1347
1353
  async expandImplementationOptionIfNecessary() {
1348
- const isExpanded = (await this.implementationSection
1349
- .locator('.bio-properties-panel-group-header empty open')
1350
- .count()) > 0;
1351
- if (!isExpanded) {
1352
- await this.implementationSection.click();
1354
+ // `.bio-properties-panel-group-header empty open` is a descendant
1355
+ // combinator over non-existent `empty`/`open` element types, so it always
1356
+ // counted 0 and every call clicked blindly. Read the entry the caller is
1357
+ // about to assert on instead, and click the header rather than the group
1358
+ // container: the container re-renders while the panel rebuilds after an
1359
+ // id/name edit and detaches mid-click.
1360
+ if (await this.implementationOptions.isVisible().catch(() => false)) {
1361
+ return;
1353
1362
  }
1363
+ await this.implementationSection.waitFor({
1364
+ state: 'visible',
1365
+ timeout: 30000,
1366
+ });
1367
+ await this.implementationSection
1368
+ .locator('.bio-properties-panel-group-header')
1369
+ .click({ timeout: 60000 });
1370
+ await (0, test_1.expect)(this.implementationOptions).toBeVisible({ timeout: 30000 });
1354
1371
  }
1355
1372
  async expandAssignmentSection() {
1356
1373
  // Scoped to assignmentSection already, so the group-id must not be repeated
@@ -511,9 +511,28 @@ class ModelerHomePage {
511
511
  async clickDiagramTypeDropdown() {
512
512
  await this.enterResourceContainer();
513
513
  const dropdown = this.processApplicationPage.createNewDropdown;
514
+ // Recovery must re-navigate to the container's absolute URL, not blindly
515
+ // page.reload(). Flag-on Modeler runs a silent Keycloak token refresh that
516
+ // routes through /modeler/login -> /modeler/login-callback and, once the
517
+ // deep link is lost, lands on the /modeler/workspaces overview -- which has
518
+ // no "Create new" menu. A page.reload() there just reloads /workspaces, so
519
+ // the dropdown never reappears and every "create a diagram" flow times out.
520
+ // Re-entering via processApplicationUrl (goto) puts us back on the Project
521
+ // detail where the menu renders, matching the goto-based recovery used by
522
+ // returnToResourceContainer() elsewhere in this page object.
514
523
  await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, dropdown, {
524
+ totalTimeout: 180000,
525
+ maxRetries: 6,
515
526
  postAction: async () => {
516
- await this.page.reload();
527
+ if (this.processApplicationUrl) {
528
+ await this.page.goto(this.processApplicationUrl, {
529
+ waitUntil: 'domcontentloaded',
530
+ });
531
+ await this.clickMessageBanner();
532
+ }
533
+ else {
534
+ await this.page.reload();
535
+ }
517
536
  },
518
537
  });
519
538
  await dropdown.click();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.1138",
3
+ "version": "0.0.1140",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",