@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
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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`);
|