@camunda/e2e-test-suite 0.0.1063 → 0.0.1065
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.
|
@@ -1047,10 +1047,17 @@ class ModelerCreatePage {
|
|
|
1047
1047
|
// 1. Connect cluster → "Configure environment" modal → select cluster → Save
|
|
1048
1048
|
// 2. Deploy process → wait for success banner
|
|
1049
1049
|
// 3. Configure test case
|
|
1050
|
+
// The "Test Studio" rebrand gave this button the stable test id
|
|
1051
|
+
// `test-configuration-deploy-button` (confirmed in the failing run's trace
|
|
1052
|
+
// DOM). Prefer it, and keep the label-scoped locator as a fallback for
|
|
1053
|
+
// older modeler builds that render the button without a test id.
|
|
1050
1054
|
const setupDeployButton = this.page
|
|
1055
|
+
.getByTestId('test-configuration-deploy-button')
|
|
1056
|
+
.or(this.page
|
|
1051
1057
|
.getByText('Deploy process')
|
|
1052
1058
|
.locator('..')
|
|
1053
|
-
.getByRole('button', { name: 'Deploy' })
|
|
1059
|
+
.getByRole('button', { name: 'Deploy' }))
|
|
1060
|
+
.first();
|
|
1054
1061
|
// Both attributes on this button have been renamed by camunda-hub, in
|
|
1055
1062
|
// separate commits: a90fd06 changed the label from "Configure scenario" to
|
|
1056
1063
|
// "Configure test case", and b3958a1649 (#27259, 2026-08-07) then changed
|
|
@@ -1081,7 +1088,18 @@ class ModelerCreatePage {
|
|
|
1081
1088
|
// still about to appear. ConfigureTestPanel returns null for as long as the
|
|
1082
1089
|
// overlay is up, so the Start button never existed and
|
|
1083
1090
|
// clickStartInstanceButton burned its entire retry budget looking for it.
|
|
1084
|
-
|
|
1091
|
+
// camunda-hub's "Play" -> "Test Studio" rebrand renamed this container's
|
|
1092
|
+
// data-test from `play-configuration-overlay` to
|
|
1093
|
+
// `test-studio-configuration-overlay` (confirmed in the failing run's trace
|
|
1094
|
+
// DOM), so the old gate matched nothing and timed out. Anchor on the new
|
|
1095
|
+
// data-test, keep the legacy attribute for older modeler builds, and fall
|
|
1096
|
+
// back to the "Setup environment" panel title. This locator means "the
|
|
1097
|
+
// setup panel is still on screen".
|
|
1098
|
+
const configurationOverlay = this.page
|
|
1099
|
+
.locator('[data-test="test-studio-configuration-overlay"]')
|
|
1100
|
+
.or(this.page.locator('[data-test="play-configuration-overlay"]'))
|
|
1101
|
+
.or(this.page.getByText('Setup environment'))
|
|
1102
|
+
.first();
|
|
1085
1103
|
const configureTestPanel = this.page.getByTestId('configure-test-panel');
|
|
1086
1104
|
await (0, test_1.expect)(configurationOverlay
|
|
1087
1105
|
.or(this.continueToPlayButton)
|
|
@@ -46,12 +46,20 @@ class OCIdentityRolesPage {
|
|
|
46
46
|
this.assignMappingRuleButton = page.getByRole('button', {
|
|
47
47
|
name: /^(Assign mapping rule|assignMapping)$/,
|
|
48
48
|
});
|
|
49
|
-
this.mappingSearchBox = page.getByRole('searchbox', {
|
|
50
|
-
name: 'Search by mapping rule ID',
|
|
51
|
-
});
|
|
52
49
|
this.assignMappingModal = page.getByRole('dialog', {
|
|
53
50
|
name: 'Assign mapping rule',
|
|
54
51
|
});
|
|
52
|
+
// The design-system modal's search field is a cmdk combobox
|
|
53
|
+
// (role="combobox"), not the searchbox the pre design-system modal
|
|
54
|
+
// rendered; the Mapping rules list page keeps a page-level searchbox with
|
|
55
|
+
// the same accessible name, so scope this to the dialog and accept either
|
|
56
|
+
// role.
|
|
57
|
+
this.mappingSearchBox = this.assignMappingModal
|
|
58
|
+
.getByRole('combobox', { name: 'Search by mapping rule ID' })
|
|
59
|
+
.or(this.assignMappingModal.getByRole('searchbox', {
|
|
60
|
+
name: 'Search by mapping rule ID',
|
|
61
|
+
}))
|
|
62
|
+
.first();
|
|
55
63
|
this.createRoleButton = page.getByRole('button', {
|
|
56
64
|
name: /create role/i,
|
|
57
65
|
});
|
|
@@ -125,19 +133,22 @@ class OCIdentityRolesPage {
|
|
|
125
133
|
async assignMappingRuleToRole(roleId, mappingId) {
|
|
126
134
|
const maxRetries = 3;
|
|
127
135
|
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
128
|
-
await this.clickRole(roleId);
|
|
129
|
-
// After clicking the role, the detail page may show a 404 if the role
|
|
130
|
-
// was just created and the backend hasn't fully provisioned it yet.
|
|
131
|
-
const gotNotFound = await this.notFoundText
|
|
132
|
-
.isVisible({ timeout: 3000 })
|
|
133
|
-
.catch(() => false);
|
|
134
|
-
if (gotNotFound) {
|
|
135
|
-
console.warn(`Attempt ${attempt + 1}: Role detail page returned 404 for "${roleId}", retrying...`);
|
|
136
|
-
await this.page.goBack();
|
|
137
|
-
await (0, sleep_1.sleep)(3000);
|
|
138
|
-
continue;
|
|
139
|
-
}
|
|
140
136
|
try {
|
|
137
|
+
// Inside the try so a retry that lands on the role detail page rather
|
|
138
|
+
// than the roles list reports the failure that caused it, instead of
|
|
139
|
+
// masking it as a roles-table timeout from this lookup.
|
|
140
|
+
await this.clickRole(roleId);
|
|
141
|
+
// After clicking the role, the detail page may show a 404 if the role
|
|
142
|
+
// was just created and the backend hasn't fully provisioned it yet.
|
|
143
|
+
const gotNotFound = await this.notFoundText
|
|
144
|
+
.isVisible({ timeout: 3000 })
|
|
145
|
+
.catch(() => false);
|
|
146
|
+
if (gotNotFound) {
|
|
147
|
+
console.warn(`Attempt ${attempt + 1}: Role detail page returned 404 for "${roleId}", retrying...`);
|
|
148
|
+
await this.page.goBack();
|
|
149
|
+
await (0, sleep_1.sleep)(3000);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
141
152
|
await this.clickMappingRulesTab();
|
|
142
153
|
await (0, test_1.expect)(this.assignMappingRuleButton).toBeVisible({
|
|
143
154
|
timeout: 60000,
|
|
@@ -122,8 +122,7 @@ SM_8_10_1.test.describe('Identity User Flow Tests', () => {
|
|
|
122
122
|
});
|
|
123
123
|
});
|
|
124
124
|
});
|
|
125
|
-
|
|
126
|
-
SM_8_10_1.test.skip('User Roles User Flow on Orchestration Cluster', async ({ page, navigationPage, ocIdentityMappingRulesPage, ocIdentityHomePage, ocIdentityRolesPage, taskPanelPage, operateHomePage, settingsPage, browser, keycloakLoginPage, keycloakAdminPage, managementIdentityPage, }) => {
|
|
125
|
+
(0, SM_8_10_1.test)('User Roles User Flow on Orchestration Cluster', async ({ page, navigationPage, ocIdentityMappingRulesPage, ocIdentityHomePage, ocIdentityRolesPage, taskPanelPage, operateHomePage, settingsPage, browser, keycloakLoginPage, keycloakAdminPage, managementIdentityPage, }) => {
|
|
127
126
|
if (node_process_1.default.env.IS_RBA === 'true' ||
|
|
128
127
|
node_process_1.default.env.IS_MT === 'true' ||
|
|
129
128
|
node_process_1.default.env.IS_LICENSE_KEY === 'true') {
|