@camunda/e2e-test-suite 0.0.1103 → 0.0.1104
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.js +103 -30
- package/package.json +1 -1
|
@@ -1226,20 +1226,39 @@ class ModelerCreatePage {
|
|
|
1226
1226
|
.locator('..')
|
|
1227
1227
|
.getByRole('button', { name: 'Deploy' }))
|
|
1228
1228
|
.first();
|
|
1229
|
-
//
|
|
1230
|
-
//
|
|
1231
|
-
//
|
|
1232
|
-
//
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1229
|
+
// Deploy completion signal. camunda-hub 8b4226983e (#28226, 2026-09-04)
|
|
1230
|
+
// replaced the overlay's "Process has been successfully deployed." status
|
|
1231
|
+
// text with a badge carrying `deploy-success-badge`; keep the old sentence
|
|
1232
|
+
// as a fallback for modeler builds from before that commit.
|
|
1233
|
+
const deploySuccessBadge = this.page
|
|
1234
|
+
.getByTestId('deploy-success-badge')
|
|
1235
|
+
.or(this.page.getByText('Process has been successfully deployed'))
|
|
1236
|
+
.first();
|
|
1237
|
+
// The same commit unified the setup overlay and the configure panel into
|
|
1238
|
+
// one accordion ("Setup environment" card, TestConfigurationPanel), which
|
|
1239
|
+
// deleted the `configure-test-case-button` primary button entirely: step 3
|
|
1240
|
+
// is now an accordion heading that is `disabled` until the deploy step
|
|
1241
|
+
// completes, and it opens on its own via a `hideConfigurationOverlay()`
|
|
1242
|
+
// effect once it does. So this locator is only a *fallback* nudge for when
|
|
1243
|
+
// the panel did not auto-open -- never the thing that advances the flow.
|
|
1244
|
+
// It must therefore never be used as an "is the deploy done" probe: the
|
|
1245
|
+
// heading is visible-but-disabled from the moment Play mounts, which is
|
|
1246
|
+
// exactly what made the old `alreadyDeployed` probe skip the deploy step
|
|
1247
|
+
// and then burn its whole budget clicking a permanently disabled button.
|
|
1248
|
+
const configureStepHeading = this.page
|
|
1237
1249
|
.getByTestId('configure-test-case-button')
|
|
1238
1250
|
.or(this.page.getByTestId('play-configuration-configure-scenario-button'))
|
|
1239
1251
|
.or(this.page.getByRole('button', {
|
|
1240
1252
|
name: /^Configure (test case|scenario)$/,
|
|
1241
1253
|
}))
|
|
1242
1254
|
.first();
|
|
1255
|
+
// Step 2 is an accordion item too, and its content (the Deploy button)
|
|
1256
|
+
// only renders visibly while that item is expanded. It expands by itself
|
|
1257
|
+
// once the cluster step completes, but a manual heading click is the
|
|
1258
|
+
// recovery path if it did not.
|
|
1259
|
+
const deployStepHeading = this.page.getByRole('button', {
|
|
1260
|
+
name: 'Deploy process',
|
|
1261
|
+
});
|
|
1243
1262
|
// Play settles into exactly ONE of three states, and which one is not
|
|
1244
1263
|
// knowable up front, so race them instead of timing out on each in turn:
|
|
1245
1264
|
// the setup overlay, the legacy Continue button, or the configure-test
|
|
@@ -1261,8 +1280,11 @@ class ModelerCreatePage {
|
|
|
1261
1280
|
// `test-studio-configuration-overlay` (confirmed in a failing run's trace
|
|
1262
1281
|
// DOM, and already fixed the same way in pages/SM-8.10). Anchor on the
|
|
1263
1282
|
// new data-test, keep the legacy attribute for older modeler builds, and
|
|
1264
|
-
// fall back to the "Setup environment" panel title.
|
|
1265
|
-
//
|
|
1283
|
+
// fall back to the "Setup environment" panel title. Since 8b4226983e the
|
|
1284
|
+
// data-test containers are gone and only the title matches, and the title
|
|
1285
|
+
// stays on screen once the configure step opens -- so this locator now
|
|
1286
|
+
// means "the setup panel exists", i.e. we are on the new flow. It is not a
|
|
1287
|
+
// signal that setup is still pending; `configureTestPanel` is.
|
|
1266
1288
|
const configurationOverlay = this.page
|
|
1267
1289
|
.locator('[data-test="test-studio-configuration-overlay"]')
|
|
1268
1290
|
.or(this.page.locator('[data-test="play-configuration-overlay"]'))
|
|
@@ -1320,30 +1342,81 @@ class ModelerCreatePage {
|
|
|
1320
1342
|
.getByRole('button', { name: 'Save' })
|
|
1321
1343
|
.click({ timeout });
|
|
1322
1344
|
}
|
|
1323
|
-
// Step 2: deploy, unless the
|
|
1324
|
-
//
|
|
1325
|
-
// processApplicationId is defined, which it now is, so re-entering
|
|
1326
|
-
//
|
|
1327
|
-
//
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1345
|
+
// Step 2: deploy, unless the setup panel already opened with the deploy
|
|
1346
|
+
// step complete. checkExistingDeployment only runs when
|
|
1347
|
+
// processApplicationId is defined, which it now is, so re-entering Play
|
|
1348
|
+
// on an already-deployed process application legitimately has nothing to
|
|
1349
|
+
// deploy and renders the success badge instead of a Deploy button.
|
|
1350
|
+
//
|
|
1351
|
+
// `deploy-success-badge` on its own is NOT a usable "is the deploy done"
|
|
1352
|
+
// probe. DeployStepContent renders it inside the "Deploy process"
|
|
1353
|
+
// accordion item, and TestConfigurationPanel collapses that item the
|
|
1354
|
+
// instant the deploy finishes (`isDeployStepComplete` ->
|
|
1355
|
+
// `hideConfigurationOverlay()` -> `isDeployOpen` false). Carbon keeps a
|
|
1356
|
+
// collapsed accordion's content mounted, so the badge stays in the DOM
|
|
1357
|
+
// but never becomes visible again -- which is exactly the nightly
|
|
1358
|
+
// failure: the locator resolved to the badge on every poll and read
|
|
1359
|
+
// "hidden" all 89 times. DeployStepIcon carries the same state in the
|
|
1360
|
+
// accordion *heading*, which stays on screen while the item is
|
|
1361
|
+
// collapsed, and the configure panel only opens once the deploy step
|
|
1362
|
+
// completes, so treat any of the three as proof.
|
|
1363
|
+
const deployCompleteIcon = this.page.locator('[aria-label="Deployment complete"]');
|
|
1364
|
+
const isDeployComplete = async () => (await deployCompleteIcon.isVisible().catch(() => false)) ||
|
|
1365
|
+
(await deploySuccessBadge.isVisible().catch(() => false)) ||
|
|
1366
|
+
(await configureTestPanel.isVisible().catch(() => false));
|
|
1367
|
+
if (!(await isDeployComplete())) {
|
|
1368
|
+
// The Deploy button lives inside the "Deploy process" accordion item,
|
|
1369
|
+
// which expands itself once the cluster step completes. Nudge the
|
|
1370
|
+
// heading if it is still collapsed, otherwise the button is present
|
|
1371
|
+
// but hidden and the click below would time out.
|
|
1372
|
+
const deployButtonShown = await setupDeployButton
|
|
1373
|
+
.isVisible({ timeout: 30000 })
|
|
1374
|
+
.catch(() => false);
|
|
1375
|
+
if (!deployButtonShown) {
|
|
1376
|
+
const canExpandDeployStep = await deployStepHeading
|
|
1377
|
+
.isEnabled({ timeout: 5000 })
|
|
1378
|
+
.catch(() => false);
|
|
1379
|
+
if (canExpandDeployStep) {
|
|
1380
|
+
await deployStepHeading.click({ timeout });
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
// Wait for enabled; the button stays disabled until the cluster
|
|
1333
1384
|
// connection is confirmed by the backend after the Save in step 1.
|
|
1334
1385
|
await (0, test_1.expect)(setupDeployButton).toBeEnabled({ timeout: 60000 });
|
|
1335
|
-
|
|
1336
|
-
|
|
1386
|
+
// The click is retried against the completion probe rather than fired
|
|
1387
|
+
// once, because the same collapse re-renders the accordion around the
|
|
1388
|
+
// button: it detaches mid-click, which is the second nightly symptom
|
|
1389
|
+
// ("element is not visible", 58 retries, in the click call log). A
|
|
1390
|
+
// re-click can only happen while the deploy is provably still
|
|
1391
|
+
// incomplete AND the button is enabled -- a deploy in flight disables
|
|
1392
|
+
// it and a finished deploy replaces it with the badge, so this cannot
|
|
1393
|
+
// double-deploy. If the deploy never completes the loop still fails.
|
|
1394
|
+
await (0, test_1.expect)(async () => {
|
|
1395
|
+
if (await isDeployComplete()) {
|
|
1396
|
+
return;
|
|
1397
|
+
}
|
|
1398
|
+
const canClick = (await setupDeployButton.isVisible().catch(() => false)) &&
|
|
1399
|
+
(await setupDeployButton.isEnabled().catch(() => false));
|
|
1400
|
+
if (canClick) {
|
|
1401
|
+
await setupDeployButton.click({ timeout });
|
|
1402
|
+
}
|
|
1403
|
+
(0, test_1.expect)(await isDeployComplete()).toBe(true);
|
|
1404
|
+
}).toPass({ timeout: 120000, intervals: [1000, 2000, 5000] });
|
|
1337
1405
|
}
|
|
1338
|
-
// Step 3:
|
|
1339
|
-
//
|
|
1340
|
-
//
|
|
1341
|
-
//
|
|
1342
|
-
//
|
|
1343
|
-
//
|
|
1406
|
+
// Step 3: the configure-test-case step opens on its own once the deploy
|
|
1407
|
+
// step completes (TestConfigurationPanel hides the setup overlay in an
|
|
1408
|
+
// effect keyed on isDeployStepComplete). Wait for the panel that step
|
|
1409
|
+
// renders; only if it stays closed -- e.g. the panel's own
|
|
1410
|
+
// cluster-change effect fired resetDeployment and reopened setup -- fall
|
|
1411
|
+
// back to clicking the step heading, which by then is enabled.
|
|
1344
1412
|
await (0, test_1.expect)(async () => {
|
|
1345
|
-
if (await
|
|
1346
|
-
|
|
1413
|
+
if (!(await configureTestPanel.isVisible())) {
|
|
1414
|
+
const canOpenConfigureStep = await configureStepHeading
|
|
1415
|
+
.isEnabled({ timeout: 5000 })
|
|
1416
|
+
.catch(() => false);
|
|
1417
|
+
if (canOpenConfigureStep) {
|
|
1418
|
+
await configureStepHeading.click({ timeout: 15000 });
|
|
1419
|
+
}
|
|
1347
1420
|
}
|
|
1348
1421
|
await (0, test_1.expect)(configureTestPanel).toBeVisible({ timeout: 15000 });
|
|
1349
1422
|
}).toPass({ timeout: 90000 });
|