@camunda/e2e-test-suite 0.0.1222 → 0.0.1224

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.
@@ -67,9 +67,16 @@ class NavigationPage {
67
67
  .and(page.locator(`[href$="${NORMALIZED_ORCHESTRATION_CONTEXT_PATH}/tasklist"]`)))
68
68
  .or(page.getByRole('link', { name: 'Camunda logo Tasklist' }))
69
69
  .first();
70
- this.optimizePageBanner = page.getByRole('link', {
71
- name: 'Camunda logo Optimize',
72
- });
70
+ // Optimize renders the Design System header (HeaderV2) whenever the nav
71
+ // V2 client config is on -- its home link is aria-label="Camunda
72
+ // Optimize" wrapping an aria-hidden logo svg, so the legacy shell's
73
+ // "Camunda logo Optimize" text no longer exists. Match either so the
74
+ // banner resolves with the flag on or off (mirrors operatePageBanner and
75
+ // pages/8.10/OptimizeHomePage.optimizeBanner).
76
+ this.optimizePageBanner = page
77
+ .getByRole('link', { name: 'Camunda logo Optimize' })
78
+ .or(page.getByRole('link', { name: 'Camunda Optimize', exact: true }))
79
+ .first();
73
80
  // TODO: Drop support for Identity once we fully rename it to Admin
74
81
  this.identityPageBanner = page
75
82
  .getByRole('link', { name: 'Camunda Admin', exact: true })
@@ -7,7 +7,13 @@ class OptimizeDashboardPage {
7
7
  filterTable;
8
8
  constructor(page) {
9
9
  this.page = page;
10
- this.filterTable = page.getByPlaceholder('Filter table');
10
+ // Optimize's nav V2 shell renames the process-overview search input's
11
+ // placeholder from "Filter table" to "Search for name...", so the legacy
12
+ // placeholder resolves nothing there. Match either.
13
+ this.filterTable = page
14
+ .getByPlaceholder('Filter table')
15
+ .or(page.getByPlaceholder('Search for name'))
16
+ .first();
11
17
  }
12
18
  async clickFilterTable() {
13
19
  await this.filterTable.click({ timeout: 180000 });
@@ -14,14 +14,25 @@ class OptimizeHomePage {
14
14
  licenseKeyTagProduction;
15
15
  constructor(page) {
16
16
  this.page = page;
17
+ // Nav V2 also moved the app links out of the header and into a sidebar
18
+ // (`<nav aria-label="Main navigation">`), so scoping to role=banner
19
+ // resolves nothing there. Match the sidebar and keep the legacy
20
+ // header-scoped lookup as a fallback so both shells resolve.
17
21
  this.collectionsLink = page
18
- .getByRole('banner')
19
- .getByRole('link', { name: 'Collections' });
22
+ .getByRole('navigation', { name: 'Main navigation' })
23
+ .getByRole('link', { name: 'Collections' })
24
+ .or(page.getByRole('banner').getByRole('link', { name: 'Collections' }))
25
+ .first();
20
26
  this.dashboardLink = page.getByRole('link', { name: 'Dashboard' });
21
27
  this.modalCloseButton = page.getByText('Close', { exact: true });
22
- this.optimizeBanner = page.getByRole('link', {
23
- name: 'Camunda logo Optimize',
24
- });
28
+ // Same nav V2 header drift as NavigationPage.optimizePageBanner: the
29
+ // Design System logo link is aria-label="Camunda Optimize", so the legacy
30
+ // shell's combined "Camunda logo Optimize" name no longer exists. Match
31
+ // either shell.
32
+ this.optimizeBanner = page
33
+ .getByRole('link', { name: 'Camunda logo Optimize' })
34
+ .or(page.getByRole('link', { name: 'Camunda Optimize', exact: true }))
35
+ .first();
25
36
  this.openUserSettingsButton = page.getByLabel('Open User');
26
37
  this.logoutButton = page.getByRole('button', { name: 'Logout' });
27
38
  this.licenseKeyTagNonProduction = page
@@ -1,5 +1,9 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
3
7
  const test_1 = require("@playwright/test");
4
8
  const _8_8_1 = require("../../fixtures/8.8");
5
9
  const _setup_1 = require("../../test-setup.js");
@@ -43,16 +47,36 @@ _8_8_1.test.describe('Cluster Setup Tests', () => {
43
47
  }
44
48
  await clusterPage.clickClusterLink(clusterName);
45
49
  await clusterDetailsPage.assertComponentsHealth();
46
- if (process.env.IS_AG !== 'true' && process.env.IS_MIGRATION !== 'true') {
50
+ // API-client creation is needed whenever this run will also exercise the
51
+ // full-suite pass: many of those specs call the Zeebe REST API directly
52
+ // and need CAMUNDA_OPTIMIZE_BASE_URL for Optimize session login, even
53
+ // though IS_AG=true skips this for the usual smoke-only case (mirrors
54
+ // tests/8.10/test-setup.spec.ts).
55
+ if ((process.env.IS_AG !== 'true' && process.env.IS_MIGRATION !== 'true') ||
56
+ process.env.RUN_FULL_SUITE === 'true') {
47
57
  await clusterDetailsPage.clickAPITab();
48
- await clusterDetailsPage.createAPIClientAndReturnVariables(apiClientName);
58
+ const zeebeCredentials = await clusterDetailsPage.createAPIClientAndReturnVariables(apiClientName);
49
59
  await clusterDetailsPage.clickCloseModalButton();
50
- await clusterPage.clickConnectorSecretsTab(clusterName);
51
- await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.awsSecretsValues);
52
- await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.openAiSecretsValues);
53
- await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.gcpSecretsValues);
54
- await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.azureSecretsValues);
55
- await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.connectorSecretsValues);
60
+ if (process.env.RUN_FULL_SUITE === 'true') {
61
+ // Written to disk, not just process.env: the full-suite pass runs as
62
+ // a separate `npm run test` process (see run-tests-smoke-int's
63
+ // action.yml) that does not inherit this process's env mutations.
64
+ // mode 0o600: this file holds a live Zeebe API client secret.
65
+ fs_1.default.writeFileSync('cluster-credentials.json', JSON.stringify(zeebeCredentials), { mode: 0o600 });
66
+ }
67
+ // Deliberately NOT extended to RUN_FULL_SUITE like the API client
68
+ // above: connector-secrets creation is on test-setup's blocking
69
+ // critical path, and its own transient flakiness would take down
70
+ // cluster provisioning entirely (see the identical comment in
71
+ // tests/8.10/test-setup.spec.ts).
72
+ if (process.env.IS_AG !== 'true' && process.env.IS_MIGRATION !== 'true') {
73
+ await clusterPage.clickConnectorSecretsTab(clusterName);
74
+ await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.awsSecretsValues);
75
+ await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.openAiSecretsValues);
76
+ await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.gcpSecretsValues);
77
+ await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.azureSecretsValues);
78
+ await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.connectorSecretsValues);
79
+ }
56
80
  }
