@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
|
-
|
|
71
|
-
|
|
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
|
-
|
|
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('
|
|
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
|
-
|
|
23
|
-
|
|
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
|
-
|
|
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) => {
|