@camunda/e2e-test-suite 0.0.1443 → 0.0.1444

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 (122) hide show
  1. package/.github/c8_versions.json +1 -0
  2. package/README.md +2 -0
  3. package/dist/fixtures/SM-8.11.d.ts +77 -0
  4. package/dist/fixtures/SM-8.11.js +176 -0
  5. package/dist/pages/SM-8.11/Authorization.d.ts +39 -0
  6. package/dist/pages/SM-8.11/Authorization.js +349 -0
  7. package/dist/pages/SM-8.11/ClusterDetailsPage.d.ts +8 -0
  8. package/dist/pages/SM-8.11/ClusterDetailsPage.js +65 -0
  9. package/dist/pages/SM-8.11/ClusterPage.d.ts +11 -0
  10. package/dist/pages/SM-8.11/ClusterPage.js +37 -0
  11. package/dist/pages/SM-8.11/ConnectorMarketplacePage.d.ts +27 -0
  12. package/dist/pages/SM-8.11/ConnectorMarketplacePage.js +187 -0
  13. package/dist/pages/SM-8.11/ConnectorSettingsPage.d.ts +41 -0
  14. package/dist/pages/SM-8.11/ConnectorSettingsPage.js +153 -0
  15. package/dist/pages/SM-8.11/ConnectorTemplatePage.d.ts +11 -0
  16. package/dist/pages/SM-8.11/ConnectorTemplatePage.js +34 -0
  17. package/dist/pages/SM-8.11/FormJsPage.d.ts +33 -0
  18. package/dist/pages/SM-8.11/FormJsPage.js +109 -0
  19. package/dist/pages/SM-8.11/HomePage.d.ts +20 -0
  20. package/dist/pages/SM-8.11/HomePage.js +49 -0
  21. package/dist/pages/SM-8.11/IdentityTenantPage.d.ts +53 -0
  22. package/dist/pages/SM-8.11/IdentityTenantPage.js +264 -0
  23. package/dist/pages/SM-8.11/IdentityUsersPage.d.ts +92 -0
  24. package/dist/pages/SM-8.11/IdentityUsersPage.js +485 -0
  25. package/dist/pages/SM-8.11/KeycloakAdminPage.d.ts +17 -0
  26. package/dist/pages/SM-8.11/KeycloakAdminPage.js +78 -0
  27. package/dist/pages/SM-8.11/KeycloakLoginPage.d.ts +12 -0
  28. package/dist/pages/SM-8.11/KeycloakLoginPage.js +32 -0
  29. package/dist/pages/SM-8.11/KeycloakUtils.d.ts +17 -0
  30. package/dist/pages/SM-8.11/KeycloakUtils.js +94 -0
  31. package/dist/pages/SM-8.11/LoginPage.d.ts +21 -0
  32. package/dist/pages/SM-8.11/LoginPage.js +112 -0
  33. package/dist/pages/SM-8.11/ManagementIdentityPage.d.ts +44 -0
  34. package/dist/pages/SM-8.11/ManagementIdentityPage.js +176 -0
  35. package/dist/pages/SM-8.11/ModelerCreatePage.d.ts +238 -0
  36. package/dist/pages/SM-8.11/ModelerCreatePage.js +1950 -0
  37. package/dist/pages/SM-8.11/ModelerHomePage.d.ts +97 -0
  38. package/dist/pages/SM-8.11/ModelerHomePage.js +956 -0
  39. package/dist/pages/SM-8.11/NavigationPage.d.ts +58 -0
  40. package/dist/pages/SM-8.11/NavigationPage.js +389 -0
  41. package/dist/pages/SM-8.11/OCIdentityAuthorizationsPage.d.ts +10 -0
  42. package/dist/pages/SM-8.11/OCIdentityAuthorizationsPage.js +22 -0
  43. package/dist/pages/SM-8.11/OCIdentityClusterVariablesPage.d.ts +22 -0
  44. package/dist/pages/SM-8.11/OCIdentityClusterVariablesPage.js +120 -0
  45. package/dist/pages/SM-8.11/OCIdentityGroupsPage.d.ts +39 -0
  46. package/dist/pages/SM-8.11/OCIdentityGroupsPage.js +154 -0
  47. package/dist/pages/SM-8.11/OCIdentityHomePage.d.ts +23 -0
  48. package/dist/pages/SM-8.11/OCIdentityHomePage.js +115 -0
  49. package/dist/pages/SM-8.11/OCIdentityMappingRulesPage.d.ts +23 -0
  50. package/dist/pages/SM-8.11/OCIdentityMappingRulesPage.js +116 -0
  51. package/dist/pages/SM-8.11/OCIdentityRolesPage.d.ts +61 -0
  52. package/dist/pages/SM-8.11/OCIdentityRolesPage.js +433 -0
  53. package/dist/pages/SM-8.11/OCTenantPage.d.ts +73 -0
  54. package/dist/pages/SM-8.11/OCTenantPage.js +399 -0
  55. package/dist/pages/SM-8.11/OperateHomePage.d.ts +26 -0
  56. package/dist/pages/SM-8.11/OperateHomePage.js +139 -0
  57. package/dist/pages/SM-8.11/OperateProcessInstancePage.d.ts +30 -0
  58. package/dist/pages/SM-8.11/OperateProcessInstancePage.js +276 -0
  59. package/dist/pages/SM-8.11/OperateProcessesPage.d.ts +38 -0
  60. package/dist/pages/SM-8.11/OperateProcessesPage.js +383 -0
  61. package/dist/pages/SM-8.11/OptimizeCollectionsPage.d.ts +17 -0
  62. package/dist/pages/SM-8.11/OptimizeCollectionsPage.js +62 -0
  63. package/dist/pages/SM-8.11/OptimizeDashboardPage.d.ts +14 -0
  64. package/dist/pages/SM-8.11/OptimizeDashboardPage.js +63 -0
  65. package/dist/pages/SM-8.11/OptimizeHomePage.d.ts +19 -0
  66. package/dist/pages/SM-8.11/OptimizeHomePage.js +76 -0
  67. package/dist/pages/SM-8.11/OptimizeReportPage.d.ts +50 -0
  68. package/dist/pages/SM-8.11/OptimizeReportPage.js +209 -0
  69. package/dist/pages/SM-8.11/PlayPage.d.ts +47 -0
  70. package/dist/pages/SM-8.11/PlayPage.js +389 -0
  71. package/dist/pages/SM-8.11/ProcessApplicationPage.d.ts +35 -0
  72. package/dist/pages/SM-8.11/ProcessApplicationPage.js +340 -0
  73. package/dist/pages/SM-8.11/SettingsPage.d.ts +12 -0
  74. package/dist/pages/SM-8.11/SettingsPage.js +34 -0
  75. package/dist/pages/SM-8.11/TaskDetailsPage.d.ts +70 -0
  76. package/dist/pages/SM-8.11/TaskDetailsPage.js +273 -0
  77. package/dist/pages/SM-8.11/TaskPanelPage.d.ts +29 -0
  78. package/dist/pages/SM-8.11/TaskPanelPage.js +320 -0
  79. package/dist/pages/SM-8.11/TaskProcessesPage.d.ts +15 -0
  80. package/dist/pages/SM-8.11/TaskProcessesPage.js +77 -0
  81. package/dist/pages/SM-8.11/UtilitiesPage.d.ts +38 -0
  82. package/dist/pages/SM-8.11/UtilitiesPage.js +573 -0
  83. package/dist/pages/SM-8.11/optimizeReportUtils.d.ts +6 -0
  84. package/dist/pages/SM-8.11/optimizeReportUtils.js +77 -0
  85. package/dist/tests/SM-8.11/cluster-management-user-flows.spec.d.ts +1 -0
  86. package/dist/tests/SM-8.11/cluster-management-user-flows.spec.js +48 -0
  87. package/dist/tests/SM-8.11/cluster-variables.spec.d.ts +1 -0
  88. package/dist/tests/SM-8.11/cluster-variables.spec.js +226 -0
  89. package/dist/tests/SM-8.11/connectors-user-flows.spec.d.ts +1 -0
  90. package/dist/tests/SM-8.11/connectors-user-flows.spec.js +307 -0
  91. package/dist/tests/SM-8.11/document-handling-user-flows.spec.d.ts +1 -0
  92. package/dist/tests/SM-8.11/document-handling-user-flows.spec.js +174 -0
  93. package/dist/tests/SM-8.11/hto-user-flows.spec.d.ts +1 -0
  94. package/dist/tests/SM-8.11/hto-user-flows.spec.js +410 -0
  95. package/dist/tests/SM-8.11/hub-web-modeler-smoke.spec.d.ts +1 -0
  96. package/dist/tests/SM-8.11/hub-web-modeler-smoke.spec.js +24 -0
  97. package/dist/tests/SM-8.11/identity-user-flows.spec.d.ts +1 -0
  98. package/dist/tests/SM-8.11/identity-user-flows.spec.js +220 -0
  99. package/dist/tests/SM-8.11/license-key-user-flows.spec.d.ts +1 -0
  100. package/dist/tests/SM-8.11/license-key-user-flows.spec.js +461 -0
  101. package/dist/tests/SM-8.11/login.spec.d.ts +1 -0
  102. package/dist/tests/SM-8.11/login.spec.js +24 -0
  103. package/dist/tests/SM-8.11/migration-path-user-flows.spec.d.ts +1 -0
  104. package/dist/tests/SM-8.11/migration-path-user-flows.spec.js +263 -0
  105. package/dist/tests/SM-8.11/mt-enabled-user-flows.spec.d.ts +1 -0
  106. package/dist/tests/SM-8.11/mt-enabled-user-flows.spec.js +607 -0
  107. package/dist/tests/SM-8.11/optimize-user-flows.spec.d.ts +1 -0
  108. package/dist/tests/SM-8.11/optimize-user-flows.spec.js +505 -0
  109. package/dist/tests/SM-8.11/play.spec.d.ts +1 -0
  110. package/dist/tests/SM-8.11/play.spec.js +144 -0
  111. package/dist/tests/SM-8.11/rba-enabled-user-flows.spec.d.ts +1 -0
  112. package/dist/tests/SM-8.11/rba-enabled-user-flows.spec.js +712 -0
  113. package/dist/tests/SM-8.11/smoke-tests.spec.d.ts +1 -0
  114. package/dist/tests/SM-8.11/smoke-tests.spec.js +167 -0
  115. package/dist/tests/SM-8.11/test-setup.spec.d.ts +1 -0
  116. package/dist/tests/SM-8.11/test-setup.spec.js +24 -0
  117. package/dist/tests/SM-8.11/topology-orchestration-smoke.spec.d.ts +1 -0
  118. package/dist/tests/SM-8.11/topology-orchestration-smoke.spec.js +58 -0
  119. package/dist/tests/SM-8.11/web-modeler-user-flows.spec.d.ts +1 -0
  120. package/dist/tests/SM-8.11/web-modeler-user-flows.spec.js +223 -0
  121. package/package.json +1 -1
  122. package/playwright.config.ts +21 -0
