@camunda/e2e-test-suite 0.0.257 → 0.0.258

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/dist/fixtures/SM-8.10.d.ts +81 -0
  2. package/dist/fixtures/SM-8.10.js +184 -0
  3. package/dist/pages/SM-8.10/Authorization.d.ts +31 -0
  4. package/dist/pages/SM-8.10/Authorization.js +146 -0
  5. package/dist/pages/SM-8.10/ClusterDetailsPage.d.ts +8 -0
  6. package/dist/pages/SM-8.10/ClusterDetailsPage.js +28 -0
  7. package/dist/pages/SM-8.10/ClusterPage.d.ts +11 -0
  8. package/dist/pages/SM-8.10/ClusterPage.js +32 -0
  9. package/dist/pages/SM-8.10/ConnectorMarketplacePage.d.ts +16 -0
  10. package/dist/pages/SM-8.10/ConnectorMarketplacePage.js +52 -0
  11. package/dist/pages/SM-8.10/ConnectorSettingsPage.d.ts +40 -0
  12. package/dist/pages/SM-8.10/ConnectorSettingsPage.js +133 -0
  13. package/dist/pages/SM-8.10/ConnectorTemplatePage.d.ts +11 -0
  14. package/dist/pages/SM-8.10/ConnectorTemplatePage.js +34 -0
  15. package/dist/pages/SM-8.10/ConsoleHomePage.d.ts +11 -0
  16. package/dist/pages/SM-8.10/ConsoleHomePage.js +31 -0
  17. package/dist/pages/SM-8.10/ConsoleOrganizationPage.d.ts +22 -0
  18. package/dist/pages/SM-8.10/ConsoleOrganizationPage.js +68 -0
  19. package/dist/pages/SM-8.10/FormJsPage.d.ts +31 -0
  20. package/dist/pages/SM-8.10/FormJsPage.js +87 -0
  21. package/dist/pages/SM-8.10/HomePage.d.ts +20 -0
  22. package/dist/pages/SM-8.10/HomePage.js +49 -0
  23. package/dist/pages/SM-8.10/IdentityTenantPage.d.ts +52 -0
  24. package/dist/pages/SM-8.10/IdentityTenantPage.js +218 -0
  25. package/dist/pages/SM-8.10/IdentityUsersPage.d.ts +92 -0
  26. package/dist/pages/SM-8.10/IdentityUsersPage.js +473 -0
  27. package/dist/pages/SM-8.10/KeycloakAdminPage.d.ts +15 -0
  28. package/dist/pages/SM-8.10/KeycloakAdminPage.js +68 -0
  29. package/dist/pages/SM-8.10/KeycloakLoginPage.d.ts +11 -0
  30. package/dist/pages/SM-8.10/KeycloakLoginPage.js +25 -0
  31. package/dist/pages/SM-8.10/KeycloakUtils.d.ts +16 -0
  32. package/dist/pages/SM-8.10/KeycloakUtils.js +63 -0
  33. package/dist/pages/SM-8.10/LoginPage.d.ts +21 -0
  34. package/dist/pages/SM-8.10/LoginPage.js +100 -0
  35. package/dist/pages/SM-8.10/ManagementIdentityPage.d.ts +46 -0
  36. package/dist/pages/SM-8.10/ManagementIdentityPage.js +153 -0
  37. package/dist/pages/SM-8.10/ModelerCreatePage.d.ts +199 -0
  38. package/dist/pages/SM-8.10/ModelerCreatePage.js +1052 -0
  39. package/dist/pages/SM-8.10/ModelerHomePage.d.ts +44 -0
  40. package/dist/pages/SM-8.10/ModelerHomePage.js +179 -0
  41. package/dist/pages/SM-8.10/NavigationPage.d.ts +47 -0
  42. package/dist/pages/SM-8.10/NavigationPage.js +134 -0
  43. package/dist/pages/SM-8.10/OCIdentityAuthorizationsPage.d.ts +10 -0
  44. package/dist/pages/SM-8.10/OCIdentityAuthorizationsPage.js +35 -0
  45. package/dist/pages/SM-8.10/OCIdentityClusterVariablesPage.d.ts +20 -0
  46. package/dist/pages/SM-8.10/OCIdentityClusterVariablesPage.js +69 -0
  47. package/dist/pages/SM-8.10/OCIdentityGroupsPage.d.ts +39 -0
  48. package/dist/pages/SM-8.10/OCIdentityGroupsPage.js +154 -0
  49. package/dist/pages/SM-8.10/OCIdentityHomePage.d.ts +23 -0
  50. package/dist/pages/SM-8.10/OCIdentityHomePage.js +81 -0
  51. package/dist/pages/SM-8.10/OCIdentityMappingRulesPage.d.ts +23 -0
  52. package/dist/pages/SM-8.10/OCIdentityMappingRulesPage.js +110 -0
  53. package/dist/pages/SM-8.10/OCIdentityRolesPage.d.ts +55 -0
  54. package/dist/pages/SM-8.10/OCIdentityRolesPage.js +197 -0
  55. package/dist/pages/SM-8.10/OCTenantPage.d.ts +67 -0
  56. package/dist/pages/SM-8.10/OCTenantPage.js +280 -0
  57. package/dist/pages/SM-8.10/OperateHomePage.d.ts +24 -0
  58. package/dist/pages/SM-8.10/OperateHomePage.js +81 -0
  59. package/dist/pages/SM-8.10/OperateProcessInstancePage.d.ts +24 -0
  60. package/dist/pages/SM-8.10/OperateProcessInstancePage.js +170 -0
  61. package/dist/pages/SM-8.10/OperateProcessesPage.d.ts +32 -0
  62. package/dist/pages/SM-8.10/OperateProcessesPage.js +205 -0
  63. package/dist/pages/SM-8.10/OptimizeCollectionsPage.d.ts +17 -0
  64. package/dist/pages/SM-8.10/OptimizeCollectionsPage.js +66 -0
  65. package/dist/pages/SM-8.10/OptimizeDashboardPage.d.ts +14 -0
  66. package/dist/pages/SM-8.10/OptimizeDashboardPage.js +56 -0
  67. package/dist/pages/SM-8.10/OptimizeHomePage.d.ts +19 -0
  68. package/dist/pages/SM-8.10/OptimizeHomePage.js +64 -0
  69. package/dist/pages/SM-8.10/OptimizeReportPage.d.ts +50 -0
  70. package/dist/pages/SM-8.10/OptimizeReportPage.js +179 -0
  71. package/dist/pages/SM-8.10/PlayPage.d.ts +44 -0
  72. package/dist/pages/SM-8.10/PlayPage.js +235 -0
  73. package/dist/pages/SM-8.10/SettingsPage.d.ts +12 -0
  74. package/dist/pages/SM-8.10/SettingsPage.js +25 -0
  75. package/dist/pages/SM-8.10/TaskDetailsPage.d.ts +70 -0
  76. package/dist/pages/SM-8.10/TaskDetailsPage.js +266 -0
  77. package/dist/pages/SM-8.10/TaskPanelPage.d.ts +24 -0
  78. package/dist/pages/SM-8.10/TaskPanelPage.js +93 -0
  79. package/dist/pages/SM-8.10/TaskProcessesPage.d.ts +14 -0
  80. package/dist/pages/SM-8.10/TaskProcessesPage.js +53 -0
  81. package/dist/pages/SM-8.10/UtilitiesPage.d.ts +34 -0
  82. package/dist/pages/SM-8.10/UtilitiesPage.js +435 -0
  83. package/dist/pages/SM-8.10/optimizeReportUtils.d.ts +6 -0
  84. package/dist/pages/SM-8.10/optimizeReportUtils.js +42 -0
  85. package/dist/pages/SM-8.7/ModelerCreatePage.js +3 -0
  86. package/dist/pages/SM-8.7/PlayPage.d.ts +1 -0
  87. package/dist/pages/SM-8.7/PlayPage.js +4 -2
  88. package/dist/tests/SM-8.10/cluster-variables.spec.d.ts +1 -0
  89. package/dist/tests/SM-8.10/cluster-variables.spec.js +190 -0
  90. package/dist/tests/SM-8.10/connectors-user-flows.spec.d.ts +1 -0
  91. package/dist/tests/SM-8.10/connectors-user-flows.spec.js +260 -0
  92. package/dist/tests/SM-8.10/console-user-flows.spec.d.ts +1 -0
  93. package/dist/tests/SM-8.10/console-user-flows.spec.js +88 -0
  94. package/dist/tests/SM-8.10/document-handling-user-flows.spec.d.ts +1 -0
  95. package/dist/tests/SM-8.10/document-handling-user-flows.spec.js +157 -0
  96. package/dist/tests/SM-8.10/hto-user-flows.spec.d.ts +1 -0
  97. package/dist/tests/SM-8.10/hto-user-flows.spec.js +408 -0
  98. package/dist/tests/SM-8.10/identity-user-flows.spec.d.ts +1 -0
  99. package/dist/tests/SM-8.10/identity-user-flows.spec.js +233 -0
  100. package/dist/tests/SM-8.10/license-key-user-flows.spec.d.ts +1 -0
  101. package/dist/tests/SM-8.10/license-key-user-flows.spec.js +523 -0
  102. package/dist/tests/SM-8.10/login.spec.d.ts +1 -0
  103. package/dist/tests/SM-8.10/login.spec.js +24 -0
  104. package/dist/tests/SM-8.10/migration-path-user-flows.spec.d.ts +1 -0
  105. package/dist/tests/SM-8.10/migration-path-user-flows.spec.js +224 -0
  106. package/dist/tests/SM-8.10/mt-enabled-user-flows.spec.d.ts +1 -0
  107. package/dist/tests/SM-8.10/mt-enabled-user-flows.spec.js +584 -0
  108. package/dist/tests/SM-8.10/optimize-user-flows.spec.d.ts +1 -0
  109. package/dist/tests/SM-8.10/optimize-user-flows.spec.js +184 -0
  110. package/dist/tests/SM-8.10/play.spec.d.ts +1 -0
  111. package/dist/tests/SM-8.10/play.spec.js +152 -0
  112. package/dist/tests/SM-8.10/rba-enabled-user-flows.spec.d.ts +1 -0
  113. package/dist/tests/SM-8.10/rba-enabled-user-flows.spec.js +715 -0
  114. package/dist/tests/SM-8.10/smoke-tests.spec.d.ts +1 -0
  115. package/dist/tests/SM-8.10/smoke-tests.spec.js +163 -0
  116. package/dist/tests/SM-8.10/test-setup.spec.d.ts +1 -0
  117. package/dist/tests/SM-8.10/test-setup.spec.js +24 -0
  118. package/dist/tests/SM-8.10/web-modeler-user-flows.spec.d.ts +1 -0
  119. package/dist/tests/SM-8.10/web-modeler-user-flows.spec.js +178 -0
  120. package/package.json +1 -1
