@camunda/e2e-test-suite 0.0.1223 → 0.0.1225

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.
@@ -11,6 +11,7 @@ declare class OperateHomePage {
11
11
  readonly licenseKeyTagNonProduction: Locator;
12
12
  readonly licenseKeyTagProduction: Locator;
13
13
  readonly processPageHeading: Locator;
14
+ readonly processVersionDropdown: Locator;
14
15
  constructor(page: Page);
15
16
  clickProcessesTab(): Promise<void>;
16
17
  closeInformationDialog(): Promise<void>;
@@ -20,5 +21,6 @@ declare class OperateHomePage {
20
21
  fillVariableValueInput(value: string): Promise<void>;
21
22
  clickSaveVariableButton(): Promise<void>;
22
23
  openProcess(processName: string): Promise<void>;
24
+ selectProcessVersion(version?: string): Promise<void>;
23
25
  }
24
26
  export { OperateHomePage };
@@ -17,6 +17,7 @@ class OperateHomePage {
17
17
  licenseKeyTagNonProduction;
18
18
  licenseKeyTagProduction;
19
19
  processPageHeading;
20
+ processVersionDropdown;
20
21
  constructor(page) {
21
22
  this.page = page;
22
23
  this.operateBanner = page.getByRole('link', { name: 'Camunda logo Operate' });
@@ -41,6 +42,9 @@ class OperateHomePage {
41
42
  this.processPageHeading = page
42
43
  .getByTestId('expanded-panel')
43
44
  .getByRole('heading', { name: 'Process' });
45
+ this.processVersionDropdown = page.getByRole('combobox', {
46
+ name: 'Select a Process Version',
47
+ });
44
48
  }
45
49
  async clickProcessesTab() {
46
50
  await (0, clickLocatorWithRetry_1.clickLocatorWithRetry)(this.page, this.processesTab, {
@@ -105,5 +109,25 @@ class OperateHomePage {
105
109
  async openProcess(processName) {
106
110
  await this.page.getByText(processName).click();
107
111
  }
112
+ // The Processes page renders the diagram (and its element state overlays)
113
+ // only while a single version is selected; the Dashboard always links with
114
+ // processDefinitionVersion=all.
115
+ async selectProcessVersion(version = '1') {
116
+ await (0, test_1.expect)(this.processVersionDropdown).toBeEnabled({ timeout: 90000 });
117
+ await (0, clickLocatorWithRetry_1.clickLocatorWithRetry)(this.page, this.processVersionDropdown, {
118
+ totalTimeout: 60000,
119
+ visibilityTimeout: 15000,
120
+ });
121
+ await (0, clickLocatorWithRetry_1.clickLocatorWithRetry)(this.page, this.page.getByRole('option', { name: version, exact: true }), {
122
+ totalTimeout: 60000,
123
+ visibilityTimeout: 15000,
124
+ preAction: async () => {
125
+ if ((await this.processVersionDropdown.getAttribute('aria-expanded')) !== 'true') {
126
+ await this.processVersionDropdown.click({ timeout: 15000 });
127
+ }
128
+ },
129
+ });
130
+ await (0, test_1.expect)(this.processVersionDropdown).toHaveAttribute('title', version, { timeout: 60000 });
131
+ }
108
132
  }
109
133
  exports.OperateHomePage = OperateHomePage;
@@ -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) => {
@@ -259,6 +259,7 @@ SM_8_9_1.test.describe('HTO User Flow Tests', () => {
259
259
  await SM_8_9_1.test.step('Navigate to Operate and Assert Process Instance', async () => {
260
260
  await navigationPage.goToOperate(undefined, credentials2);
261
261
  await operateHomePage.openProcess(processName);
262
+ await operateHomePage.selectProcessVersion('1');
262
263
  await operateProcessInstancePage.activeUserTaskIconVisibleAssertion(`state-overlay-${userTaskName}1-active`);
263
264
  await operateProcessInstancePage.activeUserTaskIconNotVisibleAssertion(`state-overlay-${userTaskName}2-active`);
264
265
  });
@@ -357,6 +358,7 @@ SM_8_9_1.test.describe('HTO User Flow Tests', () => {
357
358
  await SM_8_9_1.test.step('Navigate to Operate and Assert Process Instance', async () => {
358
359
  await navigationPage.goToOperate(undefined, credentials);
359
360
  await operateHomePage.openProcess(processName);
361
+ await operateHomePage.selectProcessVersion('1');
360
362
  await operateProcessInstancePage.activeUserTaskIconVisibleAssertion(`state-overlay-${userTaskName}1-active`);
361
363
  await operateProcessInstancePage.activeUserTaskIconVisibleAssertion(`state-overlay-${userTaskName}2-active`);
362
364
  await operateProcessInstancePage.activeUserTaskIconNotVisibleAssertion(`state-overlay-${userTaskName}3-active`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.1223",
3
+ "version": "0.0.1225",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",