@camunda/e2e-test-suite 0.0.1036 → 0.0.1038
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/README.md
CHANGED
|
@@ -415,6 +415,26 @@ See [docs/ci-failure-categories.md](docs/ci-failure-categories.md) for the full
|
|
|
415
415
|
- **C8 SM with Helm**: Tests are run against the alpha branch of the [camunda-platform-helm repository](https://github.com/camunda/camunda-platform-helm), using SNAPSHOT images for each component. This is peformed with both Elasticsearch and OpenSearch.
|
|
416
416
|
- **C8 Run**: Tests are run against the main branch of the [camunda/camunda repository](https://github.com/camunda/camunda).
|
|
417
417
|
|
|
418
|
+
## PR-Level vs Nightly Coverage (AlwaysGreen)
|
|
419
|
+
|
|
420
|
+
When a PR opens in [camunda/camunda](https://github.com/camunda/camunda) or [camunda/connectors](https://github.com/camunda/connectors), AlwaysGreen dispatches a subset of this suite against that PR's build. This is separate from this repo's own [Automatic test runs on PR](#automatic-test-runs-on-pr) above, which cover changes to the test suite itself rather than to the product.
|
|
421
|
+
|
|
422
|
+
| leg | scope | blocking | runtime |
|
|
423
|
+
| --- | --- | --- | --- |
|
|
424
|
+
| SaaS smoke | `test-setup`, `navigation`, `smoke-tests` | yes | 9–12 min |
|
|
425
|
+
| SaaS full | remaining specs (minus exclusions below) | no, until Nov 2026 | ~40–48 min |
|
|
426
|
+
| SM smoke | smoke suite | yes | — |
|
|
427
|
+
| SM full | full suite | no | — |
|
|
428
|
+
|
|
429
|
+
**Excluded from PR level entirely — nightly only.** Third-party model-endpoint specs bill an external provider on every run they're included in, so they stay out of the PR-blocking path:
|
|
430
|
+
|
|
431
|
+
- By spec file: `agentic-ai-user-flows.spec.ts`, `idp-user-flows.spec.ts`, `aws-connectors-user-flows.spec.ts` (AWS Bedrock, AgentCore, Vertex, Azure OpenAI)
|
|
432
|
+
- By tag `@ai-external`: the AI-generated-form tests inside `web-modeler-user-flows.spec.ts` (`Form.js Integration with User Task and AI Generated Form`, `Form.js Integration with AI generated Start form`)
|
|
433
|
+
|
|
434
|
+
**Kept in at PR level despite touching external systems:** Connector Secrets tests (reads from our own AWS/GCP secret managers — no model endpoint, no meaningful per-run cost) and MCP tests (run against our own cluster — no cost).
|
|
435
|
+
|
|
436
|
+
See [AlwaysGreen Iteration 2 - Alpha 5: Coverage & Optimisation](https://github.com/camunda/team-test-automation/issues/78) for the full rationale and current SaaS/SM stability data behind these boundaries.
|
|
437
|
+
|
|
418
438
|
## Test Suite Structure
|
|
419
439
|
|
|
420
440
|
The test suite is organized using the Page Object Model design pattern, where each test file contains test scenarios related to a specific component or feature of the Camunda C8 product stack. Additionally, it leverages separate page objects for each web page or component being tested.
|
|
@@ -13,6 +13,7 @@ declare class ModelerHomePage {
|
|
|
13
13
|
readonly diagramTypeDropdown: Locator;
|
|
14
14
|
readonly bpmnTemplateOption: Locator;
|
|
15
15
|
readonly formTemplateOption: Locator;
|
|
16
|
+
readonly diagramPropertiesPanel: Locator;
|
|
16
17
|
readonly projectBreadcrumb: Locator;
|
|
17
18
|
readonly workspaceBreadcrumb: Locator;
|
|
18
19
|
readonly openOrganizationsButton: Locator;
|
|
@@ -30,6 +30,9 @@ class ModelerHomePage {
|
|
|
30
30
|
diagramTypeDropdown;
|
|
31
31
|
bpmnTemplateOption;
|
|
32
32
|
formTemplateOption;
|
|
33
|
+
// Same group the spec asserts on ModelerCreatePage: it is what proves the
|
|
34
|
+
// BPMN editor opened, and clickBpmnTemplateOption() has to know that here.
|
|
35
|
+
diagramPropertiesPanel;
|
|
33
36
|
projectBreadcrumb;
|
|
34
37
|
workspaceBreadcrumb;
|
|
35
38
|
openOrganizationsButton;
|
|
@@ -77,6 +80,7 @@ class ModelerHomePage {
|
|
|
77
80
|
// day that variant ships.
|
|
78
81
|
this.bpmnTemplateOption = page.locator('[data-test="create-bpmn-diagram"]');
|
|
79
82
|
this.formTemplateOption = page.locator('[data-test="create-form"]');
|
|
83
|
+
this.diagramPropertiesPanel = page.locator('[data-group-id="group-general"]');
|
|
80
84
|
this.projectBreadcrumb = page.locator('[data-test="breadcrumb-project"]');
|
|
81
85
|
// Kept separate from projectBreadcrumb, which now means "the container my
|
|
82
86
|
// resources live in". When hub's workspaces terminology flag flips,
|
|
@@ -292,8 +296,28 @@ class ModelerHomePage {
|
|
|
292
296
|
}
|
|
293
297
|
}
|
|
294
298
|
}
|
|
299
|
+
// Confirms the editor actually opened instead of trusting the click. The
|
|
300
|
+
// create menu can close without navigating -- hub re-renders it while the
|
|
301
|
+
// container's resource list settles -- and nothing here noticed: the browser
|
|
302
|
+
// stayed on the process application page and the failure surfaced 60s later
|
|
303
|
+
// as `[data-group-id="group-general"]` / `element(s) not found` on the
|
|
304
|
+
// spec's own properties-panel assertion, which reads as an editor bug rather
|
|
305
|
+
// than a lost click. Re-open the menu and click again when the editor is not
|
|
306
|
+
// there; the 60s probe first means a merely slow canvas render is waited
|
|
307
|
+
// out rather than creating a second diagram.
|
|
295
308
|
async clickBpmnTemplateOption() {
|
|
296
|
-
await
|
|
309
|
+
await (0, test_1.expect)(async () => {
|
|
310
|
+
if (await this.becameVisible(this.diagramPropertiesPanel, 1000)) {
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
if (!(await this.becameVisible(this.bpmnTemplateOption, 5000))) {
|
|
314
|
+
await this.clickDiagramTypeDropdown();
|
|
315
|
+
}
|
|
316
|
+
// 30s rather than the old 120s: the option is proven visible above, so a
|
|
317
|
+
// longer click budget only ate the time the retry below needs.
|
|
318
|
+
await this.bpmnTemplateOption.click({ timeout: 30000 });
|
|
319
|
+
await (0, test_1.expect)(this.diagramPropertiesPanel).toBeVisible({ timeout: 60000 });
|
|
320
|
+
}).toPass({ timeout: 240000, intervals: [1000, 2000, 5000] });
|
|
297
321
|
}
|
|
298
322
|
async clickFormOption() {
|
|
299
323
|
await this.formTemplateOption.click();
|
|
@@ -499,6 +523,17 @@ class ModelerHomePage {
|
|
|
499
523
|
await this.clickMessageBanner();
|
|
500
524
|
},
|
|
501
525
|
postAction: async () => {
|
|
526
|
+
// The project tile only renders on the Modeler home page. A failure
|
|
527
|
+
// that leaves the browser inside the project -- createForm's recovery
|
|
528
|
+
// path below reloads and calls straight back in here -- makes the tile
|
|
529
|
+
// unreachable by construction, so reloading the same URL cannot help
|
|
530
|
+
// and every remaining attempt just waits out its 60s visibility
|
|
531
|
+
// timeout before the helper throws. Step back out to home first.
|
|
532
|
+
const tileVisible = await this.becameVisible(this.crossComponentProjectFolder, 2000);
|
|
533
|
+
if (!tileVisible &&
|
|
534
|
+
(await this.becameVisible(this.homeBreadcrumb, 5000))) {
|
|
535
|
+
await this.homeBreadcrumb.click({ timeout: 15000 });
|
|
536
|
+
}
|
|
502
537
|
await this.page.reload();
|
|
503
538
|
await this.page.waitForLoadState('domcontentloaded');
|
|
504
539
|
},
|