@@ -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,115 @@
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
22
+ .getByRole('link', { name: 'Camunda Admin', exact: true })
23
+ .or(page.locator('a').filter({ hasText: /^Camunda logo\s*Admin$/ }))
24
+ .first();
25
+ this.groupsTab = page
26
+ .getByRole('navigation', { name: 'Main navigation' })
27
+ .getByRole('link', { name: 'Groups', exact: true })
28
+ .or(page
29
+ .getByRole('banner')
30
+ .locator('a')
31
+ .filter({ hasText: /^Groups$/ }))
32
+ .first();
33
+ this.mappingRulesTab = page
34
+ .getByRole('navigation', { name: 'Main navigation' })
35
+ .getByRole('link', { name: 'Mapping rules', exact: true })
36
+ .or(page
37
+ .getByRole('banner')
38
+ .locator('a')
39
+ .filter({ hasText: /^Mapping rules$/ }))
40
+ .first();
41
+ this.tenantsTab = page
42
+ .getByRole('navigation', { name: 'Main navigation' })
43
+ .getByRole('link', { name: 'Tenants', exact: true })
44
+ .or(page
45
+ .getByRole('banner')
46
+ .locator('a')
47
+ .filter({ hasText: /^Tenants$/ }))
48
+ .first();
49
+ this.rolesTab = page
50
+ .getByRole('navigation', { name: 'Main navigation' })
51
+ .getByRole('link', { name: 'Roles', exact: true })
52
+ .or(page
53
+ .getByRole('banner')
54
+ .locator('a')
55
+ .filter({ hasText: /^Roles$/ }))
56
+ .first();
57
+ this.authorizationsTab = page
58
+ .getByRole('navigation', { name: 'Main navigation' })
59
+ .getByRole('link', { name: 'Authorizations', exact: true })
60
+ .or(page
61
+ .getByRole('banner')
62
+ .locator('a')
63
+ .filter({ hasText: /^Authorizations$/ }))
64
+ .first();
65
+ this.clusterVariablesTab = page
66
+ .getByRole('navigation', { name: 'Main navigation' })
67
+ .getByRole('link', { name: 'Cluster variables', exact: true })
68
+ .or(page
69
+ .getByRole('banner')
70
+ .locator('a')
71
+ .filter({ hasText: /Cluster variables/i }))
72
+ .first();
73
+ this.licenseKeyTagNonProduction = page
74
+ .getByText('Non-production license')
75
+ .first();
76
+ this.licenseKeyTagNonCommercial = page.getByText('Non-commercial license');
77
+ this.licenseKeyTagProduction = page.getByText('Production license').first();
78
+ this.licenseKeyTagCommercial = page.getByText('Commercial license');
79
+ }
80
+ async clickMappingRulesTab() {
81
+ await (0, test_1.expect)(this.mappingRulesTab).toBeVisible({ timeout: 30000 });
82
+ await this.mappingRulesTab.click();
83
+ }
84
+ async clickTenantsTab() {
85
+ await (0, test_1.expect)(this.tenantsTab).toBeVisible({ timeout: 30000 });
86
+ await this.tenantsTab.click();
87
+ }
88
+ async clickAuthorizationsTab() {
89
+ await (0, test_1.expect)(this.authorizationsTab).toBeVisible({ timeout: 30000 });
90
+ await this.authorizationsTab.click();
91
+ }
92
+ async clickRolesTab() {
93
+ // Reload between attempts: the Admin shell can render its branding link
94
+ // (which is all goToOCAdmin waits for) before the nav hydrates, and /admin
95
+ // serves a no-permission view while the user's admin authorization is
96
+ // still propagating. A flat wait on the same DOM can recover from neither.
97
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.rolesTab, {
98
+ visibilityTimeout: 30000,
99
+ totalTimeout: 120000,
100
+ postAction: async () => {
101
+ await this.page.reload();
102
+ },
103
+ });
104
+ await this.rolesTab.click({ timeout: 30000 });
105
+ }
106
+ async clickGroupsTab() {
107
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.groupsTab);
108
+ await this.groupsTab.click({ timeout: 30000 });
109
+ }
110
+ async clickClusterVariablesTab() {
111
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.clusterVariablesTab);
112
+ await this.clusterVariablesTab.click({ timeout: 30000 });
113
+ }
114
+ }
115
+ 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,116 @@
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
+ // The design-system Admin shell replaced Carbon's table toolbar search
33
+ // (labelled "Filter table") with an input whose aria-label is its
34
+ // placeholder, so match the new shell first and fall back to the legacy
35
+ // one - the same dual-shell pattern the Admin nav locators use.
36
+ this.filterTableSearchbox = page
37
+ .getByRole('searchbox', { name: 'Search by mapping rule ID' })
38
+ .or(page.getByRole('searchbox', { name: 'Filter table' }))
39
+ .first();
40
+ this.deleteMappingRuleButton = this.deleteMappingRuleDialog
41
+ .getByRole('button', {
42
+ name: 'Delete Mapping rule',
43
+ })
44
+ .first();
45
+ // Create mapping modal
46
+ this.createMappingModal = page.getByRole('dialog', {
47
+ name: 'Create new mapping rule',
48
+ });
49
+ this.closeCreateMappingModal = this.createMappingModal.getByRole('button', {
50
+ name: 'Close',
51
+ });
52
+ this.createMappingIdField = this.createMappingModal.getByRole('textbox', {
53
+ name: 'Mapping rule ID',
54
+ });
55
+ this.createMappingNameField = this.createMappingModal.getByRole('textbox', {
56
+ name: 'Mapping rule name',
57
+ });
58
+ this.createMappingClaimNameField = this.createMappingModal.getByRole('textbox', {
59
+ name: 'Claim name',
60
+ });
61
+ this.createMappingClaimValueField = this.createMappingModal.getByRole('textbox', {
62
+ name: 'Claim value',
63
+ });
64
+ this.createMappingModalCancelButton = this.createMappingModal.getByRole('button', {
65
+ name: 'Cancel',
66
+ });
67
+ this.createMappingButton = page.getByRole('button', {
68
+ name: /Create mapping rule/i,
69
+ });
70
+ this.createMappingModalCreateButton = this.createMappingModal.getByRole('button', {
71
+ name: /Create mapping rule/i,
72
+ });
73
+ }
74
+ async filterTable(name) {
75
+ await this.filterTableSearchbox.click({ timeout: 60000 });
76
+ await this.filterTableSearchbox.fill(name);
77
+ await this.filterTableSearchbox.press('Enter');
78
+ }
79
+ async createMappingRule(mappingId, mappingName, claimName, claimValue) {
80
+ await (0, test_1.expect)(this.createMappingButton).toBeVisible({
81
+ timeout: 30000,
82
+ });
83
+ await this.createMappingButton.click();
84
+ await (0, test_1.expect)(this.createMappingModal).toBeVisible({
85
+ timeout: 30000,
86
+ });
87
+ await this.createMappingIdField.fill(mappingId);
88
+ await this.createMappingNameField.fill(mappingName);
89
+ await this.createMappingClaimNameField.fill(claimName);
90
+ await this.createMappingClaimValueField.fill(claimValue);
91
+ await this.createMappingModalCreateButton.click({
92
+ timeout: 30000,
93
+ });
94
+ await (0, test_1.expect)(this.createMappingModal).not.toBeVisible({
95
+ timeout: 30000,
96
+ });
97
+ }
98
+ async deleteMappingRule(rule) {
99
+ await this.filterTable(rule);
100
+ await (0, sleep_1.sleep)(3000);
101
+ const deleteButtons = this.page.getByRole('button', {
102
+ name: 'Delete',
103
+ exact: true,
104
+ });
105
+ (0, test_1.expect)(await deleteButtons.count()).toEqual(1);
106
+ await deleteButtons.first().click({ timeout: 60000 });
107
+ await (0, test_1.expect)(this.deleteMappingRuleDialog).toBeVisible({
108
+ timeout: 60000,
109
+ });
110
+ await this.deleteMappingRuleButton.click();
111
+ await (0, test_1.expect)(this.page.getByText('Mapping rule deleted')).toBeVisible({
112
+ timeout: 60000,
113
+ });
114
+ }
115
+ }
116
+ exports.OCIdentityMappingRulesPage = OCIdentityMappingRulesPage;
@@ -0,0 +1,61 @@
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 mappingSearchTrigger: Locator;
8
+ readonly assignMappingModal: Locator;
9
+ readonly assignMappingRuleOption: (name: string) => Locator;
10
+ readonly assignMappingModalAssignRuleButton: Locator;
11
+ readonly rolesList: Locator;
12
+ readonly roleCell: (name: string) => Locator;
13
+ readonly mappingRuleRow: (name: string) => Locator;
14
+ readonly createRoleButton: Locator;
15
+ readonly createRoleModal: Locator;
16
+ readonly createNameField: Locator;
17
+ readonly createIdField: Locator;
18
+ readonly createRoleModalCreateButton: Locator;
19
+ readonly deleteRoleButton: (rowName?: string) => Locator;
20
+ readonly deleteRoleModal: Locator;
21
+ readonly closeDeleteRoleModal: Locator;
22
+ readonly deleteRoleModalCancelButton: Locator;
23
+ readonly deleteRoleModalDeleteButton: Locator;
24
+ readonly adminRole: Locator;
25
+ readonly rolesNavTab: Locator;
26
+ readonly assignUserButton: Locator;
27
+ readonly usernameTextBox: Locator;
28
+ readonly assignUserSubButton: Locator;
29
+ readonly clientsTab: Locator;
30
+ readonly assignClientsButton: Locator;
31
+ readonly clientIdTextBox: Locator;
32
+ readonly assignClientIdSubButton: Locator;
33
+ readonly notFoundText: Locator;
34
+ constructor(page: Page);
35
+ clickMappingRulesTab(): Promise<void>;
36
+ clickRole(roleID: string): Promise<void>;
37
+ assignMappingRuleToRole(roleId: string, mappingId: string): Promise<void>;
38
+ createRole(role: {
39
+ id: string;
40
+ name: string;
41
+ }): Promise<void>;
42
+ deleteRole(name: string, options?: {
43
+ throwError?: boolean;
44
+ }): Promise<void>;
45
+ private isRolesListOpen;
46
+ private openRolesList;
47
+ private recoverToRolesList;
48
+ clickAdminRole(): Promise<void>;
49
+ assignUserToRole(userId: string): Promise<void>;
50
+ clickAssignUserButton(): Promise<void>;
51
+ clickUsernameTextbox(): Promise<void>;
52
+ fillUsernameTextbox(userId: string): Promise<void>;
53
+ clickAssignUserSubButton(): Promise<void>;
54
+ clickClientsTab(): Promise<void>;
55
+ clickAssignClientButton(): Promise<void>;
56
+ clickClientIdTextbox(): Promise<void>;
57
+ fillClientIdTextbox(clientId: string): Promise<void>;
58
+ clickAssignClientIdSubButton(): Promise<void>;
59
+ addClientToRole(clientId: string): Promise<void>;
60
+ }
61
+ export { OCIdentityRolesPage };