@camunda/e2e-test-suite 0.0.617 → 0.0.619

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
@@ -586,12 +586,35 @@ Before marking a PR as ready for review:
586
586
  - [ ] Change scope is appropriate — large multi-version changes are split into separate PRs
587
587
  - [ ] A relevant test workflow has been run and **passed**
588
588
  - [ ] The workflow run URL is pasted in the PR description
589
- - [ ] Documentation is updated in TestRail and Confluence if a new test case was added
589
+ - [ ] If new tests were added: add the `testrail-test-case` label after the test run passes to auto-enrich TestRail cases (see [TestRail Integration](#testrail-integration)); update Confluence if applicable
590
590
 
591
591
  ### TestRail Integration
592
592
 
593
- To ensure our test case documentation on TestRail remains up-to-date, if a PR contains updates to any test file or page file, the associated TestRail test case must be linked in the PR description.
593
+ Test case documentation in TestRail is **automatically synced** from spec files. When a PR adds or modifies test cases, the sync workflow uses AI (GitHub Copilot) to generate human-readable step descriptions directly from the Playwright test code.
594
594
 
595
- If you do not have access to TestRail, please contact the Test Automation Team to request access.
595
+ #### How to trigger the sync
596
+
597
+ **Option A — Label after a passing test run (recommended)**
598
+
599
+ 1. Run the relevant test workflow and confirm it passes.
600
+ 2. Add the `testrail-test-case` label to the PR.
601
+ 3. The [Sync TestRail Cases](https://github.com/camunda/c8-cross-component-e2e-tests/actions/workflows/sync-testrail-cases.yml) workflow fires automatically, detects the changed spec files, and enriches the matching TestRail cases with AI-generated steps.
602
+
603
+ > Re-triggering is easy: remove the label and add it again.
604
+
605
+ **Option B — Manual dispatch**
606
+
607
+ Go to [Actions → Sync TestRail Cases → Run workflow](https://github.com/camunda/c8-cross-component-e2e-tests/actions/workflows/sync-testrail-cases.yml) and provide the version and spec file path manually. Useful for one-off enrichment without opening a PR.
608
+
609
+ #### What the sync does
610
+
611
+ - Finds the matching TestRail case by automation ID (set by the JUnit reporter) or normalised title.
612
+ - Skips cases that already have steps on the correct template.
613
+ - Re-enriches cases that are on the wrong TestRail template (fixes template + steps in one pass).
614
+ - Calls the GitHub Copilot API to produce Action + Expected Result step rows from the raw Playwright code.
615
+
616
+ #### Access
617
+
618
+ If you do not have access to TestRail, contact the Test Automation Team to request access.
596
619
 
597
620
  Thank you for using the C8 Cross-Component End-to-End Test Suite for Camunda C8 full product stack e2e testing. Happy testing! If you have any questions or need assistance, feel free to reach out to the maintainers for support.
@@ -332,7 +332,19 @@ class ConsoleOrganizationPage {
332
332
  }
333
333
  async clickAuthorizations() {
334
334
  await (0, test_1.expect)(this.authorizations).toBeVisible({ timeout: 60000 });
335
- await this.authorizations.click();
335
+ // The Authorizations tab click sometimes doesn't actually switch the
336
+ // panel — the click registers but Carbon stays on Details and the
337
+ // downstream row assertions then poll forever against the wrong tab.
338
+ // Verify aria-selected after the click and retry with force if needed.
339
+ for (let i = 0; i < 3; i++) {
340
+ await this.authorizations.click({ force: i > 0 });
341
+ const selected = await this.authorizations
342
+ .getAttribute('aria-selected')
343
+ .catch(() => null);
344
+ if (selected === 'true')
345
+ return;
346
+ await this.page.waitForTimeout(1000);
347
+ }
336
348
  }
337
349
  async authorizedResourceAssertion(processId, maxRetries = 20, timeout = 60000) {
338
350
  const url = this.page.url();
@@ -354,7 +366,12 @@ class ConsoleOrganizationPage {
354
366
  }
355
367
  }
356
368
  }
357
- async authorizedResourcesAssertion(processIds, maxRetries = 30, perCheckTimeout = 30000) {
369
+ async authorizedResourcesAssertion(processIds, maxRetries = 10, perCheckTimeout = 30000) {
370
+ // Was 30 × (30s + 30s) ≈ 30 min budget — far too long, and 30 attempts
371
+ // hides whether the failure is really "still propagating" or "stuck on
372
+ // the wrong tab forever". 10 × (30s check + 10s sleep) ≈ ~6.5 min total
373
+ // gives RBA backend plenty of time to propagate while failing fast on
374
+ // genuine UI-side regressions.
358
375
  const url = this.page.url();
359
376
  for (let attempt = 0; attempt < maxRetries; attempt++) {
360
377
  try {
@@ -368,7 +385,7 @@ class ConsoleOrganizationPage {
368
385
  catch (error) {
369
386
  if (attempt < maxRetries - 1) {
370
387
  console.warn(`Attempt ${attempt + 1} failed. Error: ${error}. Retrying...`);
371
- await (0, sleep_1.sleep)(30000);
388
+ await (0, sleep_1.sleep)(10000);
372
389
  }
373
390
  else {
374
391
  throw new Error(`Assertion failed after ${maxRetries} attempts. Last error: ${error}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.617",
3
+ "version": "0.0.619",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",