@camunda/e2e-test-suite 0.0.804 → 0.0.806
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/dist/pages/8.10/AuditLogPage.js +16 -5
- package/dist/pages/8.7/ConsoleOrganizationPage.js +9 -18
- package/dist/pages/8.7/ModelerCreatePage.js +4 -1
- package/dist/pages/8.7/TaskPanelPage.d.ts +1 -0
- package/dist/pages/8.7/TaskPanelPage.js +11 -0
- package/dist/tests/8.7/rba-enabled-user-flows.spec.js +2 -4
- package/dist/utils/constants.js +5 -3
- package/package.json +1 -1
|
@@ -27,13 +27,16 @@ class AuditLogPage {
|
|
|
27
27
|
await (0, test_1.expect)(this.auditLogTab).toBeVisible({ timeout: 60000 });
|
|
28
28
|
await this.auditLogTab.click({ timeout: 60000 });
|
|
29
29
|
}
|
|
30
|
+
// Returns true when the category was newly checked (form made dirty).
|
|
30
31
|
async ensureChecked(category) {
|
|
31
32
|
const checkbox = this.clientCategoryCheckbox(category);
|
|
32
33
|
await (0, test_1.expect)(checkbox).toBeAttached({ timeout: 30000 });
|
|
33
|
-
if (
|
|
34
|
-
|
|
35
|
-
await (0, test_1.expect)(checkbox).toBeChecked();
|
|
34
|
+
if (await checkbox.isChecked()) {
|
|
35
|
+
return false;
|
|
36
36
|
}
|
|
37
|
+
await this.clientCategoryLabel(category).click({ timeout: 30000 });
|
|
38
|
+
await (0, test_1.expect)(checkbox).toBeChecked();
|
|
39
|
+
return true;
|
|
37
40
|
}
|
|
38
41
|
async enableClientOperationLogging() {
|
|
39
42
|
const categories = [
|
|
@@ -41,10 +44,18 @@ class AuditLogPage {
|
|
|
41
44
|
'Deployed resources',
|
|
42
45
|
'User tasks',
|
|
43
46
|
];
|
|
47
|
+
let changed = false;
|
|
44
48
|
for (const category of categories) {
|
|
45
|
-
await this.ensureChecked(category)
|
|
49
|
+
if (await this.ensureChecked(category)) {
|
|
50
|
+
changed = true;
|
|
51
|
+
}
|
|
46
52
|
}
|
|
47
|
-
|
|
53
|
+
// Only persist when a toggle actually dirtied the form. Wait for the Update
|
|
54
|
+
// button to enable rather than probing its state at a single instant —
|
|
55
|
+
// Carbon enables it a tick after the last checkbox re-renders, so a bare
|
|
56
|
+
// isEnabled() probe could skip the save and leave audit logging off.
|
|
57
|
+
if (changed) {
|
|
58
|
+
await (0, test_1.expect)(this.updateButton).toBeEnabled({ timeout: 60000 });
|
|
48
59
|
await this.updateButton.click({ timeout: 60000 });
|
|
49
60
|
await (0, test_1.expect)(this.updateButton).toBeDisabled({ timeout: 60000 });
|
|
50
61
|
}
|
|
@@ -146,10 +146,8 @@ class ConsoleOrganizationPage {
|
|
|
146
146
|
});
|
|
147
147
|
this.deleteButton = page.getByRole('button', { name: 'delete' });
|
|
148
148
|
this.deleteSubButton = page
|
|
149
|
-
.getByRole('
|
|
150
|
-
name: '
|
|
151
|
-
})
|
|
152
|
-
.last();
|
|
149
|
+
.getByRole('dialog')
|
|
150
|
+
.getByRole('button', { name: 'delete' });
|
|
153
151
|
this.filterTableSearchbox = page.getByRole('searchbox', {
|
|
154
152
|
name: 'Filter table',
|
|
155
153
|
});
|
|
@@ -511,20 +509,13 @@ class ConsoleOrganizationPage {
|
|
|
511
509
|
await this.organizationManagementLink.click();
|
|
512
510
|
}
|
|
513
511
|
async deleteAllGroups() {
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
await this.deleteButton.nth(i).click({ timeout: 60000 });
|
|
522
|
-
await this.deleteSubButton.click({ timeout: 60000 });
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
catch (error) {
|
|
527
|
-
console.log('Delete Button Not Clicked ' + error);
|
|
512
|
+
// Delete groups one at a time: each confirmed deletion re-renders and
|
|
513
|
+
// re-indexes the list, so always operate on the first remaining row
|
|
514
|
+
// instead of iterating by index over a mutating collection.
|
|
515
|
+
while ((await this.deleteButton.count()) > 0) {
|
|
516
|
+
await this.deleteButton.first().click({ timeout: 60000 });
|
|
517
|
+
await this.deleteSubButton.click({ timeout: 60000 });
|
|
518
|
+
await (0, test_1.expect)(this.deleteSubButton).not.toBeVisible({ timeout: 60000 });
|
|
528
519
|
}
|
|
529
520
|
}
|
|
530
521
|
}
|
|
@@ -656,7 +656,10 @@ class ModelerCreatePage {
|
|
|
656
656
|
await this.createEndEvent.click({ timeout: 60000 });
|
|
657
657
|
}
|
|
658
658
|
async clickCanvas() {
|
|
659
|
-
await this.
|
|
659
|
+
await this.endEventCanvas.click({
|
|
660
|
+
timeout: 60000,
|
|
661
|
+
position: { x: 150, y: 20 },
|
|
662
|
+
});
|
|
660
663
|
}
|
|
661
664
|
async clickEndEventCanvas() {
|
|
662
665
|
await this.endEventCanvas.click({ timeout: 60000 });
|
|
@@ -10,6 +10,7 @@ declare class TaskPanelPage {
|
|
|
10
10
|
openTask(name: string): Promise<void>;
|
|
11
11
|
filterBy(option: 'All open' | 'Unassigned' | 'Assigned to me' | 'Completed'): Promise<void>;
|
|
12
12
|
taskCount(name: string): Promise<number>;
|
|
13
|
+
expectTaskCount(name: string, expectedCount: number): Promise<void>;
|
|
13
14
|
clickTasksTab(): Promise<void>;
|
|
14
15
|
scrollToLastTask(name: string): Promise<void>;
|
|
15
16
|
scrollToFirstTask(name: string): Promise<void>;
|
|
@@ -53,6 +53,17 @@ class TaskPanelPage {
|
|
|
53
53
|
await (0, sleep_1.sleep)(20000);
|
|
54
54
|
return this.availableTasks.getByText(name, { exact: true }).count();
|
|
55
55
|
}
|
|
56
|
+
async expectTaskCount(name, expectedCount) {
|
|
57
|
+
await (0, test_1.expect)(async () => {
|
|
58
|
+
const count = await this.availableTasks
|
|
59
|
+
.getByText(name, { exact: true })
|
|
60
|
+
.count();
|
|
61
|
+
(0, test_1.expect)(count).toBe(expectedCount);
|
|
62
|
+
}).toPass({
|
|
63
|
+
intervals: [5000, 10000, 15000, 20000],
|
|
64
|
+
timeout: 180000,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
56
67
|
async clickTasksTab() {
|
|
57
68
|
await this.tasksTab.click();
|
|
58
69
|
}
|
|
@@ -307,13 +307,11 @@ _8_7_1.test.describe('RBA Enabled User Flows Test', () => {
|
|
|
307
307
|
//Start first process
|
|
308
308
|
await taskPanelPage.clickProcessesTab();
|
|
309
309
|
await taskProcessesPage.startProcess(processName1);
|
|
310
|
-
|
|
311
|
-
(0, test_1.expect)(updatedFirstProcessTaskCount).toBe(firstProcessTaskCount + 1);
|
|
310
|
+
await taskPanelPage.expectTaskCount(processName1, firstProcessTaskCount + 1);
|
|
312
311
|
//Start second process
|
|
313
312
|
await taskPanelPage.clickProcessesTab();
|
|
314
313
|
await taskProcessesPage.startProcess(processName2);
|
|
315
|
-
|
|
316
|
-
(0, test_1.expect)(updatedSecondProcessTaskCount).toBe(secondProcessTaskCount + 1);
|
|
314
|
+
await taskPanelPage.expectTaskCount(processName2, secondProcessTaskCount + 1);
|
|
317
315
|
});
|
|
318
316
|
await _8_7_1.test.step('Navigate to Operate and Assert Both Processes Are Accessible', async () => {
|
|
319
317
|
await appsPage.clickCamundaApps();
|
package/dist/utils/constants.js
CHANGED
|
@@ -15,10 +15,12 @@ exports.deletionAssertionOptions = {
|
|
|
15
15
|
timeout: 60000,
|
|
16
16
|
};
|
|
17
17
|
// Longest options for audit-log assertions: entries land in secondary storage
|
|
18
|
-
// only after the audit config propagates to the exporters
|
|
18
|
+
// only after the audit config propagates to the exporters, which is markedly
|
|
19
|
+
// slower on freshly-provisioned SaaS clusters. 90s occasionally lapsed before
|
|
20
|
+
// the CLIENT-actor PROCESS_INSTANCE CREATE entry surfaced, so poll for 180s.
|
|
19
21
|
exports.auditLogAssertionOptions = {
|
|
20
|
-
intervals: [5000, 10000, 15000,
|
|
21
|
-
timeout:
|
|
22
|
+
intervals: [5000, 10000, 15000, 20000, 30000],
|
|
23
|
+
timeout: 180000,
|
|
22
24
|
};
|
|
23
25
|
exports.TIMEOUT = {
|
|
24
26
|
short: 15000,
|