@camunda/e2e-test-suite 0.0.1062 → 0.0.1064

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.
@@ -59,9 +59,18 @@ class ModelerHomePage {
59
59
  this.modelerPageBanner = page.getByRole('banner', {
60
60
  name: 'Camunda Modeler',
61
61
  });
62
- this.createNewProjectButton = page.getByRole('button', {
62
+ // Hub renamed this button to "Create project" on both the classic and the
63
+ // design-system shell. The legacy label is kept so the flow still works
64
+ // against Modeler builds where the rename has not shipped yet. exact:true
65
+ // keeps the new label off the split button's "Create project options".
66
+ this.createNewProjectButton = page
67
+ .getByRole('button', {
63
68
  name: 'New project',
64
- });
69
+ })
70
+ .or(page.getByRole('button', {
71
+ name: 'Create project',
72
+ exact: true,
73
+ }));
65
74
  this.projectNameInput = page.locator('[data-test="editable-input"]');
66
75
  this.formNameInput = page.locator('[data-test="editable-input"]');
67
76
  this.idpApplicationNameInput = page.getByPlaceholder('New IDP Application');
@@ -55,9 +55,18 @@ class ModelerHomePage {
55
55
  this.modelerPageBanner = page.getByRole('banner', {
56
56
  name: 'Camunda Modeler',
57
57
  });
58
- this.createNewProjectButton = page.getByRole('button', {
58
+ // Hub renamed this button to "Create project" on both the classic and the
59
+ // design-system shell. The legacy label is kept so the flow still works
60
+ // against Modeler builds where the rename has not shipped yet. exact:true
61
+ // keeps the new label off the split button's "Create project options".
62
+ this.createNewProjectButton = page
63
+ .getByRole('button', {
59
64
  name: 'New project',
60
- });
65
+ })
66
+ .or(page.getByRole('button', {
67
+ name: 'Create project',
68
+ exact: true,
69
+ }));
61
70
  this.projectNameInput = page.locator('[data-test="editable-input"]');
62
71
  this.formNameInput = page.locator('[data-test="editable-input"]');
63
72
  this.idpApplicationNameInput = page.getByPlaceholder('New IDP Application');
@@ -59,9 +59,18 @@ class ModelerHomePage {
59
59
  this.modelerPageBanner = page.getByRole('banner', {
60
60
  name: 'Camunda Modeler',
61
61
  });
62
- this.createNewProjectButton = page.getByRole('button', {
62
+ // Hub renamed this button to "Create project" on both the classic and the
63
+ // design-system shell. The legacy label is kept so the flow still works
64
+ // against Modeler builds where the rename has not shipped yet. exact:true
65
+ // keeps the new label off the split button's "Create project options".
66
+ this.createNewProjectButton = page
67
+ .getByRole('button', {
63
68
  name: 'New project',
64
- });
69
+ })
70
+ .or(page.getByRole('button', {
71
+ name: 'Create project',
72
+ exact: true,
73
+ }));
65
74
  this.projectNameInput = page.locator('[data-test="editable-input"]');
66
75
  this.formNameInput = page.locator('[data-test="editable-input"]');
67
76
  this.idpApplicationNameInput = page.getByPlaceholder('New IDP Application');
@@ -53,9 +53,18 @@ class ModelerHomePage {
53
53
  this.modelerPageBanner = page.getByRole('banner', {
54
54
  name: 'Camunda Modeler',
55
55
  });
56
- this.createNewProjectButton = page.getByRole('button', {
56
+ // Hub renamed this button to "Create project" on both the classic and the
57
+ // design-system shell. The legacy label is kept so the flow still works
58
+ // against Modeler builds where the rename has not shipped yet. exact:true
59
+ // keeps the new label off the split button's "Create project options".
60
+ this.createNewProjectButton = page
61
+ .getByRole('button', {
57
62
  name: 'New project',
58
- });
63
+ })
64
+ .or(page.getByRole('button', {
65
+ name: 'Create project',
66
+ exact: true,
67
+ }));
59
68
  this.projectNameInput = page.locator('[data-test="editable-input"]');
60
69
  this.formNameInput = page.locator('[data-test="editable-input"]');
61
70
  this.idpApplicationNameInput = page.getByPlaceholder('New IDP Application');
@@ -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
- // Skipped due to bug #61565: https://github.com/camunda/camunda/issues/61565
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') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.1062",
3
+ "version": "0.0.1064",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",