@camunda/e2e-test-suite 0.0.224 → 0.0.226
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.6/HomePage.js +2 -0
- package/dist/pages/8.6/ModelerCreatePage.d.ts +3 -1
- package/dist/pages/8.6/ModelerCreatePage.js +22 -1
- package/dist/pages/8.6/ModelerHomePage.d.ts +1 -0
- package/dist/pages/8.6/ModelerHomePage.js +3 -0
- package/dist/tests/8.10/optimize-user-flows.spec.js +3 -6
- package/dist/tests/8.6/play.spec.js +2 -1
- package/dist/tests/8.6/smoke-tests.spec.js +1 -1
- package/dist/tests/8.6/web-modeler-user-flows.spec.js +5 -2
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HomePage = void 0;
|
|
4
4
|
const test_1 = require("@playwright/test");
|
|
5
|
+
const sleep_1 = require("../../utils/sleep");
|
|
5
6
|
class HomePage {
|
|
6
7
|
page;
|
|
7
8
|
dashboardTab;
|
|
@@ -81,6 +82,7 @@ class HomePage {
|
|
|
81
82
|
});
|
|
82
83
|
await this.buttonSkipCustomization.click({ timeout: 60000 });
|
|
83
84
|
await this.closeInformationDialog();
|
|
85
|
+
await (0, sleep_1.sleep)(1000);
|
|
84
86
|
return;
|
|
85
87
|
}
|
|
86
88
|
catch (error) {
|
|
@@ -91,6 +91,7 @@ declare class ModelerCreatePage {
|
|
|
91
91
|
readonly copyPublicLinkButton: Locator;
|
|
92
92
|
readonly formLinkedSuccessMessage: Locator;
|
|
93
93
|
readonly diagramNameBreadcrumb: (diagramName: string) => Locator;
|
|
94
|
+
readonly dialog: Locator;
|
|
94
95
|
constructor(page: Page);
|
|
95
96
|
modelJobWorkerDiagram(processName: string, embedFrom?: boolean): Promise<void>;
|
|
96
97
|
assertProcessInstanceLinkWithRetry(clusterName: string): Promise<void>;
|
|
@@ -185,7 +186,8 @@ declare class ModelerCreatePage {
|
|
|
185
186
|
clickJobTypeInput(): Promise<void>;
|
|
186
187
|
fillJobTypeInput(name: string): Promise<void>;
|
|
187
188
|
switchToPlay(): Promise<void>;
|
|
188
|
-
completePlayConfiguration(): Promise<void>;
|
|
189
|
+
completePlayConfiguration(clusterName: string): Promise<void>;
|
|
190
|
+
selectCluster(clusterName: string): Promise<void>;
|
|
189
191
|
clickCandidateGroupsInput(): Promise<void>;
|
|
190
192
|
fillCandidateGroupsInput(name: string): Promise<void>;
|
|
191
193
|
clickTimerEventOption(): Promise<void>;
|
|
@@ -97,6 +97,7 @@ class ModelerCreatePage {
|
|
|
97
97
|
copyPublicLinkButton;
|
|
98
98
|
formLinkedSuccessMessage;
|
|
99
99
|
diagramNameBreadcrumb;
|
|
100
|
+
dialog;
|
|
100
101
|
constructor(page) {
|
|
101
102
|
this.page = page;
|
|
102
103
|
this.generalPanel = page.locator('[data-group-id="group-general"]');
|
|
@@ -270,6 +271,7 @@ class ModelerCreatePage {
|
|
|
270
271
|
this.diagramNameBreadcrumb = (diagramName) => page.locator('button[data-test="breadcrumb-diagram"]', {
|
|
271
272
|
hasText: diagramName,
|
|
272
273
|
});
|
|
274
|
+
this.dialog = page.getByRole('dialog');
|
|
273
275
|
}
|
|
274
276
|
async modelJobWorkerDiagram(processName, embedFrom = false) {
|
|
275
277
|
await (0, test_1.expect)(this.generalPanel).toBeVisible({
|
|
@@ -316,6 +318,7 @@ class ModelerCreatePage {
|
|
|
316
318
|
await (0, test_1.expect)(this.generalPanel).toBeVisible({
|
|
317
319
|
timeout: 180000,
|
|
318
320
|
});
|
|
321
|
+
await (0, sleep_1.sleep)(1000);
|
|
319
322
|
await this.enterDiagramName(processName);
|
|
320
323
|
await (0, sleep_1.sleep)(10000);
|
|
321
324
|
if (processId.length > 0) {
|
|
@@ -323,6 +326,8 @@ class ModelerCreatePage {
|
|
|
323
326
|
await this.clickGeneralPropertiesPanel();
|
|
324
327
|
await this.clickIdInput();
|
|
325
328
|
await this.fillIdInput(processId);
|
|
329
|
+
await this.clickNameInput();
|
|
330
|
+
await this.fillNameInput(processName);
|
|
326
331
|
await this.clickStartEventElement();
|
|
327
332
|
}
|
|
328
333
|
await this.clickAppendElementButton();
|
|
@@ -985,7 +990,7 @@ class ModelerCreatePage {
|
|
|
985
990
|
async switchToPlay() {
|
|
986
991
|
await this.playTab.click();
|
|
987
992
|
}
|
|
988
|
-
async completePlayConfiguration() {
|
|
993
|
+
async completePlayConfiguration(clusterName) {
|
|
989
994
|
const timeout = 30000;
|
|
990
995
|
let attempts = 0;
|
|
991
996
|
const maxRetries = 2;
|
|
@@ -993,6 +998,7 @@ class ModelerCreatePage {
|
|
|
993
998
|
try {
|
|
994
999
|
if (attempts > 0)
|
|
995
1000
|
await this.switchToPlay(); // Call switchToPlay on subsequent attempts
|
|
1001
|
+
await this.selectCluster(clusterName);
|
|
996
1002
|
await this.continueToPlayButton.click({ timeout });
|
|
997
1003
|
await (0, test_1.expect)(this.page.getByText('Play environment is ready')).toBeVisible({ timeout: 90000 });
|
|
998
1004
|
return; // Exit if successful
|
|
@@ -1005,6 +1011,21 @@ class ModelerCreatePage {
|
|
|
1005
1011
|
}
|
|
1006
1012
|
}
|
|
1007
1013
|
}
|
|
1014
|
+
async selectCluster(clusterName) {
|
|
1015
|
+
await (0, test_1.expect)(this.dialog).toBeVisible({ timeout: 30000 });
|
|
1016
|
+
const healthCheckTimeout = 30000;
|
|
1017
|
+
const healthyRegex = new RegExp(`${clusterName}.*?HealthydevManage`);
|
|
1018
|
+
const cluster = this.dialog.getByText(clusterName);
|
|
1019
|
+
await (0, test_1.expect)(cluster).toBeVisible({ timeout: 30000 });
|
|
1020
|
+
await cluster.click();
|
|
1021
|
+
await (0, test_1.expect)(this.dialog
|
|
1022
|
+
.locator('label')
|
|
1023
|
+
.filter({ hasText: clusterName })
|
|
1024
|
+
.getByRole('switch')).toBeChecked({ timeout: 30000 });
|
|
1025
|
+
await (0, test_1.expect)(this.dialog).toHaveText(healthyRegex, {
|
|
1026
|
+
timeout: healthCheckTimeout,
|
|
1027
|
+
});
|
|
1028
|
+
}
|
|
1008
1029
|
async clickCandidateGroupsInput() {
|
|
1009
1030
|
await this.candidateGroupsInput.click({ timeout: 60000 });
|
|
1010
1031
|
}
|
|
@@ -21,6 +21,7 @@ declare class ModelerHomePage {
|
|
|
21
21
|
readonly closeButton: Locator;
|
|
22
22
|
readonly cancelButton: Locator;
|
|
23
23
|
readonly optionsButton: Locator;
|
|
24
|
+
readonly dialog: Locator;
|
|
24
25
|
readonly formNameBreadcrumb: (formName: string) => Locator;
|
|
25
26
|
constructor(page: Page);
|
|
26
27
|
clickCreateNewProjectButton(): Promise<void>;
|
|
@@ -26,6 +26,7 @@ class ModelerHomePage {
|
|
|
26
26
|
closeButton;
|
|
27
27
|
cancelButton;
|
|
28
28
|
optionsButton;
|
|
29
|
+
dialog;
|
|
29
30
|
formNameBreadcrumb;
|
|
30
31
|
constructor(page) {
|
|
31
32
|
this.page = page;
|
|
@@ -62,6 +63,7 @@ class ModelerHomePage {
|
|
|
62
63
|
this.closeButton = page.getByRole('button', { name: 'Got it - Dismiss' });
|
|
63
64
|
this.cancelButton = page.getByRole('button', { name: 'Cancel' });
|
|
64
65
|
this.optionsButton = page.getByRole('button', { name: 'Options' });
|
|
66
|
+
this.dialog = page.getByRole('dialog');
|
|
65
67
|
this.formNameBreadcrumb = (formName) => page.locator('button[data-test="breadcrumb-form"]', {
|
|
66
68
|
hasText: formName,
|
|
67
69
|
});
|
|
@@ -174,6 +176,7 @@ class ModelerHomePage {
|
|
|
174
176
|
.first();
|
|
175
177
|
await (0, test_1.expect)(button).toBeVisible({ timeout: 15000 });
|
|
176
178
|
await button.click();
|
|
179
|
+
await (0, test_1.expect)(this.dialog).not.toBeVisible();
|
|
177
180
|
}
|
|
178
181
|
catch {
|
|
179
182
|
console.log('No banner or close button found to click');
|
|
@@ -25,8 +25,7 @@ _8_10_1.test.describe('Optimize User Flow Tests', () => {
|
|
|
25
25
|
await (0, _setup_1.captureScreenshot)(page, testInfo);
|
|
26
26
|
await (0, _setup_1.captureFailureVideo)(page, testInfo);
|
|
27
27
|
});
|
|
28
|
-
|
|
29
|
-
_8_10_1.test.skip('Job Worker User Task User Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, }) => {
|
|
28
|
+
(0, _8_10_1.test)('Job Worker User Task User Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, }) => {
|
|
30
29
|
_8_10_1.test.slow();
|
|
31
30
|
const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
|
|
32
31
|
const processName = 'Optimize Job Worker User Task Diagram' + reportName;
|
|
@@ -126,8 +125,7 @@ _8_10_1.test.describe('Optimize User Flow Tests', () => {
|
|
|
126
125
|
await (0, test_1.expect)(newOptimizeTabOptimizeReportPage.oneUserTaskInstance).not.toBeVisible();
|
|
127
126
|
});
|
|
128
127
|
});
|
|
129
|
-
|
|
130
|
-
_8_10_1.test.skip('New Instances Updated Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, optimizeCollectionsPage, optimizeReportPage, optimizeHomePage, }) => {
|
|
128
|
+
(0, _8_10_1.test)('New Instances Updated Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, optimizeCollectionsPage, optimizeReportPage, optimizeHomePage, }) => {
|
|
131
129
|
_8_10_1.test.slow();
|
|
132
130
|
const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
|
|
133
131
|
const processName = 'Optimize Job Worker New Instances Updated Flow' + reportName;
|
|
@@ -209,8 +207,7 @@ _8_10_1.test.describe('Optimize User Flow Tests', () => {
|
|
|
209
207
|
await (0, test_1.expect)(newOperateTab.getByText('Displaying data from 1 instance.')).toBeVisible({ timeout: 90000 });
|
|
210
208
|
});
|
|
211
209
|
});
|
|
212
|
-
|
|
213
|
-
_8_10_1.test.skip('Process Import Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, }) => {
|
|
210
|
+
(0, _8_10_1.test)('Process Import Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, }) => {
|
|
214
211
|
_8_10_1.test.slow();
|
|
215
212
|
const processName = 'Process Import Flow' + (await (0, _setup_1.generateRandomStringAsync)(6));
|
|
216
213
|
await _8_10_1.test.step('Navigate to Web Modeler', async () => {
|
|
@@ -9,6 +9,7 @@ const users_1 = require("../../utils/users");
|
|
|
9
9
|
const testUser = (0, users_1.getTestUser)('twentyFourthUser');
|
|
10
10
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
11
11
|
_8_6_1.test.describe('Deploy and run a process in Play', () => {
|
|
12
|
+
const clusterName = 'Test Cluster';
|
|
12
13
|
_8_6_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
13
14
|
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
14
15
|
});
|
|
@@ -72,7 +73,7 @@ _8_6_1.test.describe('Deploy and run a process in Play', () => {
|
|
|
72
73
|
});
|
|
73
74
|
await _8_6_1.test.step('Open Play', async () => {
|
|
74
75
|
await modelerCreatePage.switchToPlay();
|
|
75
|
-
await modelerCreatePage.completePlayConfiguration();
|
|
76
|
+
await modelerCreatePage.completePlayConfiguration(clusterName);
|
|
76
77
|
});
|
|
77
78
|
await _8_6_1.test.step('Start and complete the process instance in Play', async () => {
|
|
78
79
|
await playPage.dismissStartModal();
|
|
@@ -147,7 +147,7 @@ _8_6_1.test.describe('Smoke Tests', () => {
|
|
|
147
147
|
await appsPage.clickCamundaApps();
|
|
148
148
|
await appsPage.clickModeler();
|
|
149
149
|
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
150
|
-
timeout:
|
|
150
|
+
timeout: 30000,
|
|
151
151
|
});
|
|
152
152
|
});
|
|
153
153
|
await _8_6_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
|
|
@@ -14,6 +14,7 @@ const mailSlurpClient_1 = require("../../utils/mailSlurpClient");
|
|
|
14
14
|
const resetSession_1 = require("../../utils/resetSession");
|
|
15
15
|
const users_1 = require("../../utils/users");
|
|
16
16
|
const node_crypto_1 = require("node:crypto");
|
|
17
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
17
18
|
const testUser = (0, users_1.getTestUser)('eleventhUser');
|
|
18
19
|
_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
19
20
|
_8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
@@ -655,8 +656,10 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
|
|
|
655
656
|
await _8_6_1.test.step('Access Public Form After Session Reset and Submit the Form', async () => {
|
|
656
657
|
console.log('Navigating to public form:', publicFormLink);
|
|
657
658
|
await page.goto(publicFormLink);
|
|
658
|
-
await (0,
|
|
659
|
-
|
|
659
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, taskDetailsPage.textInput, {
|
|
660
|
+
postAction: async () => {
|
|
661
|
+
await page.goto(publicFormLink);
|
|
662
|
+
},
|
|
660
663
|
});
|
|
661
664
|
await taskDetailsPage.fillTextInput('Public Form Test Value');
|
|
662
665
|
await taskDetailsPage.clickSubmitButton();
|