@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
|
-
|
|
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)(
|
|
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
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
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
|
-
|
|
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();
|