57
81
  });
58
82
  (0, _8_8_1.test)('Create AWS Cluster', async ({ page, loginPage, homePage, clusterPage, clusterDetailsPage, clusterSecretsPage, }, testInfo) => {
@@ -1,5 +1,9 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
3
7
  const test_1 = require("@playwright/test");
4
8
  const _8_9_1 = require("../../fixtures/8.9");
5
9
  const _setup_1 = require("../../test-setup.js");
@@ -38,16 +42,35 @@ _8_9_1.test.describe('Cluster Setup Tests', () => {
38
42
  }
39
43
  await clusterPage.clickClusterLink(clusterName);
40
44
  await clusterDetailsPage.assertComponentsHealth();
41
- if (process.env.IS_AG !== 'true') {
45
+ // API-client creation is needed whenever this run will also exercise the
46
+ // full-suite pass: many of those specs call the Zeebe REST API directly
47
+ // and need CAMUNDA_OPTIMIZE_BASE_URL for Optimize session login, even
48
+ // though IS_AG=true skips this for the usual smoke-only case (mirrors
49
+ // tests/8.10/test-setup.spec.ts).
50
+ if (process.env.IS_AG !== 'true' || process.env.RUN_FULL_SUITE === 'true') {
42
51
  await clusterDetailsPage.clickAPITab();
43
- await clusterDetailsPage.createAPIClientAndReturnVariables(apiClientName);
52
+ const zeebeCredentials = await clusterDetailsPage.createAPIClientAndReturnVariables(apiClientName);
44
53
  await clusterDetailsPage.clickCloseModalButton();
45
- await clusterPage.clickConnectorSecretsTab(clusterName);
46
- await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.awsSecretsValues);
47
- await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.openAiSecretsValues);
48
- await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.gcpSecretsValues);
49
- await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.azureSecretsValues);
50
- await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.connectorSecretsValues);
54
+ if (process.env.RUN_FULL_SUITE === 'true') {
55
+ // Written to disk, not just process.env: the full-suite pass runs as
56
+ // a separate `npm run test` process (see run-tests-smoke-int's
57
+ // action.yml) that does not inherit this process's env mutations.
58
+ // mode 0o600: this file holds a live Zeebe API client secret.
59
+ fs_1.default.writeFileSync('cluster-credentials.json', JSON.stringify(zeebeCredentials), { mode: 0o600 });
60
+ }
61
+ // Deliberately NOT extended to RUN_FULL_SUITE like the API client
62
+ // above: connector-secrets creation is on test-setup's blocking
63
+ // critical path, and its own transient flakiness would take down
64
+ // cluster provisioning entirely (see the identical comment in
65
+ // tests/8.10/test-setup.spec.ts).
66
+ if (process.env.IS_AG !== 'true') {
67
+ await clusterPage.clickConnectorSecretsTab(clusterName);
68
+ await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.awsSecretsValues);
69
+ await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.openAiSecretsValues);
70
+ await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.gcpSecretsValues);
71
+ await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.azureSecretsValues);
72
+ await clusterSecretsPage.createSetOfSecrets(clusterName, connectorSecrets_1.connectorSecretsValues);
73
+ }
51
74
  }
52
75
  });
53
76
  (0, _8_9_1.test)('Create Agentic Orchestration Cluster @tasklistV2', async ({ page, loginPage, homePage, clusterPage, clusterDetailsPage, clusterSecretsPage, }, testInfo) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.1222",
3
+ "version": "0.0.1224",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",