@@ -0,0 +1,154 @@
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
+ searchBoxResult;
33
+ assignUserButtonModal;
34
+ selectGroupRow;
35
+ groupCell;
36
+ constructor(page) {
37
+ this.page = page;
38
+ this.groupsList = page.getByRole('table');
39
+ this.selectGroupRow = (name) => this.groupsList.getByRole('row', { name: name });
40
+ this.groupCell = (name) => this.groupsList.getByRole('cell', { name, exact: true });
41
+ this.createGroupButton = page.getByRole('button', {
42
+ name: /Create( a)? group/,
43
+ });
44
+ this.editGroupButton = (rowName) => this.groupsList.getByRole('row', { name: rowName }).getByLabel('Edit');
45
+ this.deleteGroupButton = (rowName) => this.groupsList.getByRole('row', { name: rowName }).getByLabel('Delete');
46
+ this.createGroupModal = page.getByRole('dialog', {
47
+ name: 'Create group',
48
+ });
49
+ this.closeCreateGroupModal = this.createGroupModal.getByRole('button', {
50
+ name: 'Close',
51
+ });
52
+ this.createGroupIdField = this.createGroupModal.getByRole('textbox', {
53
+ name: 'Group ID',
54
+ });
55
+ this.createNameField = this.createGroupModal.getByRole('textbox', {
56
+ name: 'Group name',
57
+ });
58
+ this.createDescriptionField = this.createGroupModal.getByRole('textbox', {
59
+ name: 'Description',
60
+ });
61
+ this.createGroupModalCancelButton = this.createGroupModal.getByRole('button', {
62
+ name: 'Cancel',
63
+ });
64
+ this.createGroupModalCreateButton = this.createGroupModal.getByRole('button', {
65
+ name: 'Create group',
66
+ });
67
+ this.editGroupModal = page.getByRole('dialog', {
68
+ name: 'Edit group',
69
+ });
70
+ this.closeEditGroupModal = this.editGroupModal.getByRole('button', {
71
+ name: 'Close',
72
+ });
73
+ this.editNameField = this.editGroupModal.getByRole('textbox', {
74
+ name: 'Group name',
75
+ });
76
+ this.editDescriptionField = this.editGroupModal.getByRole('textbox', {
77
+ name: 'Description',
78
+ });
79
+ this.editGroupModalCancelButton = this.editGroupModal.getByRole('button', {
80
+ name: 'Cancel',
81
+ });
82
+ this.editGroupModalUpdateButton = this.editGroupModal.getByRole('button', {
83
+ name: 'Edit group',
84
+ });
85
+ this.deleteGroupModal = page.getByRole('dialog', {
86
+ name: 'Delete group',
87
+ });
88
+ this.closeDeleteGroupModal = this.deleteGroupModal.getByRole('button', {
89
+ name: 'Close',
90
+ });
91
+ this.deleteGroupModalCancelButton = this.deleteGroupModal.getByRole('button', {
92
+ name: 'Cancel',
93
+ });
94
+ this.deleteGroupModalDeleteButton = this.deleteGroupModal.getByRole('button', {
95
+ name: 'Delete group',
96
+ });
97
+ this.emptyState = page.getByText('No groups created yet');
98
+ this.assignUserButton = page.getByRole('button', { name: 'Assign user' });
99
+ this.searchBox = page.getByTitle('Username');
100
+ this.searchBoxResult = page.getByRole('listitem');
101
+ this.assignUserButtonModal = page
102
+ .getByLabel('Assign user')
103
+ .getByRole('button', { name: 'Assign user' });
104
+ }
105
+ async createGroup(groupId, groupName, description) {
106
+ await this.createGroupButton.click();
107
+ await this.createGroupIdField.fill(groupId);
108
+ await this.createNameField.fill(groupName);
109
+ if (description) {
110
+ await this.createDescriptionField.fill(description);
111
+ }
112
+ await this.createGroupModalCreateButton.click();
113
+ await (0, test_1.expect)(this.createGroupModal).toBeHidden();
114
+ }
115
+ async editGroup(currentName, newName, newDescription) {
116
+ await this.editGroupButton(currentName).click();
117
+ await (0, test_1.expect)(this.editGroupModal).toBeVisible();
118
+ await this.editNameField.fill(newName);
119
+ if (newDescription) {
120
+ await this.editDescriptionField.fill(newDescription);
121
+ }
122
+ await this.editGroupModalUpdateButton.click();
123
+ await (0, test_1.expect)(this.editGroupModal).toBeHidden();
124
+ }
125
+ async deleteGroup(groupName) {
126
+ await this.deleteGroupButton(groupName).click();
127
+ await (0, test_1.expect)(this.deleteGroupModal).toBeVisible();
128
+ await this.deleteGroupModalDeleteButton.click();
129
+ await (0, test_1.expect)(this.deleteGroupModal).toBeHidden();
130
+ }
131
+ async assertGroupExists(groupName) {
132
+ await (0, test_1.expect)(this.selectGroupRow(groupName)).toBeVisible();
133
+ }
134
+ async clickGroupId(groupName) {
135
+ for (let i = 0; i < 10; i++) {
136
+ try {
137
+ await this.selectGroupRow(groupName).click({ timeout: 15000 });
138
+ return;
139
+ }
140
+ catch (err) {
141
+ await this.page.reload();
142
+ await (0, sleep_1.sleep)(10000);
143
+ }
144
+ }
145
+ throw new Error(`Failed to click group "${groupName}" after 10 attempts`);
146
+ }
147
+ async assignUserToGroup(userName) {
148
+ await this.assignUserButton.click();
149
+ await this.searchBox.fill(userName);
150
+ await this.assignUserButtonModal.click();
151
+ await (0, sleep_1.sleep)(8000);
152
+ }
153
+ }
154
+ exports.OCIdentityGroupsPage = OCIdentityGroupsPage;
@@ -0,0 +1,23 @@
1
+ import { Page, Locator } from '@playwright/test';
2
+ declare class OCIdentityHomePage {
3
+ private page;
4
+ readonly groupsTab: Locator;
5
+ readonly adminBanner: Locator;
6
+ readonly mappingRulesTab: Locator;
7
+ readonly tenantsTab: Locator;
8
+ readonly rolesTab: Locator;
9
+ readonly authorizationsTab: Locator;
10
+ readonly clusterVariablesTab: Locator;
11
+ readonly licenseKeyTagNonProduction: Locator;
12
+ readonly licenseKeyTagNonCommercial: Locator;
13
+ readonly licenseKeyTagProduction: Locator;
14
+ readonly licenseKeyTagCommercial: Locator;
15
+ constructor(page: Page);
16
+ clickMappingRulesTab(): Promise<void>;
17
+ clickTenantsTab(): Promise<void>;
18
+ clickAuthorizationsTab(): Promise<void>;
19
+ clickRolesTab(): Promise<void>;
20
+ clickGroupsTab(): Promise<void>;
21
+ clickClusterVariablesTab(): Promise<void>;
22
+ }
23
+ export { OCIdentityHomePage };
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OCIdentityHomePage = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
6
+ class OCIdentityHomePage {
7
+ page;
8
+ groupsTab;
9
+ adminBanner;
10
+ mappingRulesTab;
11
+ tenantsTab;
12
+ rolesTab;
13
+ authorizationsTab;
14
+ clusterVariablesTab;
15
+ licenseKeyTagNonProduction;
16
+ licenseKeyTagNonCommercial;
17
+ licenseKeyTagProduction;
18
+ licenseKeyTagCommercial;
19
+ constructor(page) {
20
+ this.page = page;
21
+ this.adminBanner = page.getByRole('link', {
22
+ name: 'Camunda logo Admin',
23
+ });
24
+ this.groupsTab = page
25
+ .getByRole('banner')
26
+ .locator('a')
27
+ .filter({ hasText: /^Groups$/ });
28
+ this.mappingRulesTab = page
29
+ .getByRole('banner')
30
+ .locator('a')
31
+ .filter({ hasText: /^Mapping rules$/ })
32
+ .first();
33
+ this.tenantsTab = page
34
+ .getByRole('banner')
35
+ .locator('a')
36
+ .filter({ hasText: /^Tenants$/ });
37
+ this.rolesTab = page
38
+ .getByRole('banner')
39
+ .locator('a')
40
+ .filter({ hasText: 'Roles' });
41
+ this.authorizationsTab = page
42
+ .getByRole('banner')
43
+ .locator('a')
44
+ .filter({ hasText: /^Authorizations$/ });
45
+ this.clusterVariablesTab = page
46
+ .getByRole('banner')
47
+ .locator('a')
48
+ .filter({ hasText: /Cluster variables/i });
49
+ this.licenseKeyTagNonProduction = page
50
+ .getByText('Non-production license')
51
+ .first();
52
+ this.licenseKeyTagNonCommercial = page.getByText('Non-commercial license');
53
+ this.licenseKeyTagProduction = page.getByText('Production license').first();
54
+ this.licenseKeyTagCommercial = page.getByText('Commercial license');
55
+ }
56
+ async clickMappingRulesTab() {
57
+ await (0, test_1.expect)(this.mappingRulesTab).toBeVisible({ timeout: 30000 });
58
+ await this.mappingRulesTab.click();
59
+ }
60
+ async clickTenantsTab() {
61
+ await (0, test_1.expect)(this.tenantsTab).toBeVisible({ timeout: 30000 });
62
+ await this.tenantsTab.click();
63
+ }
64
+ async clickAuthorizationsTab() {
65
+ await (0, test_1.expect)(this.authorizationsTab).toBeVisible({ timeout: 30000 });
66
+ await this.authorizationsTab.click();
67
+ }
68
+ async clickRolesTab() {
69
+ await (0, test_1.expect)(this.rolesTab).toBeVisible({ timeout: 30000 });
70
+ await this.rolesTab.click();
71
+ }
72
+ async clickGroupsTab() {
73
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.groupsTab);
74
+ await this.groupsTab.click({ timeout: 30000 });
75
+ }
76
+ async clickClusterVariablesTab() {
77
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.clusterVariablesTab);
78
+ await this.clusterVariablesTab.click({ timeout: 30000 });
79
+ }
80
+ }
81
+ 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,110 @@
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
+ class OCIdentityMappingRulesPage {
7
+ page;
8
+ mappingRuleCell;
9
+ mappingRuleRow;
10
+ deleteMappingRuleDialog;
11
+ deleteMappingRuleButton;
12
+ createMappingModal;
13
+ closeCreateMappingModal;
14
+ createMappingIdField;
15
+ createMappingNameField;
16
+ createMappingClaimNameField;
17
+ createMappingClaimValueField;
18
+ createMappingModalCancelButton;
19
+ createMappingModalCreateButton;
20
+ createMappingButton;
21
+ filterTableSearchbox;
22
+ constructor(page) {
23
+ this.page = page;
24
+ this.mappingRuleCell = (name) => page.getByRole('cell', {
25
+ name,
26
+ exact: true,
27
+ });
28
+ this.mappingRuleRow = (name) => page.getByRole('row').filter({ hasText: name });
29
+ this.deleteMappingRuleDialog = page.getByRole('dialog', {
30
+ name: 'Delete Mapping rule',
31
+ });
32
+ this.filterTableSearchbox = page.getByRole('searchbox', {
33
+ name: 'Filter table',
34
+ });
35
+ this.deleteMappingRuleButton = this.deleteMappingRuleDialog
36
+ .getByRole('button', {
37
+ name: 'Delete Mapping rule',
38
+ })
39
+ .first();
40
+ // Create mapping modal
41
+ this.createMappingModal = page.getByRole('dialog', {
42
+ name: 'Create new mapping rule',
43
+ });
44
+ this.closeCreateMappingModal = this.createMappingModal.getByRole('button', {
45
+ name: 'Close',
46
+ });
47
+ this.createMappingIdField = this.createMappingModal.getByRole('textbox', {
48
+ name: 'Mapping rule ID',
49
+ });
50
+ this.createMappingNameField = this.createMappingModal.getByRole('textbox', {
51
+ name: 'Mapping rule name',
52
+ });
53
+ this.createMappingClaimNameField = this.createMappingModal.getByRole('textbox', {
54
+ name: 'Claim name',
55
+ });
56
+ this.createMappingClaimValueField = this.createMappingModal.getByRole('textbox', {
57
+ name: 'Claim value',
58
+ });
59
+ this.createMappingModalCancelButton = this.createMappingModal.getByRole('button', {
60
+ name: 'Cancel',
61
+ });
62
+ this.createMappingButton = page.getByRole('button', {
63
+ name: /Create mapping rule/i,
64
+ });
65
+ this.createMappingModalCreateButton = this.createMappingModal.getByRole('button', {
66
+ name: /Create mapping rule/i,
67
+ });
68
+ }
69
+ async filterTable(name) {
70
+ await this.filterTableSearchbox.click({ timeout: 60000 });
71
+ await this.filterTableSearchbox.fill(name);
72
+ await this.filterTableSearchbox.press('Enter');
73
+ }
74
+ async createMappingRule(mappingId, mappingName, claimName, claimValue) {
75
+ await (0, test_1.expect)(this.createMappingButton).toBeVisible({
76
+ timeout: 30000,
77
+ });
78
+ await this.createMappingButton.click();
79
+ await (0, test_1.expect)(this.createMappingModal).toBeVisible({
80
+ timeout: 30000,
81
+ });
82
+ await this.createMappingIdField.fill(mappingId);
83
+ await this.createMappingNameField.fill(mappingName);
84
+ await this.createMappingClaimNameField.fill(claimName);
85
+ await this.createMappingClaimValueField.fill(claimValue);
86
+ await this.createMappingModalCreateButton.click({
87
+ timeout: 30000,
88
+ });
89
+ await (0, test_1.expect)(this.createMappingModal).not.toBeVisible({
90
+ timeout: 30000,
91
+ });
92
+ }
93
+ async deleteMappingRule(rule) {
94
+ await this.filterTable(rule);
95
+ await (0, sleep_1.sleep)(3000);
96
+ const deleteButtons = this.page.getByRole('button', {
97
+ name: 'danger Delete',
98
+ });
99
+ (0, test_1.expect)(await deleteButtons.count()).toEqual(1);
100
+ await deleteButtons.first().click({ timeout: 60000 });
101
+ await (0, test_1.expect)(this.deleteMappingRuleDialog).toBeVisible({
102
+ timeout: 60000,
103
+ });
104
+ await this.deleteMappingRuleButton.click();
105
+ await (0, test_1.expect)(this.page.getByText('Mapping rule deleted')).toBeVisible({
106
+ timeout: 60000,
107
+ });
108
+ }
109
+ }
110
+ exports.OCIdentityMappingRulesPage = OCIdentityMappingRulesPage;
@@ -0,0 +1,55 @@
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 mappingRuleRow: (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 adminRole: Locator;
24
+ readonly assignUserButton: Locator;
25
+ readonly usernameTextBox: Locator;
26
+ readonly assignUserSubButton: Locator;
27
+ readonly clientsTab: Locator;
28
+ readonly assignClientsButton: Locator;
29
+ readonly clientIdTextBox: Locator;
30
+ readonly assignClientIdSubButton: Locator;
31
+ constructor(page: Page);
32
+ clickMappingRulesTab(): Promise<void>;
33
+ clickRole(roleID: string): Promise<void>;
34
+ assignMappingRuleToRole(roleId: string, mappingId: string): Promise<void>;
35
+ createRole(role: {
36
+ id: string;
37
+ name: string;
38
+ }): Promise<void>;
39
+ deleteRole(name: string, options?: {
40
+ throwError?: boolean;
41
+ }): Promise<void>;
42
+ clickAdminRole(): Promise<void>;
43
+ assignUserToRole(userId: string): Promise<void>;
44
+ clickAssignUserButton(): Promise<void>;
45
+ clickUsernameTextbox(): Promise<void>;
46
+ fillUsernameTextbox(userId: string): Promise<void>;
47
+ clickAssignUserSubButton(): Promise<void>;
48
+ clickClientsTab(): Promise<void>;
49
+ clickAssignClientButton(): Promise<void>;
50
+ clickClientIdTextbox(): Promise<void>;
51
+ fillClientIdTextbox(clientId: string): Promise<void>;
52
+ clickAssignClientIdSubButton(): Promise<void>;
53
+ addClientToRole(clientId: string): Promise<void>;
54
+ }
55
+ export { OCIdentityRolesPage };
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OCIdentityRolesPage = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const UtilitiesPage_1 = require("../SM-8.10/UtilitiesPage");
6
+ class OCIdentityRolesPage {
7
+ page;
8
+ selectResourceTypeTab;
9
+ assignMappingRuleButton;
10
+ mappingSearchBox;
11
+ assignMappingModal;
12
+ assignMappingModalSearchResult;
13
+ assignMappingModalAssignRuleButton;
14
+ rolesList;
15
+ roleCell;
16
+ mappingRuleRow;
17
+ createRoleButton;
18
+ createRoleModal;
19
+ createNameField;
20
+ createIdField;
21
+ createRoleModalCreateButton;
22
+ deleteRoleButton;
23
+ deleteRoleModal;
24
+ closeDeleteRoleModal;
25
+ deleteRoleModalCancelButton;
26
+ deleteRoleModalDeleteButton;
27
+ adminRole;
28
+ assignUserButton;
29
+ usernameTextBox;
30
+ assignUserSubButton;
31
+ clientsTab;
32
+ assignClientsButton;
33
+ clientIdTextBox;
34
+ assignClientIdSubButton;
35
+ constructor(page) {
36
+ this.page = page;
37
+ this.rolesList = page.getByRole('table');
38
+ this.selectResourceTypeTab = (resourceType) => page.getByRole('tab', { name: resourceType });
39
+ this.assignMappingRuleButton = page.getByRole('button', {
40
+ name: /^(Assign mapping rule|assignMapping)$/,
41
+ });
42
+ this.mappingSearchBox = page.getByRole('searchbox', {
43
+ name: 'Search by mapping rule ID',
44
+ });
45
+ this.assignMappingModal = page.getByRole('dialog', {
46
+ name: 'Assign mapping rule',
47
+ });
48
+ this.createRoleButton = page.getByRole('button', {
49
+ name: /create role/i,
50
+ });
51
+ this.assignMappingModalSearchResult =
52
+ this.assignMappingModal.getByRole('listbox');
53
+ this.assignMappingModalAssignRuleButton = this.assignMappingModal.getByRole('button', {
54
+ name: 'Assign mapping rule',
55
+ });
56
+ this.roleCell = (roleID) => this.rolesList.getByRole('cell', { name: roleID, exact: true });
57
+ this.mappingRuleRow = (name) => page.getByRole('row').filter({ hasText: name });
58
+ this.createRoleModal = page.getByRole('dialog', {
59
+ name: 'Create role',
60
+ });
61
+ this.createIdField = this.createRoleModal.getByRole('textbox', {
62
+ name: 'Role ID',
63
+ exact: true,
64
+ });
65
+ this.createNameField = this.createRoleModal.getByRole('textbox', {
66
+ name: 'Role name',
67
+ exact: true,
68
+ });
69
+ this.createRoleModalCreateButton = this.createRoleModal.getByRole('button', { name: 'Create role' });
70
+ this.deleteRoleButton = (rowName) => this.rolesList.getByRole('row', { name: rowName }).getByLabel('Delete');
71
+ this.deleteRoleModal = page.getByRole('dialog', { name: /delete role/i });
72
+ this.closeDeleteRoleModal = this.deleteRoleModal.getByRole('button', {
73
+ name: 'Close',
74
+ });
75
+ this.deleteRoleModalCancelButton = this.deleteRoleModal.getByRole('button', {
76
+ name: 'Cancel',
77
+ });
78
+ this.deleteRoleModalDeleteButton = this.deleteRoleModal.getByRole('button', {
79
+ name: /delete role/i,
80
+ });
81
+ this.adminRole = page.getByRole('cell', { name: 'admin', exact: true });
82
+ this.assignUserButton = page.getByRole('button', { name: 'Assign user' });
83
+ this.usernameTextBox = page.getByRole('textbox', { name: 'Username' });
84
+ this.assignUserSubButton = page
85
+ .getByLabel('Assign user')
86
+ .getByRole('button', { name: 'Assign user' });
87
+ this.clientsTab = page.getByRole('tab', { name: 'Clients' });
88
+ this.assignClientsButton = page.getByRole('button', {
89
+ name: 'Assign client',
90
+ });
91
+ this.clientIdTextBox = page.getByPlaceholder('Enter client ID');
92
+ this.assignClientIdSubButton = page
93
+ .getByLabel('Assign client')
94
+ .getByRole('button', { name: 'Assign client' });
95
+ }
96
+ async clickMappingRulesTab() {
97
+ await (0, test_1.expect)(this.selectResourceTypeTab('Mapping Rules')).toBeVisible({
98
+ timeout: 60000,
99
+ });
100
+ await this.selectResourceTypeTab('Mapping Rules').click();
101
+ }
102
+ async clickRole(roleID) {
103
+ await (0, test_1.expect)(this.roleCell(roleID).first()).toBeVisible({ timeout: 60000 });
104
+ await this.roleCell(roleID).first().click();
105
+ }
106
+ async assignMappingRuleToRole(roleId, mappingId) {
107
+ await this.clickRole(roleId);
108
+ await this.clickMappingRulesTab();
109
+ await (0, test_1.expect)(this.assignMappingRuleButton).toBeVisible({
110
+ timeout: 60000,
111
+ });
112
+ await this.assignMappingRuleButton.click({ timeout: 60000 });
113
+ await (0, test_1.expect)(this.assignMappingModal).toBeVisible({ timeout: 60000 });
114
+ await this.mappingSearchBox.fill(mappingId);
115
+ await this.assignMappingModalSearchResult.getByText(mappingId).click();
116
+ await this.assignMappingModalAssignRuleButton.click();
117
+ }
118
+ async createRole(role) {
119
+ await this.createRoleButton.click();
120
+ await (0, test_1.expect)(this.createRoleModal).toBeVisible();
121
+ await this.createIdField.fill(role.id);
122
+ await this.createNameField.fill(role.name);
123
+ await this.createRoleModalCreateButton.click();
124
+ await (0, test_1.expect)(this.createRoleModal).not.toBeVisible();
125
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(this.page, this.rolesList
126
+ .getByRole('cell', {
127
+ name: role.name,
128
+ })
129
+ .first(), role.id, 10000, false, 10);
130
+ }
131
+ async deleteRole(name, options) {
132
+ const { throwError = true } = options || {};
133
+ try {
134
+ await this.deleteRoleButton(name).click();
135
+ await (0, test_1.expect)(this.deleteRoleModal).toBeVisible();
136
+ await this.deleteRoleModalDeleteButton.click();
137
+ await (0, test_1.expect)(this.deleteRoleModal).not.toBeVisible();
138
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(this.page, this.rolesList
139
+ .getByRole('cell', {
140
+ name,
141
+ })
142
+ .first(), name, 5000, true);
143
+ }
144
+ catch (error) {
145
+ if (throwError) {
146
+ throw error;
147
+ }
148
+ else {
149
+ console.warn(`Role "${name}" could not be deleted or did not exist.`);
150
+ }
151
+ }
152
+ }
153
+ async clickAdminRole() {
154
+ await this.adminRole.click();
155
+ }
156
+ async assignUserToRole(userId) {
157
+ await this.clickAssignUserButton();
158
+ await this.clickUsernameTextbox();
159
+ await this.fillUsernameTextbox(userId);
160
+ await this.clickAssignUserSubButton();
161
+ }
162
+ async clickAssignUserButton() {
163
+ await this.assignUserButton.click();
164
+ }
165
+ async clickUsernameTextbox() {
166
+ await this.usernameTextBox.click();
167
+ }
168
+ async fillUsernameTextbox(userId) {
169
+ await this.usernameTextBox.fill(userId);
170
+ }
171
+ async clickAssignUserSubButton() {
172
+ await this.assignUserSubButton.click();
173
+ }
174
+ async clickClientsTab() {
175
+ await this.clientsTab.click();
176
+ }
177
+ async clickAssignClientButton() {
178
+ await this.assignClientsButton.click();
179
+ }
180
+ async clickClientIdTextbox() {
181
+ await this.clientIdTextBox.click();
182
+ }
183
+ async fillClientIdTextbox(clientId) {
184
+ await this.clientIdTextBox.fill(clientId);
185
+ }
186
+ async clickAssignClientIdSubButton() {
187
+ await this.assignClientIdSubButton.click();
188
+ }
189
+ async addClientToRole(clientId) {
190
+ await this.clickClientsTab();
191
+ await this.clickAssignClientButton();
192
+ await this.clickClientIdTextbox();
193
+ await this.fillClientIdTextbox(clientId);
194
+ await this.clickAssignClientIdSubButton();
195
+ }
196
+ }
197
+ exports.OCIdentityRolesPage = OCIdentityRolesPage;