@camunda/e2e-test-suite 0.0.194 → 0.0.196
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.
- package/README.md +7 -0
- package/dist/pages/8.9/AppsPage.d.ts +5 -5
- package/dist/pages/8.9/AppsPage.js +19 -20
- package/dist/pages/8.9/Authorization.js +3 -1
- package/dist/pages/8.9/OCIdentityHomePage.d.ts +1 -1
- package/dist/pages/8.9/OCIdentityHomePage.js +6 -6
- package/dist/tests/8.9/access-user-role-management.spec.js +4 -4
- package/dist/tests/8.9/navigation.spec.js +2 -2
- package/dist/tests/8.9/rba-enabled-v1-user-flows.spec.js +6 -6
- package/dist/tests/8.9/rba-enabled-v2-user-flows.spec.js +5 -5
- package/dist/tests/8.9/utr-enabled-user-flows.spec.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -317,6 +317,13 @@ By following this convention, we ensure **clarity, consistency, and alignment wi
|
|
|
317
317
|
| `all-latest` | Runs SM tests against all latest versions |
|
|
318
318
|
|
|
319
319
|
|
|
320
|
+
### c8Run Supported Versions, Modes and Projects
|
|
321
|
+
| Version | Docker Allowed? | OS When Docker | OS When Non-Docker | Projects (Non-Docker) | Projects (Docker) |
|
|
322
|
+
|---------|----------------|----------------|--------------------|-----------------------|-------------------|
|
|
323
|
+
| 8.6 | No | — | ubuntu, macOS | — | chromium (ES) |
|
|
324
|
+
| 8.7 | Yes | ubuntu-latest only | ubuntu, macOS, windows | chromium (ES) | chromium (ES) |
|
|
325
|
+
| 8.8 | Yes | ubuntu-latest only | ubuntu, macOS, windows | chromium-v1 (ES) + chromium-v2 (ES) | chromium-v2 (ES) |
|
|
326
|
+
| 8.9 | Yes | ubuntu-latest only | ubuntu, macOS, windows | chromium-v1 (ES) + chromium-v2 (ES) + chromium-v2 (RDBMS) | chromium-v2 (ES) |
|
|
320
327
|
## Viewing Test Results
|
|
321
328
|
|
|
322
329
|
### Locally:
|
|
@@ -3,14 +3,14 @@ declare class AppsPage {
|
|
|
3
3
|
private page;
|
|
4
4
|
readonly modelerLink: Locator;
|
|
5
5
|
readonly tasklistLink: Locator;
|
|
6
|
-
readonly
|
|
6
|
+
readonly adminLink: Locator;
|
|
7
7
|
readonly operateLink: Locator;
|
|
8
8
|
readonly optimizeButton: Locator;
|
|
9
|
-
readonly
|
|
9
|
+
readonly adminButton: Locator;
|
|
10
10
|
readonly tasklistButton: Locator;
|
|
11
11
|
readonly operateButton: Locator;
|
|
12
12
|
readonly operateListItem: Locator;
|
|
13
|
-
readonly
|
|
13
|
+
readonly adminListItem: Locator;
|
|
14
14
|
readonly optimizeListItem: Locator;
|
|
15
15
|
readonly tasklistListItem: Locator;
|
|
16
16
|
readonly appSwitcherButton: Locator;
|
|
@@ -22,10 +22,10 @@ declare class AppsPage {
|
|
|
22
22
|
clickCluster(component: Locator, name: string): Promise<void>;
|
|
23
23
|
clickModeler(): Promise<void>;
|
|
24
24
|
clickTasklist(clusterName: string): Promise<void>;
|
|
25
|
-
|
|
25
|
+
clickAdmin(clusterName: string): Promise<void>;
|
|
26
26
|
private doClickClusterInOperate;
|
|
27
27
|
private doClickClusterInTasklist;
|
|
28
|
-
private
|
|
28
|
+
private doClickClusterInAdmin;
|
|
29
29
|
private doClickClusterInOptimize;
|
|
30
30
|
clickOperate(clusterName: string): Promise<void>;
|
|
31
31
|
clickOptimize(clusterName: string): Promise<void>;
|
|
@@ -8,14 +8,14 @@ class AppsPage {
|
|
|
8
8
|
page;
|
|
9
9
|
modelerLink;
|
|
10
10
|
tasklistLink;
|
|
11
|
-
|
|
11
|
+
adminLink;
|
|
12
12
|
operateLink;
|
|
13
13
|
optimizeButton;
|
|
14
|
-
|
|
14
|
+
adminButton;
|
|
15
15
|
tasklistButton;
|
|
16
16
|
operateButton;
|
|
17
17
|
operateListItem;
|
|
18
|
-
|
|
18
|
+
adminListItem;
|
|
19
19
|
optimizeListItem;
|
|
20
20
|
tasklistListItem;
|
|
21
21
|
appSwitcherButton;
|
|
@@ -28,7 +28,7 @@ class AppsPage {
|
|
|
28
28
|
this.modelerLink = page.getByRole('link', { name: 'Modeler', exact: true });
|
|
29
29
|
this.appSwitcherButton = page.getByLabel('App Switcher');
|
|
30
30
|
this.tasklistLink = page.getByRole('link', { name: 'Tasklist', exact: true });
|
|
31
|
-
this.
|
|
31
|
+
this.adminLink = page.getByRole('link', { name: /^(Admin|Identity)$/ });
|
|
32
32
|
this.operateLink = page.getByRole('link', { name: 'Operate', exact: true });
|
|
33
33
|
this.optimizeLink = page.getByRole('link', { name: 'Optimize', exact: true });
|
|
34
34
|
this.consoleLink = page.getByRole('link', { name: 'Console', exact: true });
|
|
@@ -43,9 +43,9 @@ class AppsPage {
|
|
|
43
43
|
this.operateListItem = this.page
|
|
44
44
|
.getByRole('listitem')
|
|
45
45
|
.filter({ hasText: 'Operate' });
|
|
46
|
-
this.
|
|
46
|
+
this.adminListItem = this.page
|
|
47
47
|
.getByRole('listitem')
|
|
48
|
-
.filter({ hasText:
|
|
48
|
+
.filter({ hasText: /Admin|Identity/ }); // Identity Should be removed after https://github.com/camunda/camunda/issues/46447 is fixed
|
|
49
49
|
this.operateButton = page.getByRole('button', {
|
|
50
50
|
name: 'Operate',
|
|
51
51
|
exact: true,
|
|
@@ -58,9 +58,8 @@ class AppsPage {
|
|
|
58
58
|
name: 'Tasklist',
|
|
59
59
|
exact: true,
|
|
60
60
|
});
|
|
61
|
-
this.
|
|
62
|
-
name:
|
|
63
|
-
exact: true,
|
|
61
|
+
this.adminButton = page.getByRole('button', {
|
|
62
|
+
name: /^(Admin|Identity)$/, // Identity Should be removed after https://github.com/camunda/camunda/issues/46447 is fixed
|
|
64
63
|
});
|
|
65
64
|
}
|
|
66
65
|
async clickCluster(component, name) {
|
|
@@ -128,27 +127,27 @@ class AppsPage {
|
|
|
128
127
|
}
|
|
129
128
|
throw new Error(`Failed to click the tasklist link after ${maxRetries} attempts.`);
|
|
130
129
|
}
|
|
131
|
-
async
|
|
130
|
+
async clickAdmin(clusterName) {
|
|
132
131
|
const maxRetries = 5;
|
|
133
132
|
for (let retries = 0; retries < maxRetries; retries++) {
|
|
134
133
|
try {
|
|
135
134
|
if (retries === 0) {
|
|
136
135
|
//Single cluster
|
|
137
|
-
if (await this.
|
|
138
|
-
await this.
|
|
136
|
+
if (await this.adminLink.isVisible({ timeout: 5000 })) {
|
|
137
|
+
await this.adminLink.click({ timeout: 10000 });
|
|
139
138
|
}
|
|
140
139
|
else {
|
|
141
140
|
//Multiple clusters
|
|
142
|
-
await this.
|
|
141
|
+
await this.doClickClusterInAdmin(clusterName);
|
|
143
142
|
}
|
|
144
143
|
}
|
|
145
144
|
else {
|
|
146
145
|
await this.clickCamundaApps();
|
|
147
|
-
if (await this.
|
|
148
|
-
await this.
|
|
146
|
+
if (await this.adminLink.isVisible({ timeout: 5000 })) {
|
|
147
|
+
await this.adminLink.click({ timeout: 10000 });
|
|
149
148
|
}
|
|
150
149
|
else {
|
|
151
|
-
await this.
|
|
150
|
+
await this.doClickClusterInAdmin(clusterName);
|
|
152
151
|
}
|
|
153
152
|
}
|
|
154
153
|
return;
|
|
@@ -182,15 +181,15 @@ class AppsPage {
|
|
|
182
181
|
}
|
|
183
182
|
await this.clickCluster(this.tasklistListItem, clusterName);
|
|
184
183
|
}
|
|
185
|
-
async
|
|
186
|
-
if (await this.
|
|
184
|
+
async doClickClusterInAdmin(clusterName) {
|
|
185
|
+
if (await this.adminListItem
|
|
187
186
|
.getByRole('button', {
|
|
188
187
|
expanded: true,
|
|
189
188
|
})
|
|
190
189
|
.isHidden({ timeout: 5000 })) {
|
|
191
|
-
await this.
|
|
190
|
+
await this.adminButton.click({ timeout: 10000 });
|
|
192
191
|
}
|
|
193
|
-
await this.clickCluster(this.
|
|
192
|
+
await this.clickCluster(this.adminListItem, clusterName);
|
|
194
193
|
}
|
|
195
194
|
async doClickClusterInOptimize(clusterName) {
|
|
196
195
|
if (await this.optimizeListItem
|
|
@@ -106,7 +106,9 @@ class Authorization {
|
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
108
|
await this.createAuthorizationSubmitButton.click();
|
|
109
|
-
await (0, test_1.expect)(this.createAuthorizationModal).not.toBeVisible(
|
|
109
|
+
await (0, test_1.expect)(this.createAuthorizationModal).not.toBeVisible({
|
|
110
|
+
timeout: 30000,
|
|
111
|
+
});
|
|
110
112
|
await this.selectResourceTypeTab(authorization.resourceType).click();
|
|
111
113
|
const item = this.page.getByRole('row').filter({
|
|
112
114
|
hasText: `${authorization.ownerId}${authorization.resourceId}`,
|
|
@@ -2,7 +2,7 @@ import { Page, Locator } from '@playwright/test';
|
|
|
2
2
|
declare class OCIdentityHomePage {
|
|
3
3
|
private page;
|
|
4
4
|
readonly groupsTab: Locator;
|
|
5
|
-
readonly
|
|
5
|
+
readonly adminBanner: Locator;
|
|
6
6
|
readonly rolesTab: Locator;
|
|
7
7
|
readonly authorizationsTab: Locator;
|
|
8
8
|
readonly licenseKeyTagNonProduction: Locator;
|
|
@@ -5,7 +5,7 @@ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLoc
|
|
|
5
5
|
class OCIdentityHomePage {
|
|
6
6
|
page;
|
|
7
7
|
groupsTab;
|
|
8
|
-
|
|
8
|
+
adminBanner;
|
|
9
9
|
rolesTab;
|
|
10
10
|
authorizationsTab;
|
|
11
11
|
licenseKeyTagNonProduction;
|
|
@@ -15,22 +15,22 @@ class OCIdentityHomePage {
|
|
|
15
15
|
noPermissionsMessage;
|
|
16
16
|
constructor(page) {
|
|
17
17
|
this.page = page;
|
|
18
|
-
this.
|
|
19
|
-
name: 'Camunda logo
|
|
18
|
+
this.adminBanner = page.getByRole('link', {
|
|
19
|
+
name: 'Camunda logo Admin',
|
|
20
20
|
});
|
|
21
21
|
this.groupsTab = page
|
|
22
22
|
.getByRole('banner')
|
|
23
|
-
.getByLabel('
|
|
23
|
+
.getByLabel('Admin')
|
|
24
24
|
.locator('a')
|
|
25
25
|
.filter({ hasText: 'Groups' });
|
|
26
26
|
this.rolesTab = page
|
|
27
27
|
.getByRole('banner')
|
|
28
|
-
.getByLabel('
|
|
28
|
+
.getByLabel('Admin')
|
|
29
29
|
.locator('a')
|
|
30
30
|
.filter({ hasText: 'Roles' });
|
|
31
31
|
this.authorizationsTab = page
|
|
32
32
|
.getByRole('banner')
|
|
33
|
-
.getByLabel('
|
|
33
|
+
.getByLabel('Admin')
|
|
34
34
|
.locator('a')
|
|
35
35
|
.filter({ hasText: /^Authorizations$/ });
|
|
36
36
|
this.licenseKeyTagNonProduction = page
|
|
@@ -91,7 +91,7 @@ _8_9_1.test.describe('User Roles User Flow', () => {
|
|
|
91
91
|
await page.goBack();
|
|
92
92
|
await (0, UtilitiesPage_1.waitForLoadingToFinish)(page);
|
|
93
93
|
await appsPage.clickCamundaApps();
|
|
94
|
-
await appsPage.
|
|
94
|
+
await appsPage.clickAdmin(clusterName);
|
|
95
95
|
await (0, test_1.expect)(ocIdentityHomePage.noPermissionsMessage).toBeVisible({
|
|
96
96
|
timeout: 60000,
|
|
97
97
|
});
|
|
@@ -185,7 +185,7 @@ _8_9_1.test.describe('User Roles User Flow', () => {
|
|
|
185
185
|
await _8_9_1.test.step('Navigate to Identity and Ensure Identity is not Accessible', async () => {
|
|
186
186
|
await page.goBack();
|
|
187
187
|
await appsPage.clickCamundaApps();
|
|
188
|
-
await appsPage.
|
|
188
|
+
await appsPage.clickAdmin(clusterName);
|
|
189
189
|
await (0, test_1.expect)(ocIdentityHomePage.noPermissionsMessage).toBeVisible({
|
|
190
190
|
timeout: 60000,
|
|
191
191
|
});
|
|
@@ -278,8 +278,8 @@ _8_9_1.test.describe('User Roles User Flow', () => {
|
|
|
278
278
|
await _8_9_1.test.step('Navigate to Identity and Ensure Identity is Accessible', async () => {
|
|
279
279
|
await page.goBack();
|
|
280
280
|
await appsPage.clickCamundaApps();
|
|
281
|
-
await appsPage.
|
|
282
|
-
await (0, test_1.expect)(ocIdentityHomePage.
|
|
281
|
+
await appsPage.clickAdmin(clusterName);
|
|
282
|
+
await (0, test_1.expect)(ocIdentityHomePage.adminBanner).toBeVisible({
|
|
283
283
|
timeout: 60000,
|
|
284
284
|
});
|
|
285
285
|
await (0, test_1.expect)(ocIdentityHomePage.noPermissionsMessage).not.toBeVisible({
|
|
@@ -56,8 +56,8 @@ _8_9_1.test.describe('Navigation Tests', () => {
|
|
|
56
56
|
});
|
|
57
57
|
await _8_9_1.test.step('Assert Tasklist Navigation', async () => {
|
|
58
58
|
await appsPage.clickCamundaApps();
|
|
59
|
-
await appsPage.
|
|
60
|
-
await (0, test_1.expect)(ocIdentityHomePage.
|
|
59
|
+
await appsPage.clickAdmin(clusterName);
|
|
60
|
+
await (0, test_1.expect)(ocIdentityHomePage.adminBanner).toBeVisible({
|
|
61
61
|
timeout: 120000,
|
|
62
62
|
});
|
|
63
63
|
});
|
|
@@ -43,7 +43,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV1', () => {
|
|
|
43
43
|
};
|
|
44
44
|
await _8_9_1.test.step('Navigate to OC Identity and Assign User To A Role', async () => {
|
|
45
45
|
await appsPage.clickCamundaApps();
|
|
46
|
-
await appsPage.
|
|
46
|
+
await appsPage.clickAdmin(clusterName);
|
|
47
47
|
await ocIdentityHomePage.clickRolesTab();
|
|
48
48
|
await ocIdentityRolesPage.assignUserToRole(role, testUser.username);
|
|
49
49
|
});
|
|
@@ -126,7 +126,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV1', () => {
|
|
|
126
126
|
});
|
|
127
127
|
await _8_9_1.test.step('Navigate back to Identity and Remove Create Authorization Permission From Both Process', async () => {
|
|
128
128
|
await appsPage.clickCamundaApps();
|
|
129
|
-
await appsPage.
|
|
129
|
+
await appsPage.clickAdmin(clusterName);
|
|
130
130
|
await ocIdentityHomePage.clickAuthorizationsTab();
|
|
131
131
|
await ocIdentityAuthorizationsPage.clickProcessDefinitionTab();
|
|
132
132
|
await ocIdentityAuthorizationsPage.deleteAuthorization(process1, 'PROCESS_DEFINITION');
|
|
@@ -160,7 +160,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV1', () => {
|
|
|
160
160
|
};
|
|
161
161
|
await _8_9_1.test.step('Navigate to OC Identity and Assign User To Two Roles', async () => {
|
|
162
162
|
await appsPage.clickCamundaApps();
|
|
163
|
-
await appsPage.
|
|
163
|
+
await appsPage.clickAdmin(clusterName);
|
|
164
164
|
await ocIdentityHomePage.clickRolesTab();
|
|
165
165
|
await ocIdentityRolesPage.assignUserToRole(role1, testUser.username);
|
|
166
166
|
await ocIdentityHomePage.clickRolesTab();
|
|
@@ -253,7 +253,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV1', () => {
|
|
|
253
253
|
});
|
|
254
254
|
await _8_9_1.test.step('Navigate to OC Identity and Delete First Role', async () => {
|
|
255
255
|
await appsPage.clickCamundaApps();
|
|
256
|
-
await appsPage.
|
|
256
|
+
await appsPage.clickAdmin(clusterName);
|
|
257
257
|
await ocIdentityHomePage.clickRolesTab();
|
|
258
258
|
await ocIdentityRolesPage.deleteRole(role1);
|
|
259
259
|
await (0, sleep_1.sleep)(5000);
|
|
@@ -301,7 +301,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV1', () => {
|
|
|
301
301
|
});
|
|
302
302
|
await _8_9_1.test.step('Navigate to OC Identity and Assert Admin Has All Process Permission', async () => {
|
|
303
303
|
await appsPage.clickCamundaApps();
|
|
304
|
-
await appsPage.
|
|
304
|
+
await appsPage.clickAdmin(clusterName);
|
|
305
305
|
await ocIdentityHomePage.clickAuthorizationsTab();
|
|
306
306
|
await ocIdentityAuthorizationsPage.clickProcessDefinitionTab();
|
|
307
307
|
await (0, sleep_1.sleep)(1000);
|
|
@@ -372,7 +372,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV1', () => {
|
|
|
372
372
|
};
|
|
373
373
|
await _8_9_1.test.step('Navigate to OC Identity and Assign User To A Role', async () => {
|
|
374
374
|
await appsPage.clickCamundaApps();
|
|
375
|
-
await appsPage.
|
|
375
|
+
await appsPage.clickAdmin(clusterName);
|
|
376
376
|
await ocIdentityHomePage.clickRolesTab();
|
|
377
377
|
await ocIdentityRolesPage.assignUserToRole(role, testUser.username);
|
|
378
378
|
});
|
|
@@ -45,7 +45,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV2', () => {
|
|
|
45
45
|
};
|
|
46
46
|
await _8_9_1.test.step('Navigate to OC Identity and Assign User To A Role', async () => {
|
|
47
47
|
await appsPage.clickCamundaApps();
|
|
48
|
-
await appsPage.
|
|
48
|
+
await appsPage.clickAdmin(clusterName);
|
|
49
49
|
await ocIdentityHomePage.clickRolesTab();
|
|
50
50
|
await ocIdentityRolesPage.assignUserToRole(role, testUser.username);
|
|
51
51
|
});
|
|
@@ -142,7 +142,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV2', () => {
|
|
|
142
142
|
};
|
|
143
143
|
await _8_9_1.test.step('Navigate to OC Identity and Assign User To Two Roles', async () => {
|
|
144
144
|
await appsPage.clickCamundaApps();
|
|
145
|
-
await appsPage.
|
|
145
|
+
await appsPage.clickAdmin(clusterName);
|
|
146
146
|
await ocIdentityHomePage.clickRolesTab();
|
|
147
147
|
await ocIdentityRolesPage.assignUserToRole(role1, testUser.username);
|
|
148
148
|
await ocIdentityHomePage.clickRolesTab();
|
|
@@ -237,7 +237,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV2', () => {
|
|
|
237
237
|
});
|
|
238
238
|
await _8_9_1.test.step('Navigate to OC Identity and Delete First Role', async () => {
|
|
239
239
|
await appsPage.clickCamundaApps();
|
|
240
|
-
await appsPage.
|
|
240
|
+
await appsPage.clickAdmin(clusterName);
|
|
241
241
|
await ocIdentityHomePage.clickRolesTab();
|
|
242
242
|
await ocIdentityRolesPage.deleteRole(role1);
|
|
243
243
|
await (0, sleep_1.sleep)(5000);
|
|
@@ -285,7 +285,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV2', () => {
|
|
|
285
285
|
});
|
|
286
286
|
await _8_9_1.test.step('Navigate to OC Identity and Assert Admin Has All Process Permission', async () => {
|
|
287
287
|
await appsPage.clickCamundaApps();
|
|
288
|
-
await appsPage.
|
|
288
|
+
await appsPage.clickAdmin(clusterName);
|
|
289
289
|
await ocIdentityHomePage.clickAuthorizationsTab();
|
|
290
290
|
await ocIdentityAuthorizationsPage.clickProcessDefinitionTab();
|
|
291
291
|
await (0, sleep_1.sleep)(1000);
|
|
@@ -359,7 +359,7 @@ _8_9_1.test.describe.parallel('RBA Enabled User Flows Test @tasklistV2', () => {
|
|
|
359
359
|
};
|
|
360
360
|
await _8_9_1.test.step('Navigate to OC Identity and Assign User To A Role', async () => {
|
|
361
361
|
await appsPage.clickCamundaApps();
|
|
362
|
-
await appsPage.
|
|
362
|
+
await appsPage.clickAdmin(clusterName);
|
|
363
363
|
await ocIdentityHomePage.clickRolesTab();
|
|
364
364
|
await ocIdentityRolesPage.assignUserToRole(role, testUser.username);
|
|
365
365
|
});
|
|
@@ -100,7 +100,7 @@ _8_9_1.test.describe.parallel('UTR Enabled User Flows Test @tasklistV1', () => {
|
|
|
100
100
|
};
|
|
101
101
|
await _8_9_1.test.step('Navigate to Identity', async () => {
|
|
102
102
|
await appsPage.clickCamundaApps();
|
|
103
|
-
await appsPage.
|
|
103
|
+
await appsPage.clickAdmin(clusterName);
|
|
104
104
|
});
|
|
105
105
|
await _8_9_1.test.step('Create Two User Groups in Identity', async () => {
|
|
106
106
|
await ocIdentityHomePage.clickGroupsTab();
|