@camunda/e2e-test-suite 0.0.1010 → 0.0.1011

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.
@@ -104,9 +104,14 @@ class FormJsPage {
104
104
  return;
105
105
  }
106
106
  await scopeSelect.click();
107
- await this.deployDialog
107
+ // The scope select is a Radix UI Select: its listbox is portalled to
108
+ // document.body, OUTSIDE the dialog element, so a dialog-scoped option
109
+ // query never resolves even while the option is visible on screen. Query
110
+ // the portalled option at page scope instead; the trigger above stays
111
+ // dialog-scoped because it renders inside the dialog.
112
+ await this.page
108
113
  .getByRole('option', { name: 'Only this resource' })
109
- .or(this.deployDialog.getByText('Only this resource', { exact: true }))
114
+ .or(this.page.getByText('Only this resource', { exact: true }))
110
115
  .first()
111
116
  .click({ timeout: 30000 });
112
117
  }
@@ -56,8 +56,10 @@ class NavigationPage {
56
56
  });
57
57
  // TODO: Drop support for Identity once we fully rename it to Admin
58
58
  this.identityPageBanner = page
59
+ .getByRole('link', { name: 'Camunda Admin', exact: true })
60
+ .or(page
59
61
  .locator('a')
60
- .filter({ hasText: /^Camunda logo\s*(Identity|Admin)$/ })
62
+ .filter({ hasText: /^Camunda logo\s*(Identity|Admin)$/ }))
61
63
  .first();
62
64
  this.managementIdentityPageBanner = page
63
65
  .locator('a')
@@ -19,34 +19,57 @@ class OCIdentityHomePage {
19
19
  constructor(page) {
20
20
  this.page = page;
21
21
  this.adminBanner = page
22
- .locator('a')
23
- .filter({ hasText: /^Camunda logo\s*Admin$/ })
22
+ .getByRole('link', { name: 'Camunda Admin', exact: true })
23
+ .or(page.locator('a').filter({ hasText: /^Camunda logo\s*Admin$/ }))
24
24
  .first();
25
25
  this.groupsTab = page
26
+ .getByRole('navigation', { name: 'Main navigation' })
27
+ .getByRole('link', { name: 'Groups', exact: true })
28
+ .or(page
26
29
  .getByRole('banner')
27
30
  .locator('a')
28
- .filter({ hasText: /^Groups$/ });
31
+ .filter({ hasText: /^Groups$/ }))
32
+ .first();
29
33
  this.mappingRulesTab = page
34
+ .getByRole('navigation', { name: 'Main navigation' })
35
+ .getByRole('link', { name: 'Mapping rules', exact: true })
36
+ .or(page
30
37
  .getByRole('banner')
31
38
  .locator('a')
32
- .filter({ hasText: /^Mapping rules$/ })
39
+ .filter({ hasText: /^Mapping rules$/ }))
33
40
  .first();
34
41
  this.tenantsTab = page
42
+ .getByRole('navigation', { name: 'Main navigation' })
43
+ .getByRole('link', { name: 'Tenants', exact: true })
44
+ .or(page
35
45
  .getByRole('banner')
36
46
  .locator('a')
37
- .filter({ hasText: /^Tenants$/ });
47
+ .filter({ hasText: /^Tenants$/ }))
48
+ .first();
38
49
  this.rolesTab = page
50
+ .getByRole('navigation', { name: 'Main navigation' })
51
+ .getByRole('link', { name: 'Roles', exact: true })
52
+ .or(page
39
53
  .getByRole('banner')
40
54
  .locator('a')
41
- .filter({ hasText: 'Roles' });
55
+ .filter({ hasText: /^Roles$/ }))
56
+ .first();
42
57
  this.authorizationsTab = page
58
+ .getByRole('navigation', { name: 'Main navigation' })
59
+ .getByRole('link', { name: 'Authorizations', exact: true })
60
+ .or(page
43
61
  .getByRole('banner')
44
62
  .locator('a')
45
- .filter({ hasText: /^Authorizations$/ });
63
+ .filter({ hasText: /^Authorizations$/ }))
64
+ .first();
46
65
  this.clusterVariablesTab = page
66
+ .getByRole('navigation', { name: 'Main navigation' })
67
+ .getByRole('link', { name: 'Cluster variables', exact: true })
68
+ .or(page
47
69
  .getByRole('banner')
48
70
  .locator('a')
49
- .filter({ hasText: /Cluster variables/i });
71
+ .filter({ hasText: /Cluster variables/i }))
72
+ .first();
50
73
  this.licenseKeyTagNonProduction = page
51
74
  .getByText('Non-production license')
52
75
  .first();
@@ -87,9 +87,12 @@ class OCIdentityRolesPage {
87
87
  });
88
88
  this.adminRole = page.getByRole('cell', { name: 'admin', exact: true });
89
89
  this.rolesNavTab = page
90
+ .getByRole('navigation', { name: 'Main navigation' })
91
+ .getByRole('link', { name: 'Roles', exact: true })
92
+ .or(page
90
93
  .getByRole('banner')
91
94
  .locator('a')
92
- .filter({ hasText: /^Roles$/ })
95
+ .filter({ hasText: /^Roles$/ }))
93
96
  .first();
94
97
  this.assignUserButton = page.getByRole('button', { name: 'Assign user' });
95
98
  this.usernameTextBox = page.getByRole('textbox', { name: 'Username' });
@@ -8,9 +8,18 @@ class SettingsPage {
8
8
  openUserSidebarButton;
9
9
  constructor(page) {
10
10
  this.page = page;
11
- this.openSettingsButton = page.getByLabel('Open Settings');
12
- this.openUserSidebarButton = page.getByLabel('Open User Sidebar');
13
- this.logoutButton = page.getByRole('button', { name: 'Log out' });
11
+ this.openSettingsButton = page
12
+ .getByRole('button', { name: /^User menu/ })
13
+ .or(page.getByLabel('Open Settings'))
14
+ .first();
15
+ this.openUserSidebarButton = page
16
+ .getByRole('button', { name: /^User menu/ })
17
+ .or(page.getByLabel('Open User Sidebar'))
18
+ .first();
19
+ this.logoutButton = page
20
+ .getByRole('menuitem', { name: /log out/i })
21
+ .or(page.getByRole('button', { name: 'Log out' }))
22
+ .first();
14
23
  }
15
24
  async clickOpenSettingsButton() {
16
25
  await this.openSettingsButton.click({ timeout: 120000 });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.1010",
3
+ "version": "0.0.1011",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",