@camunda/e2e-test-suite 0.0.731 → 0.0.733
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.
- package/dist/pages/8.7/ModelerCreatePage.d.ts +1 -0
- package/dist/pages/8.7/ModelerCreatePage.js +19 -0
- package/dist/pages/8.7/UtilitiesPage.js +1 -2
- package/dist/pages/SM-8.10/ModelerCreatePage.js +6 -1
- package/dist/pages/SM-8.10/NavigationPage.js +6 -1
- package/dist/pages/SM-8.10/OCIdentityRolesPage.js +1 -1
- package/dist/pages/SM-8.10/OperateHomePage.js +7 -0
- package/dist/pages/SM-8.10/OptimizeReportPage.js +1 -1
- package/dist/pages/SM-8.10/PlayPage.js +17 -0
- package/package.json +1 -1
|
@@ -180,6 +180,7 @@ declare class ModelerCreatePage {
|
|
|
180
180
|
fillCorrelationKeyPayloadInput(correlationKeyPayload: string): Promise<void>;
|
|
181
181
|
clickIdInput(): Promise<void>;
|
|
182
182
|
fillIdInput(id: string): Promise<void>;
|
|
183
|
+
setAndVerifyProcessId(processId: string): Promise<void>;
|
|
183
184
|
fillStartFormName(name: string): Promise<void>;
|
|
184
185
|
fillStartFormDate(date: string): Promise<void>;
|
|
185
186
|
checkStartFormCheckbox(): Promise<void>;
|
|
@@ -808,6 +808,25 @@ class ModelerCreatePage {
|
|
|
808
808
|
async fillIdInput(id) {
|
|
809
809
|
await this.processIdInput.fill(id);
|
|
810
810
|
}
|
|
811
|
+
async setAndVerifyProcessId(processId) {
|
|
812
|
+
// The General properties group is already expanded by the caller. Setting
|
|
813
|
+
// the process ID on a freshly uploaded diagram intermittently fails to
|
|
814
|
+
// commit (the value is typed but the modeler does not persist it, leaving
|
|
815
|
+
// the template default id). Anything keyed on the process id — notably the
|
|
816
|
+
// RBA resource authorization auto-provisioned on deploy — then references
|
|
817
|
+
// the wrong id. Fill, blur to force the commit, and re-apply until the
|
|
818
|
+
// input reflects the intended id.
|
|
819
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
820
|
+
await this.processIdInput.click();
|
|
821
|
+
await this.processIdInput.fill('');
|
|
822
|
+
await this.processIdInput.fill(processId);
|
|
823
|
+
await this.processIdInput.blur();
|
|
824
|
+
if ((await this.processIdInput.inputValue()) === processId) {
|
|
825
|
+
return;
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
await (0, test_1.expect)(this.processIdInput).toHaveValue(processId, { timeout: 10000 });
|
|
829
|
+
}
|
|
811
830
|
async fillStartFormName(name) {
|
|
812
831
|
await this.payloadNameInput.fill(name);
|
|
813
832
|
}
|
|
@@ -256,8 +256,7 @@ async function modelDiagramFromFile(page, modelerHomePage, modelerCreatePage, pr
|
|
|
256
256
|
await modelerCreatePage.clickGeneralPropertiesPanel();
|
|
257
257
|
await modelerCreatePage.clickNameInput();
|
|
258
258
|
await modelerCreatePage.fillNamedInput(processName);
|
|
259
|
-
await modelerCreatePage.
|
|
260
|
-
await modelerCreatePage.fillIdInput(processName);
|
|
259
|
+
await modelerCreatePage.setAndVerifyProcessId(processName);
|
|
261
260
|
if (nrOfRenamedUserTasks > 0) {
|
|
262
261
|
for (let i = 1; i <= nrOfRenamedUserTasks; i++) {
|
|
263
262
|
await modelerCreatePage.clickUserTask('process' + i);
|
|
@@ -1071,7 +1071,12 @@ class ModelerCreatePage {
|
|
|
1071
1071
|
await this.continueToPlayButton.click({ timeout: 30000 });
|
|
1072
1072
|
}
|
|
1073
1073
|
async assertScenarioNameVisible(scenarioName) {
|
|
1074
|
-
await (0, test_1.expect)(this.page
|
|
1074
|
+
await (0, test_1.expect)(this.page
|
|
1075
|
+
.getByTestId('instance-header')
|
|
1076
|
+
.getByText(scenarioName)
|
|
1077
|
+
.or(this.page
|
|
1078
|
+
.getByRole('region', { name: 'Scenarios' })
|
|
1079
|
+
.getByText(scenarioName, { exact: false }))).toBeVisible();
|
|
1075
1080
|
}
|
|
1076
1081
|
async fillStartEventVariablesForDocHandling(zeebeUrl, zeebeClientId, zeebeClientSecret) {
|
|
1077
1082
|
console.log(`URL: ${zeebeUrl}, ClientId: ${zeebeClientId}, Secret: ${zeebeClientSecret}`);
|
|
@@ -100,7 +100,12 @@ class NavigationPage {
|
|
|
100
100
|
const now = new Date();
|
|
101
101
|
const elapsed = Date.now() - startTime;
|
|
102
102
|
if (attempt < maxRetries - 1) {
|
|
103
|
-
|
|
103
|
+
// Progressive backoff: a transient Keycloak 5xx during the OAuth
|
|
104
|
+
// login (the "We are sorry... internal server error" page) can
|
|
105
|
+
// persist for several seconds. Widening the gap between attempts
|
|
106
|
+
// (2s, 4s, 6s, 8s) lets the auth server recover instead of burning
|
|
107
|
+
// every retry inside one short outage window.
|
|
108
|
+
await (0, sleep_1.sleep)(2000 * (attempt + 1));
|
|
104
109
|
if (!this.page.isClosed()) {
|
|
105
110
|
try {
|
|
106
111
|
await this.page.waitForLoadState('load', { timeout: timeout });
|
|
@@ -152,7 +152,7 @@ class OCIdentityRolesPage {
|
|
|
152
152
|
await this.createIdField.fill(role.id);
|
|
153
153
|
await this.createNameField.fill(role.name);
|
|
154
154
|
await this.createRoleModalCreateButton.click();
|
|
155
|
-
await (0, test_1.expect)(this.createRoleModal).not.toBeVisible();
|
|
155
|
+
await (0, test_1.expect)(this.createRoleModal).not.toBeVisible({ timeout: 60000 });
|
|
156
156
|
await (0, expectLocatorWithPagination_1.expectLocatorWithPagination)(this.page, this.rolesList
|
|
157
157
|
.getByRole('cell', {
|
|
158
158
|
name: role.name,
|
|
@@ -59,6 +59,13 @@ class OperateHomePage {
|
|
|
59
59
|
});
|
|
60
60
|
await this.processesTab.click({ timeout: constants_1._1_SECOND_IN_MS * 4 });
|
|
61
61
|
},
|
|
62
|
+
postAction: async () => {
|
|
63
|
+
// Operate is a Vite SPA: a transient module/CSS preload failure
|
|
64
|
+
// renders a "Something went wrong - Please reload the page" screen
|
|
65
|
+
// on which the Processes tab click is a no-op. Reload to fetch fresh
|
|
66
|
+
// assets so the next attempt can render the Processes view.
|
|
67
|
+
await this.page.reload({ waitUntil: 'domcontentloaded' });
|
|
68
|
+
},
|
|
62
69
|
});
|
|
63
70
|
}
|
|
64
71
|
async closeInformationDialog() {
|
|
@@ -130,7 +130,7 @@ class OptimizeReportPage {
|
|
|
130
130
|
}
|
|
131
131
|
async waitUntilLocatorIsVisible(locator, tab) {
|
|
132
132
|
let elapsedTime = 0;
|
|
133
|
-
const maxWaitTimeSeconds =
|
|
133
|
+
const maxWaitTimeSeconds = 300000;
|
|
134
134
|
while (elapsedTime < maxWaitTimeSeconds) {
|
|
135
135
|
const element = await locator;
|
|
136
136
|
if (await element.isVisible()) {
|
|
@@ -96,6 +96,23 @@ class PlayPage {
|
|
|
96
96
|
await this.completeJobButton.click();
|
|
97
97
|
}
|
|
98
98
|
async clickStartInstanceButton() {
|
|
99
|
+
const scenariosRegion = this.page.getByRole('region', { name: 'Scenarios' });
|
|
100
|
+
const backToScenariosButton = scenariosRegion.getByRole('button', {
|
|
101
|
+
name: 'Back to scenarios',
|
|
102
|
+
});
|
|
103
|
+
const closeScenariosButton = scenariosRegion.getByRole('button', {
|
|
104
|
+
name: 'Close',
|
|
105
|
+
});
|
|
106
|
+
// When "Configure scenario" is clicked with a prior scenario already saved,
|
|
107
|
+
// the Play UI opens scenario DETAILS (with "Back to scenarios") instead of
|
|
108
|
+
// the input panel. Close the Scenarios panel to reveal the canvas start controls.
|
|
109
|
+
const isDetailsView = await backToScenariosButton
|
|
110
|
+
.waitFor({ state: 'visible', timeout: 3000 })
|
|
111
|
+
.then(() => true)
|
|
112
|
+
.catch(() => false);
|
|
113
|
+
if (isDetailsView) {
|
|
114
|
+
await closeScenariosButton.click();
|
|
115
|
+
}
|
|
99
116
|
const startTrigger = this.configureTestPanelStartButton
|
|
100
117
|
.or(this.inputPanelStartButton)
|
|
101
118
|
.or(this.startInstanceButton)
|