@camunda/e2e-test-suite 0.0.903 → 0.0.905
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.10/ModelerCreatePage.d.ts +1 -0
- package/dist/pages/8.10/ModelerCreatePage.js +22 -7
- package/dist/pages/8.7/ModelerCreatePage.d.ts +1 -0
- package/dist/pages/8.7/ModelerCreatePage.js +22 -7
- package/dist/pages/8.7/PlayPage.js +8 -1
- package/dist/pages/8.8/ModelerCreatePage.d.ts +1 -0
- package/dist/pages/8.8/ModelerCreatePage.js +22 -7
- package/dist/pages/8.9/ModelerCreatePage.d.ts +1 -0
- package/dist/pages/8.9/ModelerCreatePage.js +22 -7
- package/dist/pages/SM-8.10/ModelerCreatePage.js +12 -0
- package/package.json +1 -1
|
@@ -204,6 +204,7 @@ declare class ModelerCreatePage {
|
|
|
204
204
|
clickTaskDefinitionPropertiesPanel(): Promise<void>;
|
|
205
205
|
clickJobTypeInput(): Promise<void>;
|
|
206
206
|
fillJobTypeInput(name: string): Promise<void>;
|
|
207
|
+
private suppressTestModeAnnouncement;
|
|
207
208
|
switchToPlay(): Promise<void>;
|
|
208
209
|
completePlayConfiguration(clusterName: string): Promise<void>;
|
|
209
210
|
embedForm(formName: string): Promise<void>;
|
|
@@ -256,9 +256,14 @@ class ModelerCreatePage {
|
|
|
256
256
|
this.serviceTaskOption = page.locator('.djs-popup-results [data-id="replace-with-service-task"]');
|
|
257
257
|
this.taskDefinitionPanel = page.locator('[data-group-id="group-taskDefinition"]');
|
|
258
258
|
this.jobTypeInput = page.getByRole('textbox', { name: /job type/i });
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
259
|
+
// Modeler renamed the third mode tab "Play" -> "Test" (camunda-hub
|
|
260
|
+
// a90fd06). Accept either label; the "Test" branch is scoped to the modes
|
|
261
|
+
// tablist because the details panel also renders a tab named "Test".
|
|
262
|
+
this.playTab = page
|
|
263
|
+
.getByRole('tab', { name: 'Play' })
|
|
264
|
+
.or(page
|
|
265
|
+
.getByRole('tablist', { name: 'List of modes' })
|
|
266
|
+
.getByRole('tab', { name: 'Test', exact: true }));
|
|
262
267
|
this.continueToPlayButton = page.getByRole('button', { name: 'Continue' });
|
|
263
268
|
this.assignmentSection = page.locator('[data-group-id="group-assignmentDefinition"]');
|
|
264
269
|
this.assigneeInput = page.getByRole('textbox', { name: 'assignee' });
|
|
@@ -1124,7 +1129,16 @@ class ModelerCreatePage {
|
|
|
1124
1129
|
async fillJobTypeInput(name) {
|
|
1125
1130
|
await this.jobTypeInput.fill(name);
|
|
1126
1131
|
}
|
|
1132
|
+
// Test mode mounts a one-time "A new way to test your processes" modal
|
|
1133
|
+
// (camunda-hub TestAnnouncementModal) that covers the setup steps behind it.
|
|
1134
|
+
// It renders unless localStorage already carries the seen flag, which it
|
|
1135
|
+
// reads on mount; a fresh Playwright context always starts empty, so set the
|
|
1136
|
+
// flag before entering Test mode rather than clicking the modal away.
|
|
1137
|
+
async suppressTestModeAnnouncement() {
|
|
1138
|
+
await this.page.evaluate(() => localStorage.setItem('play-testAnnouncementSeen', 'true'));
|
|
1139
|
+
}
|
|
1127
1140
|
async switchToPlay() {
|
|
1141
|
+
await this.suppressTestModeAnnouncement();
|
|
1128
1142
|
await this.playTab.click();
|
|
1129
1143
|
}
|
|
1130
1144
|
async completePlayConfiguration(clusterName) {
|
|
@@ -1132,14 +1146,15 @@ class ModelerCreatePage {
|
|
|
1132
1146
|
// New flow (8.10+): "Setup environment" panel with three steps:
|
|
1133
1147
|
// 1. Connect cluster → "Configure environment" modal → select cluster → Save
|
|
1134
1148
|
// 2. Deploy process → wait for success banner
|
|
1135
|
-
// 3. Configure
|
|
1149
|
+
// 3. Configure test case
|
|
1136
1150
|
const setupDeployButton = this.page
|
|
1137
1151
|
.getByText('Deploy process')
|
|
1138
1152
|
.locator('..')
|
|
1139
1153
|
.getByRole('button', { name: 'Deploy' });
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1154
|
+
// Keyed on the test id, not the label: the button reads "Configure test
|
|
1155
|
+
// case" since camunda-hub a90fd06 and "Configure scenario" before it, while
|
|
1156
|
+
// the test id kept its original wording across the rename.
|
|
1157
|
+
const configureScenarioButton = this.page.getByTestId('play-configuration-configure-scenario-button');
|
|
1143
1158
|
// Wait up to 15s for EITHER the new-flow setup panel OR the legacy Continue
|
|
1144
1159
|
// button to appear. Using .or() avoids separate sequential timeouts that would
|
|
1145
1160
|
// both expire before the page finishes loading on a slow cluster.
|
|
@@ -198,6 +198,7 @@ declare class ModelerCreatePage {
|
|
|
198
198
|
clickTaskDefinitionPropertiesPanel(): Promise<void>;
|
|
199
199
|
clickJobTypeInput(): Promise<void>;
|
|
200
200
|
fillJobTypeInput(name: string): Promise<void>;
|
|
201
|
+
private suppressTestModeAnnouncement;
|
|
201
202
|
switchToPlay(): Promise<void>;
|
|
202
203
|
completePlayConfiguration(clusterName: string): Promise<void>;
|
|
203
204
|
selectCluster(clusterName: string): Promise<void>;
|
|
@@ -223,9 +223,14 @@ class ModelerCreatePage {
|
|
|
223
223
|
this.serviceTaskOption = page.locator('.djs-popup-results [data-id="replace-with-service-task"]');
|
|
224
224
|
this.taskDefinitionPanel = page.locator('[data-group-id="group-taskDefinition"]');
|
|
225
225
|
this.jobTypeInput = page.getByRole('textbox', { name: /job type/i });
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
226
|
+
// Modeler renamed the third mode tab "Play" -> "Test" (camunda-hub
|
|
227
|
+
// a90fd06). Accept either label; the "Test" branch is scoped to the modes
|
|
228
|
+
// tablist because the details panel also renders a tab named "Test".
|
|
229
|
+
this.playTab = page
|
|
230
|
+
.getByRole('tab', { name: 'Play' })
|
|
231
|
+
.or(page
|
|
232
|
+
.getByRole('tablist', { name: 'List of modes' })
|
|
233
|
+
.getByRole('tab', { name: 'Test', exact: true }));
|
|
229
234
|
this.continueToPlayButton = page.getByRole('button', { name: 'Continue' });
|
|
230
235
|
this.assignmentSection = page.locator('[data-group-id="group-assignmentDefinition"]');
|
|
231
236
|
this.assigneeInput = page.getByRole('textbox', { name: 'assignee' });
|
|
@@ -1022,7 +1027,16 @@ class ModelerCreatePage {
|
|
|
1022
1027
|
async fillJobTypeInput(name) {
|
|
1023
1028
|
await this.jobTypeInput.fill(name);
|
|
1024
1029
|
}
|
|
1030
|
+
// Test mode mounts a one-time "A new way to test your processes" modal
|
|
1031
|
+
// (camunda-hub TestAnnouncementModal) that covers the setup steps behind it.
|
|
1032
|
+
// It renders unless localStorage already carries the seen flag, which it
|
|
1033
|
+
// reads on mount; a fresh Playwright context always starts empty, so set the
|
|
1034
|
+
// flag before entering Test mode rather than clicking the modal away.
|
|
1035
|
+
async suppressTestModeAnnouncement() {
|
|
1036
|
+
await this.page.evaluate(() => localStorage.setItem('play-testAnnouncementSeen', 'true'));
|
|
1037
|
+
}
|
|
1025
1038
|
async switchToPlay() {
|
|
1039
|
+
await this.suppressTestModeAnnouncement();
|
|
1026
1040
|
await this.playTab.click();
|
|
1027
1041
|
}
|
|
1028
1042
|
async completePlayConfiguration(clusterName) {
|
|
@@ -1030,14 +1044,15 @@ class ModelerCreatePage {
|
|
|
1030
1044
|
// New flow (8.10+): "Setup environment" panel with three steps:
|
|
1031
1045
|
// 1. Connect cluster → "Configure environment" modal → select cluster → Save
|
|
1032
1046
|
// 2. Deploy process → wait for success banner
|
|
1033
|
-
// 3. Configure
|
|
1047
|
+
// 3. Configure test case
|
|
1034
1048
|
const setupDeployButton = this.page
|
|
1035
1049
|
.getByText('Deploy process')
|
|
1036
1050
|
.locator('..')
|
|
1037
1051
|
.getByRole('button', { name: 'Deploy' });
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1052
|
+
// Keyed on the test id, not the label: the button reads "Configure test
|
|
1053
|
+
// case" since camunda-hub a90fd06 and "Configure scenario" before it, while
|
|
1054
|
+
// the test id kept its original wording across the rename.
|
|
1055
|
+
const configureScenarioButton = this.page.getByTestId('play-configuration-configure-scenario-button');
|
|
1041
1056
|
// Wait up to 15s for EITHER the new-flow setup panel OR the legacy Continue
|
|
1042
1057
|
// button to appear.
|
|
1043
1058
|
const setupOrContinue = setupDeployButton.or(this.continueToPlayButton);
|
|
@@ -15,7 +15,14 @@ class PlayPage {
|
|
|
15
15
|
constructor(page) {
|
|
16
16
|
this.page = page;
|
|
17
17
|
this.diagram = page.getByTestId('diagram');
|
|
18
|
-
|
|
18
|
+
// Modeler renamed the third mode tab "Play" -> "Test" (camunda-hub
|
|
19
|
+
// a90fd06). Accept either label; the "Test" branch is scoped to the modes
|
|
20
|
+
// tablist because the details panel also renders a tab named "Test".
|
|
21
|
+
this.playTab = page
|
|
22
|
+
.getByRole('tab', { name: 'Play' })
|
|
23
|
+
.or(page
|
|
24
|
+
.getByRole('tablist', { name: 'List of modes' })
|
|
25
|
+
.getByRole('tab', { name: 'Test', exact: true }));
|
|
19
26
|
this.completeJobButton = this.diagram.getByLabel('Complete job');
|
|
20
27
|
// Newer Modeler Play UI: the "Configure Scenario" floating card hosts a
|
|
21
28
|
// primary "Start" Carbon button (variants: "Start", "Start with
|
|
@@ -203,6 +203,7 @@ declare class ModelerCreatePage {
|
|
|
203
203
|
clickTaskDefinitionPropertiesPanel(): Promise<void>;
|
|
204
204
|
clickJobTypeInput(): Promise<void>;
|
|
205
205
|
fillJobTypeInput(name: string): Promise<void>;
|
|
206
|
+
private suppressTestModeAnnouncement;
|
|
206
207
|
switchToPlay(): Promise<void>;
|
|
207
208
|
completePlayConfiguration(clusterName: string): Promise<void>;
|
|
208
209
|
embedForm(formName: string): Promise<void>;
|
|
@@ -255,9 +255,14 @@ class ModelerCreatePage {
|
|
|
255
255
|
this.serviceTaskOption = page.locator('.djs-popup-results [data-id="replace-with-service-task"]');
|
|
256
256
|
this.taskDefinitionPanel = page.locator('[data-group-id="group-taskDefinition"]');
|
|
257
257
|
this.jobTypeInput = page.getByRole('textbox', { name: /job type/i });
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
258
|
+
// Modeler renamed the third mode tab "Play" -> "Test" (camunda-hub
|
|
259
|
+
// a90fd06). Accept either label; the "Test" branch is scoped to the modes
|
|
260
|
+
// tablist because the details panel also renders a tab named "Test".
|
|
261
|
+
this.playTab = page
|
|
262
|
+
.getByRole('tab', { name: 'Play' })
|
|
263
|
+
.or(page
|
|
264
|
+
.getByRole('tablist', { name: 'List of modes' })
|
|
265
|
+
.getByRole('tab', { name: 'Test', exact: true }));
|
|
261
266
|
this.continueToPlayButton = page.getByRole('button', { name: 'Continue' });
|
|
262
267
|
this.assignmentSection = page.locator('[data-group-id="group-assignmentDefinition"]');
|
|
263
268
|
this.assigneeInput = page.getByRole('textbox', { name: 'assignee' });
|
|
@@ -1171,7 +1176,16 @@ class ModelerCreatePage {
|
|
|
1171
1176
|
async fillJobTypeInput(name) {
|
|
1172
1177
|
await this.jobTypeInput.fill(name);
|
|
1173
1178
|
}
|
|
1179
|
+
// Test mode mounts a one-time "A new way to test your processes" modal
|
|
1180
|
+
// (camunda-hub TestAnnouncementModal) that covers the setup steps behind it.
|
|
1181
|
+
// It renders unless localStorage already carries the seen flag, which it
|
|
1182
|
+
// reads on mount; a fresh Playwright context always starts empty, so set the
|
|
1183
|
+
// flag before entering Test mode rather than clicking the modal away.
|
|
1184
|
+
async suppressTestModeAnnouncement() {
|
|
1185
|
+
await this.page.evaluate(() => localStorage.setItem('play-testAnnouncementSeen', 'true'));
|
|
1186
|
+
}
|
|
1174
1187
|
async switchToPlay() {
|
|
1188
|
+
await this.suppressTestModeAnnouncement();
|
|
1175
1189
|
await this.playTab.click();
|
|
1176
1190
|
}
|
|
1177
1191
|
async completePlayConfiguration(clusterName) {
|
|
@@ -1179,14 +1193,15 @@ class ModelerCreatePage {
|
|
|
1179
1193
|
// New flow (8.10+): "Setup environment" panel with three steps:
|
|
1180
1194
|
// 1. Connect cluster → "Configure environment" modal → select cluster → Save
|
|
1181
1195
|
// 2. Deploy process → wait for success banner
|
|
1182
|
-
// 3. Configure
|
|
1196
|
+
// 3. Configure test case
|
|
1183
1197
|
const setupDeployButton = this.page
|
|
1184
1198
|
.getByText('Deploy process')
|
|
1185
1199
|
.locator('..')
|
|
1186
1200
|
.getByRole('button', { name: 'Deploy' });
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1201
|
+
// Keyed on the test id, not the label: the button reads "Configure test
|
|
1202
|
+
// case" since camunda-hub a90fd06 and "Configure scenario" before it, while
|
|
1203
|
+
// the test id kept its original wording across the rename.
|
|
1204
|
+
const configureScenarioButton = this.page.getByTestId('play-configuration-configure-scenario-button');
|
|
1190
1205
|
// Wait up to 15s for EITHER the new-flow setup panel OR the legacy Continue
|
|
1191
1206
|
// button to appear. Using .or() avoids separate sequential timeouts that would
|
|
1192
1207
|
// both expire before the page finishes loading on a slow cluster.
|
|
@@ -203,6 +203,7 @@ declare class ModelerCreatePage {
|
|
|
203
203
|
clickTaskDefinitionPropertiesPanel(): Promise<void>;
|
|
204
204
|
clickJobTypeInput(): Promise<void>;
|
|
205
205
|
fillJobTypeInput(name: string): Promise<void>;
|
|
206
|
+
private suppressTestModeAnnouncement;
|
|
206
207
|
switchToPlay(): Promise<void>;
|
|
207
208
|
completePlayConfiguration(clusterName: string): Promise<void>;
|
|
208
209
|
embedForm(formName: string): Promise<void>;
|
|
@@ -255,9 +255,14 @@ class ModelerCreatePage {
|
|
|
255
255
|
this.serviceTaskOption = page.locator('.djs-popup-results [data-id="replace-with-service-task"]');
|
|
256
256
|
this.taskDefinitionPanel = page.locator('[data-group-id="group-taskDefinition"]');
|
|
257
257
|
this.jobTypeInput = page.getByRole('textbox', { name: /job type/i });
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
258
|
+
// Modeler renamed the third mode tab "Play" -> "Test" (camunda-hub
|
|
259
|
+
// a90fd06). Accept either label; the "Test" branch is scoped to the modes
|
|
260
|
+
// tablist because the details panel also renders a tab named "Test".
|
|
261
|
+
this.playTab = page
|
|
262
|
+
.getByRole('tab', { name: 'Play' })
|
|
263
|
+
.or(page
|
|
264
|
+
.getByRole('tablist', { name: 'List of modes' })
|
|
265
|
+
.getByRole('tab', { name: 'Test', exact: true }));
|
|
261
266
|
this.continueToPlayButton = page.getByRole('button', { name: 'Continue' });
|
|
262
267
|
this.assignmentSection = page.locator('[data-group-id="group-assignmentDefinition"]');
|
|
263
268
|
this.assigneeInput = page.getByRole('textbox', { name: 'assignee' });
|
|
@@ -1119,7 +1124,16 @@ class ModelerCreatePage {
|
|
|
1119
1124
|
async fillJobTypeInput(name) {
|
|
1120
1125
|
await this.jobTypeInput.fill(name);
|
|
1121
1126
|
}
|
|
1127
|
+
// Test mode mounts a one-time "A new way to test your processes" modal
|
|
1128
|
+
// (camunda-hub TestAnnouncementModal) that covers the setup steps behind it.
|
|
1129
|
+
// It renders unless localStorage already carries the seen flag, which it
|
|
1130
|
+
// reads on mount; a fresh Playwright context always starts empty, so set the
|
|
1131
|
+
// flag before entering Test mode rather than clicking the modal away.
|
|
1132
|
+
async suppressTestModeAnnouncement() {
|
|
1133
|
+
await this.page.evaluate(() => localStorage.setItem('play-testAnnouncementSeen', 'true'));
|
|
1134
|
+
}
|
|
1122
1135
|
async switchToPlay() {
|
|
1136
|
+
await this.suppressTestModeAnnouncement();
|
|
1123
1137
|
await this.playTab.click();
|
|
1124
1138
|
}
|
|
1125
1139
|
async completePlayConfiguration(clusterName) {
|
|
@@ -1127,14 +1141,15 @@ class ModelerCreatePage {
|
|
|
1127
1141
|
// New flow (8.10+): "Setup environment" panel with three steps:
|
|
1128
1142
|
// 1. Connect cluster → "Configure environment" modal → select cluster → Save
|
|
1129
1143
|
// 2. Deploy process → wait for success banner
|
|
1130
|
-
// 3. Configure
|
|
1144
|
+
// 3. Configure test case
|
|
1131
1145
|
const setupDeployButton = this.page
|
|
1132
1146
|
.getByText('Deploy process')
|
|
1133
1147
|
.locator('..')
|
|
1134
1148
|
.getByRole('button', { name: 'Deploy' });
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1149
|
+
// Keyed on the test id, not the label: the button reads "Configure test
|
|
1150
|
+
// case" since camunda-hub a90fd06 and "Configure scenario" before it, while
|
|
1151
|
+
// the test id kept its original wording across the rename.
|
|
1152
|
+
const configureScenarioButton = this.page.getByTestId('play-configuration-configure-scenario-button');
|
|
1138
1153
|
// Wait up to 15s for EITHER the new-flow setup panel OR the legacy Continue
|
|
1139
1154
|
// button to appear. Using .or() avoids separate sequential timeouts that would
|
|
1140
1155
|
// both expire before the page finishes loading on a slow cluster.
|
|
@@ -368,6 +368,18 @@ class ModelerCreatePage {
|
|
|
368
368
|
await (0, test_1.expect)(this.dialog).toBeVisible({
|
|
369
369
|
timeout: 30000,
|
|
370
370
|
});
|
|
371
|
+
const modelerClusterName = process.env.MODELER_CLUSTER_NAME;
|
|
372
|
+
if (modelerClusterName) {
|
|
373
|
+
const clusterSelect = this.dialog.getByRole('combobox', {
|
|
374
|
+
name: 'Select a cluster',
|
|
375
|
+
});
|
|
376
|
+
await clusterSelect.click();
|
|
377
|
+
const escapedClusterName = modelerClusterName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
378
|
+
await this.dialog
|
|
379
|
+
.getByText(new RegExp(`^${escapedClusterName}(?: \\(|$)`))
|
|
380
|
+
.click();
|
|
381
|
+
await (0, test_1.expect)(clusterSelect).toContainText(modelerClusterName);
|
|
382
|
+
}
|
|
371
383
|
if (variables.length > 0) {
|
|
372
384
|
await (0, test_1.expect)(this.variableInput).toBeVisible({
|
|
373
385
|
timeout: 60000,
|