@camunda/e2e-test-suite 0.0.202 → 0.0.203

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.
Files changed (120) hide show
  1. package/README.md +1 -0
  2. package/dist/fixtures/8.10.d.ts +75 -0
  3. package/dist/fixtures/8.10.js +187 -0
  4. package/dist/pages/8.10/AppsPage.d.ts +38 -0
  5. package/dist/pages/8.10/AppsPage.js +398 -0
  6. package/dist/pages/8.10/Authorization.d.ts +31 -0
  7. package/dist/pages/8.10/Authorization.js +143 -0
  8. package/dist/pages/8.10/ClientCredentialsDetailsPage.d.ts +12 -0
  9. package/dist/pages/8.10/ClientCredentialsDetailsPage.js +36 -0
  10. package/dist/pages/8.10/ClusterDetailsPage.d.ts +81 -0
  11. package/dist/pages/8.10/ClusterDetailsPage.js +475 -0
  12. package/dist/pages/8.10/ClusterPage.d.ts +63 -0
  13. package/dist/pages/8.10/ClusterPage.js +349 -0
  14. package/dist/pages/8.10/ClusterSecretsPage.d.ts +46 -0
  15. package/dist/pages/8.10/ClusterSecretsPage.js +219 -0
  16. package/dist/pages/8.10/ConnectorMarketplacePage.d.ts +19 -0
  17. package/dist/pages/8.10/ConnectorMarketplacePage.js +56 -0
  18. package/dist/pages/8.10/ConnectorSettingsPage.d.ts +38 -0
  19. package/dist/pages/8.10/ConnectorSettingsPage.js +142 -0
  20. package/dist/pages/8.10/ConnectorTemplatePage.d.ts +11 -0
  21. package/dist/pages/8.10/ConnectorTemplatePage.js +34 -0
  22. package/dist/pages/8.10/ConsoleOrganizationPage.d.ts +76 -0
  23. package/dist/pages/8.10/ConsoleOrganizationPage.js +402 -0
  24. package/dist/pages/8.10/FormJsPage.d.ts +28 -0
  25. package/dist/pages/8.10/FormJsPage.js +85 -0
  26. package/dist/pages/8.10/HomePage.d.ts +27 -0
  27. package/dist/pages/8.10/HomePage.js +88 -0
  28. package/dist/pages/8.10/IdpCreatePage.d.ts +81 -0
  29. package/dist/pages/8.10/IdpCreatePage.js +355 -0
  30. package/dist/pages/8.10/LoginPage.d.ts +42 -0
  31. package/dist/pages/8.10/LoginPage.js +93 -0
  32. package/dist/pages/8.10/ModelerCreatePage.d.ts +224 -0
  33. package/dist/pages/8.10/ModelerCreatePage.js +1166 -0
  34. package/dist/pages/8.10/ModelerHomePage.d.ts +54 -0
  35. package/dist/pages/8.10/ModelerHomePage.js +235 -0
  36. package/dist/pages/8.10/ModelerUserInvitePage.d.ts +29 -0
  37. package/dist/pages/8.10/ModelerUserInvitePage.js +136 -0
  38. package/dist/pages/8.10/OCIdentityAuthorizationsPage.d.ts +11 -0
  39. package/dist/pages/8.10/OCIdentityAuthorizationsPage.js +32 -0
  40. package/dist/pages/8.10/OCIdentityGroupsPage.d.ts +38 -0
  41. package/dist/pages/8.10/OCIdentityGroupsPage.js +166 -0
  42. package/dist/pages/8.10/OCIdentityHomePage.d.ts +18 -0
  43. package/dist/pages/8.10/OCIdentityHomePage.js +57 -0
  44. package/dist/pages/8.10/OCIdentityMappingRulesPage.d.ts +23 -0
  45. package/dist/pages/8.10/OCIdentityMappingRulesPage.js +124 -0
  46. package/dist/pages/8.10/OCIdentityRolesPage.d.ts +40 -0
  47. package/dist/pages/8.10/OCIdentityRolesPage.js +182 -0
  48. package/dist/pages/8.10/OperateHomePage.d.ts +23 -0
  49. package/dist/pages/8.10/OperateHomePage.js +73 -0
  50. package/dist/pages/8.10/OperateProcessInstancePage.d.ts +23 -0
  51. package/dist/pages/8.10/OperateProcessInstancePage.js +94 -0
  52. package/dist/pages/8.10/OperateProcessesPage.d.ts +25 -0
  53. package/dist/pages/8.10/OperateProcessesPage.js +103 -0
  54. package/dist/pages/8.10/OptimizeCollectionsPage.d.ts +17 -0
  55. package/dist/pages/8.10/OptimizeCollectionsPage.js +68 -0
  56. package/dist/pages/8.10/OptimizeDashboardPage.d.ts +11 -0
  57. package/dist/pages/8.10/OptimizeDashboardPage.js +65 -0
  58. package/dist/pages/8.10/OptimizeHomePage.d.ts +13 -0
  59. package/dist/pages/8.10/OptimizeHomePage.js +55 -0
  60. package/dist/pages/8.10/OptimizeReportPage.d.ts +48 -0
  61. package/dist/pages/8.10/OptimizeReportPage.js +159 -0
  62. package/dist/pages/8.10/PlayPage.d.ts +14 -0
  63. package/dist/pages/8.10/PlayPage.js +68 -0
  64. package/dist/pages/8.10/SettingsPage.d.ts +10 -0
  65. package/dist/pages/8.10/SettingsPage.js +43 -0
  66. package/dist/pages/8.10/SignUpPage.d.ts +42 -0
  67. package/dist/pages/8.10/SignUpPage.js +134 -0
  68. package/dist/pages/8.10/TaskDetailsPage.d.ts +75 -0
  69. package/dist/pages/8.10/TaskDetailsPage.js +269 -0
  70. package/dist/pages/8.10/TaskPanelPage.d.ts +21 -0
  71. package/dist/pages/8.10/TaskPanelPage.js +93 -0
  72. package/dist/pages/8.10/TaskProcessesPage.d.ts +13 -0
  73. package/dist/pages/8.10/TaskProcessesPage.js +68 -0
  74. package/dist/pages/8.10/UtilitiesPage.d.ts +47 -0
  75. package/dist/pages/8.10/UtilitiesPage.js +489 -0
  76. package/dist/tests/8.10/access-user-role-management.spec.d.ts +1 -0
  77. package/dist/tests/8.10/access-user-role-management.spec.js +323 -0
  78. package/dist/tests/8.10/agentic-ai-user-flows.spec.d.ts +1 -0
  79. package/dist/tests/8.10/agentic-ai-user-flows.spec.js +185 -0
  80. package/dist/tests/8.10/api-tests-v2.spec.d.ts +1 -0
  81. package/dist/tests/8.10/api-tests-v2.spec.js +20 -0
  82. package/dist/tests/8.10/aws-cluster-user-flows.spec.d.ts +1 -0
  83. package/dist/tests/8.10/aws-cluster-user-flows.spec.js +178 -0
  84. package/dist/tests/8.10/cluster-variables.spec.d.ts +1 -0
  85. package/dist/tests/8.10/cluster-variables.spec.js +70 -0
  86. package/dist/tests/8.10/connectors-user-flows.spec.d.ts +1 -0
  87. package/dist/tests/8.10/connectors-user-flows.spec.js +479 -0
  88. package/dist/tests/8.10/console-user-flows.spec.d.ts +1 -0
  89. package/dist/tests/8.10/console-user-flows.spec.js +187 -0
  90. package/dist/tests/8.10/hto-user-flows.spec.d.ts +1 -0
  91. package/dist/tests/8.10/hto-user-flows.spec.js +471 -0
  92. package/dist/tests/8.10/idp-user-flows.spec.d.ts +1 -0
  93. package/dist/tests/8.10/idp-user-flows.spec.js +214 -0
  94. package/dist/tests/8.10/login-negative-tests.spec.d.ts +1 -0
  95. package/dist/tests/8.10/login-negative-tests.spec.js +29 -0
  96. package/dist/tests/8.10/login.spec.d.ts +1 -0
  97. package/dist/tests/8.10/login.spec.js +26 -0
  98. package/dist/tests/8.10/navigation.spec.d.ts +1 -0
  99. package/dist/tests/8.10/navigation.spec.js +65 -0
  100. package/dist/tests/8.10/operate-access-flow.spec.d.ts +1 -0
  101. package/dist/tests/8.10/operate-access-flow.spec.js +51 -0
  102. package/dist/tests/8.10/optimize-api-tests.spec.d.ts +1 -0
  103. package/dist/tests/8.10/optimize-api-tests.spec.js +268 -0
  104. package/dist/tests/8.10/optimize-user-flows.spec.d.ts +1 -0
  105. package/dist/tests/8.10/optimize-user-flows.spec.js +255 -0
  106. package/dist/tests/8.10/play.spec.d.ts +1 -0
  107. package/dist/tests/8.10/play.spec.js +85 -0
  108. package/dist/tests/8.10/rba-enabled-v1-user-flows.spec.d.ts +1 -0
  109. package/dist/tests/8.10/rba-enabled-v1-user-flows.spec.js +443 -0
  110. package/dist/tests/8.10/rba-enabled-v2-user-flows.spec.d.ts +1 -0
  111. package/dist/tests/8.10/rba-enabled-v2-user-flows.spec.js +446 -0
  112. package/dist/tests/8.10/smoke-tests.spec.d.ts +1 -0
  113. package/dist/tests/8.10/smoke-tests.spec.js +181 -0
  114. package/dist/tests/8.10/test-setup.spec.d.ts +1 -0
  115. package/dist/tests/8.10/test-setup.spec.js +94 -0
  116. package/dist/tests/8.10/utr-enabled-user-flows.spec.d.ts +1 -0
  117. package/dist/tests/8.10/utr-enabled-user-flows.spec.js +182 -0
  118. package/dist/tests/8.10/web-modeler-user-flows.spec.d.ts +1 -0
  119. package/dist/tests/8.10/web-modeler-user-flows.spec.js +544 -0
  120. package/package.json +1 -1
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OCIdentityGroupsPage = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const sleep_1 = require("../../utils/sleep");
6
+ class OCIdentityGroupsPage {
7
+ page;
8
+ groupsList;
9
+ createGroupButton;
10
+ editGroupButton;
11
+ deleteGroupButton;
12
+ createGroupModal;
13
+ closeCreateGroupModal;
14
+ createGroupIdField;
15
+ createNameField;
16
+ createDescriptionField;
17
+ createGroupModalCancelButton;
18
+ createGroupModalCreateButton;
19
+ editGroupModal;
20
+ closeEditGroupModal;
21
+ editNameField;
22
+ editDescriptionField;
23
+ editGroupModalCancelButton;
24
+ editGroupModalUpdateButton;
25
+ deleteGroupModal;
26
+ closeDeleteGroupModal;
27
+ deleteGroupModalCancelButton;
28
+ deleteGroupModalDeleteButton;
29
+ emptyState;
30
+ assignUserButton;
31
+ searchBox;
32
+ assignUserButtonModal;
33
+ selectGroupRow;
34
+ groupCell;
35
+ constructor(page) {
36
+ this.page = page;
37
+ this.groupsList = page.getByRole('table');
38
+ this.selectGroupRow = (name) => this.groupsList.getByRole('row', { name: name });
39
+ this.groupCell = (name) => this.groupsList.getByRole('cell', { name, exact: true });
40
+ this.createGroupButton = page.getByRole('button', {
41
+ name: /Create( a)? group/,
42
+ });
43
+ this.editGroupButton = (rowName) => this.groupsList.getByRole('row', { name: rowName }).getByLabel('Edit');
44
+ this.deleteGroupButton = (rowName) => this.groupsList.getByRole('row', { name: rowName }).getByLabel('Delete');
45
+ this.createGroupModal = page.getByRole('dialog', {
46
+ name: 'Create group',
47
+ });
48
+ this.closeCreateGroupModal = this.createGroupModal.getByRole('button', {
49
+ name: 'Close',
50
+ });
51
+ this.createGroupIdField = this.createGroupModal.getByRole('textbox', {
52
+ name: 'Group ID',
53
+ });
54
+ this.createNameField = this.createGroupModal.getByRole('textbox', {
55
+ name: 'Group name',
56
+ });
57
+ this.createDescriptionField = this.createGroupModal.getByRole('textbox', {
58
+ name: 'Description',
59
+ });
60
+ this.createGroupModalCancelButton = this.createGroupModal.getByRole('button', {
61
+ name: 'Cancel',
62
+ });
63
+ this.createGroupModalCreateButton = this.createGroupModal.getByRole('button', {
64
+ name: 'Create group',
65
+ });
66
+ this.editGroupModal = page.getByRole('dialog', {
67
+ name: 'Edit group',
68
+ });
69
+ this.closeEditGroupModal = this.editGroupModal.getByRole('button', {
70
+ name: 'Close',
71
+ });
72
+ this.editNameField = this.editGroupModal.getByRole('textbox', {
73
+ name: 'Group name',
74
+ });
75
+ this.editDescriptionField = this.editGroupModal.getByRole('textbox', {
76
+ name: 'Description',
77
+ });
78
+ this.editGroupModalCancelButton = this.editGroupModal.getByRole('button', {
79
+ name: 'Cancel',
80
+ });
81
+ this.editGroupModalUpdateButton = this.editGroupModal.getByRole('button', {
82
+ name: 'Edit group',
83
+ });
84
+ this.deleteGroupModal = page.getByRole('dialog', {
85
+ name: 'Delete group',
86
+ });
87
+ this.closeDeleteGroupModal = this.deleteGroupModal.getByRole('button', {
88
+ name: 'Close',
89
+ });
90
+ this.deleteGroupModalCancelButton = this.deleteGroupModal.getByRole('button', {
91
+ name: 'Cancel',
92
+ });
93
+ this.deleteGroupModalDeleteButton = this.deleteGroupModal.getByRole('button', {
94
+ name: 'Delete group',
95
+ });
96
+ this.emptyState = page.getByText('No groups created yet');
97
+ this.assignUserButton = page.getByRole('button', { name: 'Assign user' });
98
+ this.searchBox = page.getByTitle('Username');
99
+ this.assignUserButtonModal = page
100
+ .getByLabel('Assign user')
101
+ .getByRole('button', { name: 'Assign user' });
102
+ }
103
+ async createGroup(groupId, groupName, description) {
104
+ await (0, test_1.expect)(this.createGroupButton).toBeVisible({ timeout: 10000 });
105
+ await this.createGroupButton.click();
106
+ await (0, test_1.expect)(this.createGroupIdField).toBeVisible({ timeout: 10000 });
107
+ await this.createGroupIdField.click();
108
+ await this.createGroupIdField.fill(groupId);
109
+ await (0, test_1.expect)(this.createNameField).toBeVisible({ timeout: 10000 });
110
+ await this.createNameField.click();
111
+ await this.createNameField.fill(groupName);
112
+ if (description) {
113
+ await (0, test_1.expect)(this.createDescriptionField).toBeVisible({ timeout: 10000 });
114
+ await this.createDescriptionField.fill(description);
115
+ }
116
+ await this.createGroupModalCreateButton.click();
117
+ await (0, test_1.expect)(this.createGroupModal).toBeHidden();
118
+ }
119
+ async editGroup(currentName, newName, newDescription) {
120
+ await this.editGroupButton(currentName).click();
121
+ await (0, test_1.expect)(this.editGroupModal).toBeVisible();
122
+ await this.editNameField.fill(newName);
123
+ if (newDescription) {
124
+ await this.editDescriptionField.fill(newDescription);
125
+ }
126
+ await this.editGroupModalUpdateButton.click();
127
+ await (0, test_1.expect)(this.editGroupModal).toBeHidden();
128
+ }
129
+ async deleteGroup(groupName) {
130
+ await this.deleteGroupButton(groupName).click();
131
+ await (0, test_1.expect)(this.deleteGroupModal).toBeVisible();
132
+ await this.deleteGroupModalDeleteButton.click();
133
+ await (0, test_1.expect)(this.deleteGroupModal).toBeHidden();
134
+ }
135
+ async assertGroupExists(groupName) {
136
+ await (0, test_1.expect)(this.selectGroupRow(groupName)).toBeVisible();
137
+ }
138
+ async clickGroupId(groupName) {
139
+ const maxRetries = 10;
140
+ const retryDelay = 5000;
141
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
142
+ try {
143
+ const groupRow = await this.selectGroupRow(groupName);
144
+ await groupRow.click();
145
+ return;
146
+ }
147
+ catch (error) {
148
+ if (attempt < maxRetries) {
149
+ console.warn(`Attempt ${attempt} failed. Reloading and retrying in 5 seconds...`);
150
+ await this.page.reload();
151
+ await this.page.waitForTimeout(retryDelay);
152
+ }
153
+ else {
154
+ throw new Error(`Failed to click group '${groupName}' after ${maxRetries} attempts.`);
155
+ }
156
+ }
157
+ }
158
+ }
159
+ async assignUserToGroup(userName) {
160
+ await this.assignUserButton.click();
161
+ await this.searchBox.fill(userName);
162
+ await this.assignUserButtonModal.click();
163
+ await (0, sleep_1.sleep)(8000);
164
+ }
165
+ }
166
+ exports.OCIdentityGroupsPage = OCIdentityGroupsPage;
@@ -0,0 +1,18 @@
1
+ import { Page, Locator } from '@playwright/test';
2
+ declare class OCIdentityHomePage {
3
+ private page;
4
+ readonly groupsTab: Locator;
5
+ readonly adminBanner: Locator;
6
+ readonly rolesTab: Locator;
7
+ readonly authorizationsTab: Locator;
8
+ readonly licenseKeyTagNonProduction: Locator;
9
+ readonly licenseKeyTagNonCommercial: Locator;
10
+ readonly licenseKeyTagProduction: Locator;
11
+ readonly licenseKeyTagCommercial: Locator;
12
+ readonly noPermissionsMessage: Locator;
13
+ constructor(page: Page);
14
+ clickAuthorizationsTab(): Promise<void>;
15
+ clickRolesTab(): Promise<void>;
16
+ clickGroupsTab(): Promise<void>;
17
+ }
18
+ export { OCIdentityHomePage };
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OCIdentityHomePage = void 0;
4
+ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
5
+ class OCIdentityHomePage {
6
+ page;
7
+ groupsTab;
8
+ adminBanner;
9
+ rolesTab;
10
+ authorizationsTab;
11
+ licenseKeyTagNonProduction;
12
+ licenseKeyTagNonCommercial;
13
+ licenseKeyTagProduction;
14
+ licenseKeyTagCommercial;
15
+ noPermissionsMessage;
16
+ constructor(page) {
17
+ this.page = page;
18
+ this.adminBanner = page.getByRole('link', {
19
+ name: 'Camunda logo Admin',
20
+ });
21
+ this.groupsTab = page
22
+ .getByRole('banner')
23
+ .getByLabel('Admin')
24
+ .locator('a')
25
+ .filter({ hasText: 'Groups' });
26
+ this.rolesTab = page
27
+ .getByRole('banner')
28
+ .getByLabel('Admin')
29
+ .locator('a')
30
+ .filter({ hasText: 'Roles' });
31
+ this.authorizationsTab = page
32
+ .getByRole('banner')
33
+ .getByLabel('Admin')
34
+ .locator('a')
35
+ .filter({ hasText: /^Authorizations$/ });
36
+ this.licenseKeyTagNonProduction = page
37
+ .getByText('Non-production license')
38
+ .first();
39
+ this.licenseKeyTagNonCommercial = page.getByText('Non-commercial license');
40
+ this.licenseKeyTagProduction = page.getByText('Production license').first();
41
+ this.licenseKeyTagCommercial = page.getByText('Commercial license');
42
+ this.noPermissionsMessage = page.getByText('You don’t have access to this component');
43
+ }
44
+ async clickAuthorizationsTab() {
45
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.authorizationsTab);
46
+ await this.authorizationsTab.click({ timeout: 30000 });
47
+ }
48
+ async clickRolesTab() {
49
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.rolesTab);
50
+ await this.rolesTab.click({ timeout: 30000 });
51
+ }
52
+ async clickGroupsTab() {
53
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.groupsTab);
54
+ await this.groupsTab.click({ timeout: 30000 });
55
+ }
56
+ }
57
+ exports.OCIdentityHomePage = OCIdentityHomePage;
@@ -0,0 +1,23 @@
1
+ import { Page, Locator } from '@playwright/test';
2
+ declare class OCIdentityMappingRulesPage {
3
+ private page;
4
+ readonly mappingRuleCell: (name: string) => Locator;
5
+ readonly mappingRuleRow: (name: string) => Locator;
6
+ readonly deleteMappingRuleDialog: Locator;
7
+ readonly deleteMappingRuleButton: Locator;
8
+ readonly createMappingModal: Locator;
9
+ readonly closeCreateMappingModal: Locator;
10
+ readonly createMappingIdField: Locator;
11
+ readonly createMappingNameField: Locator;
12
+ readonly createMappingClaimNameField: Locator;
13
+ readonly createMappingClaimValueField: Locator;
14
+ readonly createMappingModalCancelButton: Locator;
15
+ readonly createMappingModalCreateButton: Locator;
16
+ readonly createMappingButton: Locator;
17
+ readonly filterTableSearchbox: Locator;
18
+ constructor(page: Page);
19
+ filterTable(name: string): Promise<void>;
20
+ createMappingRule(mappingId: string, mappingName: string, claimName: string, claimValue: string): Promise<void>;
21
+ deleteMappingRule(rule: string): Promise<void>;
22
+ }
23
+ export { OCIdentityMappingRulesPage };
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OCIdentityMappingRulesPage = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const sleep_1 = require("../../utils/sleep");
6
+ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
7
+ class OCIdentityMappingRulesPage {
8
+ page;
9
+ mappingRuleCell;
10
+ mappingRuleRow;
11
+ deleteMappingRuleDialog;
12
+ deleteMappingRuleButton;
13
+ createMappingModal;
14
+ closeCreateMappingModal;
15
+ createMappingIdField;
16
+ createMappingNameField;
17
+ createMappingClaimNameField;
18
+ createMappingClaimValueField;
19
+ createMappingModalCancelButton;
20
+ createMappingModalCreateButton;
21
+ createMappingButton;
22
+ filterTableSearchbox;
23
+ constructor(page) {
24
+ this.page = page;
25
+ this.mappingRuleCell = (name) => page.getByRole('cell', {
26
+ name,
27
+ exact: true,
28
+ });
29
+ this.mappingRuleRow = (name) => page.getByRole('row').filter({ hasText: name });
30
+ this.deleteMappingRuleDialog = page.getByRole('dialog', {
31
+ name: 'Delete Mapping rule',
32
+ });
33
+ this.filterTableSearchbox = page.getByRole('searchbox', {
34
+ name: 'Filter table',
35
+ });
36
+ this.deleteMappingRuleButton = this.deleteMappingRuleDialog
37
+ .getByRole('button', {
38
+ name: 'Delete Mapping rule',
39
+ })
40
+ .first();
41
+ // Create mapping modal
42
+ this.createMappingModal = page.getByRole('dialog', {
43
+ name: 'Create new mapping rule',
44
+ });
45
+ this.closeCreateMappingModal = this.createMappingModal.getByRole('button', {
46
+ name: 'Close',
47
+ });
48
+ this.createMappingIdField = this.createMappingModal.getByRole('textbox', {
49
+ name: 'Mapping rule ID',
50
+ });
51
+ this.createMappingNameField = this.createMappingModal.getByRole('textbox', {
52
+ name: 'Mapping rule name',
53
+ });
54
+ this.createMappingClaimNameField = this.createMappingModal.getByRole('textbox', {
55
+ name: 'Claim name',
56
+ });
57
+ this.createMappingClaimValueField = this.createMappingModal.getByRole('textbox', {
58
+ name: 'Claim value',
59
+ });
60
+ this.createMappingModalCancelButton = this.createMappingModal.getByRole('button', {
61
+ name: 'Cancel',
62
+ });
63
+ this.createMappingButton = page.getByRole('button', {
64
+ name: /Create a mapping rule/i,
65
+ });
66
+ this.createMappingModalCreateButton = this.createMappingModal.getByRole('button', {
67
+ name: /create a mapping rule/i,
68
+ });
69
+ }
70
+ async filterTable(name) {
71
+ await this.filterTableSearchbox.click({ timeout: 60000 });
72
+ await this.filterTableSearchbox.fill(name);
73
+ await this.filterTableSearchbox.press('Enter');
74
+ }
75
+ async createMappingRule(mappingId, mappingName, claimName, claimValue) {
76
+ await (0, test_1.expect)(this.createMappingButton).toBeVisible({
77
+ timeout: 30000,
78
+ });
79
+ await this.createMappingButton.click();
80
+ await (0, test_1.expect)(this.createMappingModal).toBeVisible({
81
+ timeout: 30000,
82
+ });
83
+ await this.createMappingIdField.fill(mappingId);
84
+ await this.createMappingNameField.fill(mappingName);
85
+ await this.createMappingClaimNameField.fill(claimName);
86
+ await this.createMappingClaimValueField.fill(claimValue);
87
+ await this.createMappingModalCreateButton.click({
88
+ timeout: 30000,
89
+ });
90
+ await (0, test_1.expect)(this.createMappingModal).not.toBeVisible({
91
+ timeout: 30000,
92
+ });
93
+ }
94
+ //Ignored due to Identity bug https://github.com/camunda/camunda/issues/35673
95
+ async deleteMappingRule(rule) {
96
+ try {
97
+ await (0, test_1.expect)(this.mappingRuleRow(rule).first()).toBeVisible({
98
+ timeout: 10000,
99
+ });
100
+ }
101
+ catch (error) {
102
+ return; //No rules found in the list
103
+ }
104
+ await this.filterTable(rule);
105
+ await (0, sleep_1.sleep)(3000);
106
+ const deleteButtons = this.page.getByRole('button', {
107
+ name: 'danger Delete',
108
+ });
109
+ (0, test_1.expect)(await deleteButtons.count()).toEqual(1);
110
+ await deleteButtons.first().click({ timeout: 60000 });
111
+ await (0, test_1.expect)(this.deleteMappingRuleDialog).toBeVisible({
112
+ timeout: 60000,
113
+ });
114
+ await this.deleteMappingRuleButton.click();
115
+ await (0, test_1.expect)(this.page.getByText('Mapping rule deleted')).toBeVisible({
116
+ timeout: 60000,
117
+ });
118
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.mappingRuleRow(rule).first(), {
119
+ shouldBeVisible: false,
120
+ });
121
+ await (0, sleep_1.sleep)(60000);
122
+ }
123
+ }
124
+ exports.OCIdentityMappingRulesPage = OCIdentityMappingRulesPage;
@@ -0,0 +1,40 @@
1
+ import { Page, Locator } from '@playwright/test';
2
+ declare class OCIdentityRolesPage {
3
+ private page;
4
+ readonly selectResourceTypeTab: (name: string) => Locator;
5
+ readonly assignMappingRuleButton: Locator;
6
+ readonly mappingSearchBox: Locator;
7
+ readonly assignMappingModal: Locator;
8
+ readonly assignMappingModalSearchResult: Locator;
9
+ readonly assignMappingModalAssignRuleButton: Locator;
10
+ readonly rolesList: Locator;
11
+ readonly roleCell: (name: string) => Locator;
12
+ readonly rowValue: (name: string) => Locator;
13
+ readonly createRoleButton: Locator;
14
+ readonly createRoleModal: Locator;
15
+ readonly createNameField: Locator;
16
+ readonly createIdField: Locator;
17
+ readonly createRoleModalCreateButton: Locator;
18
+ readonly deleteRoleButton: (rowName?: string) => Locator;
19
+ readonly deleteRoleModal: Locator;
20
+ readonly closeDeleteRoleModal: Locator;
21
+ readonly deleteRoleModalCancelButton: Locator;
22
+ readonly deleteRoleModalDeleteButton: Locator;
23
+ readonly assignUserButton: Locator;
24
+ readonly assignUserModal: Locator;
25
+ readonly assignUserModalInputField: Locator;
26
+ readonly assignUserModalAssignButton: Locator;
27
+ constructor(page: Page);
28
+ clickMappingRulesTab(): Promise<void>;
29
+ clickRole(roleID: string): Promise<void>;
30
+ assignMappingRuleToRole(roleId: string, mappingId: string): Promise<void>;
31
+ doAssignUserToRole(roleId: string, email: string): Promise<void>;
32
+ createRole(role: {
33
+ id: string;
34
+ name: string;
35
+ }): Promise<void>;
36
+ assignMappingToRole(role: string, mappingRuleId: string): Promise<void>;
37
+ assignUserToRole(role: string, email: string): Promise<void>;
38
+ deleteRole(name: string): Promise<void>;
39
+ }
40
+ export { OCIdentityRolesPage };
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OCIdentityRolesPage = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
6
+ const expectLocatorWithPagination_1 = require("../../utils/assertionHelpers/expectLocatorWithPagination");
7
+ class OCIdentityRolesPage {
8
+ page;
9
+ selectResourceTypeTab;
10
+ assignMappingRuleButton;
11
+ mappingSearchBox;
12
+ assignMappingModal;
13
+ assignMappingModalSearchResult;
14
+ assignMappingModalAssignRuleButton;
15
+ rolesList;
16
+ roleCell;
17
+ rowValue;
18
+ createRoleButton;
19
+ createRoleModal;
20
+ createNameField;
21
+ createIdField;
22
+ createRoleModalCreateButton;
23
+ deleteRoleButton;
24
+ deleteRoleModal;
25
+ closeDeleteRoleModal;
26
+ deleteRoleModalCancelButton;
27
+ deleteRoleModalDeleteButton;
28
+ assignUserButton;
29
+ assignUserModal;
30
+ assignUserModalInputField;
31
+ assignUserModalAssignButton;
32
+ constructor(page) {
33
+ this.page = page;
34
+ this.rolesList = page.getByRole('table');
35
+ this.selectResourceTypeTab = (resourceType) => page.getByRole('tab', { name: resourceType });
36
+ this.assignMappingRuleButton = page.getByRole('button', {
37
+ name: /^(Assign mapping rule|assignMapping)$/,
38
+ });
39
+ this.mappingSearchBox = page.getByRole('searchbox', {
40
+ name: 'Search by mapping rule ID',
41
+ });
42
+ this.assignMappingModal = page.getByRole('dialog', {
43
+ name: 'Assign mapping rule',
44
+ });
45
+ this.createRoleButton = page.getByRole('button', {
46
+ name: /create role/i,
47
+ });
48
+ this.assignMappingModalSearchResult =
49
+ this.assignMappingModal.getByRole('listbox');
50
+ this.assignMappingModalAssignRuleButton = this.assignMappingModal.getByRole('button', {
51
+ name: 'Assign mapping rule',
52
+ });
53
+ this.roleCell = (roleID) => this.rolesList.getByRole('cell', { name: roleID, exact: true });
54
+ this.rowValue = (name) => page.getByRole('row').filter({ hasText: name });
55
+ this.createRoleModal = page.getByRole('dialog', {
56
+ name: 'Create role',
57
+ });
58
+ this.createIdField = this.createRoleModal.getByRole('textbox', {
59
+ name: 'Role ID',
60
+ exact: true,
61
+ });
62
+ this.createNameField = this.createRoleModal.getByRole('textbox', {
63
+ name: 'Role name',
64
+ exact: true,
65
+ });
66
+ this.createRoleModalCreateButton = this.createRoleModal.getByRole('button', { name: 'Create role' });
67
+ this.deleteRoleButton = (rowName) => this.rolesList.getByRole('row', { name: rowName }).getByLabel('Delete');
68
+ this.deleteRoleModal = page.getByRole('dialog', { name: /delete role/i });
69
+ this.closeDeleteRoleModal = this.deleteRoleModal.getByRole('button', {
70
+ name: 'Close',
71
+ });
72
+ this.deleteRoleModalCancelButton = this.deleteRoleModal.getByRole('button', {
73
+ name: 'Cancel',
74
+ });
75
+ this.deleteRoleModalDeleteButton = this.deleteRoleModal.getByRole('button', {
76
+ name: /delete role/i,
77
+ });
78
+ this.assignUserButton = page.getByRole('button', {
79
+ name: /Assign user/i,
80
+ });
81
+ this.assignUserModal = page.getByRole('dialog', {
82
+ name: 'Assign user',
83
+ });
84
+ this.assignUserModalInputField =
85
+ this.assignUserModal.getByTitle('Username');
86
+ this.assignUserModalAssignButton = this.assignUserModal.getByRole('button', {
87
+ name: /assign user/i,
88
+ });
89
+ }
90
+ async clickMappingRulesTab() {
91
+ await (0, test_1.expect)(this.selectResourceTypeTab('Mapping Rules')).toBeVisible({
92
+ timeout: 60000,
93
+ });
94
+ await this.selectResourceTypeTab('Mapping Rules').click();
95
+ }
96
+ async clickRole(roleID) {
97
+ await (0, test_1.expect)(this.roleCell(roleID).first()).toBeVisible({ timeout: 60000 });
98
+ await this.roleCell(roleID).first().click();
99
+ }
100
+ async assignMappingRuleToRole(roleId, mappingId) {
101
+ await this.clickRole(roleId);
102
+ await this.clickMappingRulesTab();
103
+ await (0, test_1.expect)(this.assignMappingRuleButton).toBeVisible({
104
+ timeout: 60000,
105
+ });
106
+ await this.assignMappingRuleButton.click({ timeout: 60000 });
107
+ await (0, test_1.expect)(this.assignMappingModal).toBeVisible({ timeout: 60000 });
108
+ await this.mappingSearchBox.fill(mappingId);
109
+ await this.assignMappingModalSearchResult
110
+ .getByText(mappingId)
111
+ .click({ timeout: 30000 });
112
+ await this.assignMappingModalAssignRuleButton.click({ timeout: 30000 });
113
+ }
114
+ async doAssignUserToRole(roleId, email) {
115
+ await this.clickRole(roleId);
116
+ await (0, test_1.expect)(this.assignUserButton).toBeVisible({
117
+ timeout: 60000,
118
+ });
119
+ await this.assignUserButton.click({ timeout: 60000 });
120
+ await (0, test_1.expect)(this.assignUserModal).toBeVisible({ timeout: 30000 });
121
+ await this.assignUserModalInputField.fill(email);
122
+ await this.assignUserModalAssignButton.click({ timeout: 30000 });
123
+ await (0, test_1.expect)(this.assignUserModal).not.toBeVisible({ timeout: 30000 });
124
+ }
125
+ async createRole(role) {
126
+ await (0, test_1.expect)(this.createRoleButton).toBeVisible({ timeout: 30000 });
127
+ await this.createRoleButton.click({ timeout: 30000 });
128
+ await (0, test_1.expect)(this.createRoleModal).toBeVisible({ timeout: 30000 });
129
+ await this.createIdField.fill(role.id);
130
+ await this.createNameField.fill(role.name);
131
+ await this.createRoleModalCreateButton.click();
132
+ await (0, test_1.expect)(this.createRoleModal).not.toBeVisible({ timeout: 30000 });
133
+ await (0, expectLocatorWithPagination_1.expectLocatorWithPagination)(this.page, this.rolesList
134
+ .getByRole('cell', {
135
+ name: role.name,
136
+ })
137
+ .first());
138
+ }
139
+ async assignMappingToRole(role, mappingRuleId) {
140
+ try {
141
+ await (0, test_1.expect)(this.page.getByText(role).first()).toBeVisible({
142
+ timeout: 10000,
143
+ });
144
+ }
145
+ catch (error) {
146
+ await this.createRole({ id: role, name: role });
147
+ }
148
+ await this.assignMappingRuleToRole(role, mappingRuleId);
149
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.rowValue(mappingRuleId).first());
150
+ await (0, test_1.expect)(this.rowValue(mappingRuleId)).toContainText(`${mappingRuleId}`);
151
+ }
152
+ async assignUserToRole(role, email) {
153
+ try {
154
+ await (0, test_1.expect)(this.page.getByText(role).first()).toBeVisible({
155
+ timeout: 10000,
156
+ });
157
+ }
158
+ catch (error) {
159
+ await this.createRole({ id: role, name: role });
160
+ }
161
+ await this.doAssignUserToRole(role, email);
162
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.rowValue(email).first(), {
163
+ preAction: async () => {
164
+ await this.page.reload();
165
+ await (0, test_1.expect)(this.rolesList.first()).toBeVisible({ timeout: 20000 });
166
+ },
167
+ });
168
+ await (0, test_1.expect)(this.rowValue(email)).toContainText(`${email}`);
169
+ }
170
+ async deleteRole(name) {
171
+ const locator = this.deleteRoleButton(name);
172
+ await (0, expectLocatorWithPagination_1.expectLocatorWithPagination)(this.page, locator);
173
+ await locator.click();
174
+ await (0, test_1.expect)(this.deleteRoleModal).toBeVisible();
175
+ await this.deleteRoleModalDeleteButton.click();
176
+ await (0, test_1.expect)(this.deleteRoleModal).not.toBeVisible();
177
+ await (0, expectLocatorWithPagination_1.expectLocatorWithPagination)(this.page, locator, {
178
+ shouldBeVisible: false,
179
+ });
180
+ }
181
+ }
182
+ exports.OCIdentityRolesPage = OCIdentityRolesPage;
@@ -0,0 +1,23 @@
1
+ import { Page, Locator } from '@playwright/test';
2
+ declare class OperateHomePage {
3
+ private page;
4
+ readonly operateHeader: Locator;
5
+ readonly processesTab: Locator;
6
+ readonly informationDialog: Locator;
7
+ readonly editVariableButton: Locator;
8
+ readonly variableValueInput: Locator;
9
+ readonly saveVariableButton: Locator;
10
+ readonly editVariableSpinner: Locator;
11
+ readonly operateBanner: Locator;
12
+ readonly noPermissionsMessage: Locator;
13
+ readonly processPageHeading: Locator;
14
+ constructor(page: Page);
15
+ clickProcessesTab(): Promise<void>;
16
+ closeInformationDialog(): Promise<void>;
17
+ clickEditVariableButton(variableName: string): Promise<void>;
18
+ clickVariableValueInput(): Promise<void>;
19
+ clearVariableValueInput(): Promise<void>;
20
+ fillVariableValueInput(value: string): Promise<void>;
21
+ clickSaveVariableButton(): Promise<void>;
22
+ }
23
+ export { OperateHomePage };