@camunda/e2e-test-suite 0.0.178 → 0.0.180
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/SM-8.7/ModelerHomePage.js +4 -0
- package/dist/pages/SM-8.7/PlayPage.d.ts +3 -0
- package/dist/pages/SM-8.7/PlayPage.js +34 -8
- package/dist/pages/SM-8.8/ModelerCreatePage.js +1 -0
- package/dist/pages/SM-8.8/ModelerHomePage.js +5 -1
- package/dist/pages/SM-8.8/PlayPage.d.ts +3 -0
- package/dist/pages/SM-8.8/PlayPage.js +52 -11
- package/dist/tests/SM-8.7/play.spec.js +26 -24
- package/dist/tests/SM-8.8/play.spec.js +24 -24
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ModelerHomePage = void 0;
|
|
4
4
|
const test_1 = require("@playwright/test");
|
|
5
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
5
6
|
class ModelerHomePage {
|
|
6
7
|
page;
|
|
7
8
|
defaultFolderName;
|
|
@@ -64,6 +65,9 @@ class ModelerHomePage {
|
|
|
64
65
|
this.uploadFilesButton = page.getByRole('menuitem', { name: 'Upload files' });
|
|
65
66
|
}
|
|
66
67
|
async clickCreateNewProjectButton() {
|
|
68
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.createNewProjectButton, {
|
|
69
|
+
totalTimeout: 30000,
|
|
70
|
+
});
|
|
67
71
|
await this.createNewProjectButton.click({ timeout: 10000 });
|
|
68
72
|
}
|
|
69
73
|
async enterNewProjectName(name) {
|
|
@@ -15,6 +15,9 @@ declare class PlayPage {
|
|
|
15
15
|
readonly startInstanceButton: Locator;
|
|
16
16
|
readonly notifications: Locator;
|
|
17
17
|
readonly saveScenarioModal: Locator;
|
|
18
|
+
readonly dialog: Locator;
|
|
19
|
+
readonly loadingInstanceDetailsText: Locator;
|
|
20
|
+
readonly retryButton: Locator;
|
|
18
21
|
constructor(page: Page);
|
|
19
22
|
waitForCompleteJobButtonToBeAvailable(): Promise<void>;
|
|
20
23
|
clickCompleteJobButton(): Promise<void>;
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PlayPage = void 0;
|
|
4
4
|
const test_1 = require("@playwright/test");
|
|
5
5
|
const sleep_1 = require("../../utils/sleep");
|
|
6
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
7
|
+
const clickLocatorWithRetry_1 = require("../../utils/assertionHelpers/clickLocatorWithRetry");
|
|
6
8
|
const maxWaitTimeSeconds = 180000;
|
|
7
9
|
class PlayPage {
|
|
8
10
|
page;
|
|
@@ -20,6 +22,9 @@ class PlayPage {
|
|
|
20
22
|
startInstanceButton;
|
|
21
23
|
notifications;
|
|
22
24
|
saveScenarioModal;
|
|
25
|
+
dialog;
|
|
26
|
+
loadingInstanceDetailsText;
|
|
27
|
+
retryButton;
|
|
23
28
|
constructor(page) {
|
|
24
29
|
this.page = page;
|
|
25
30
|
this.completeJobButton = page
|
|
@@ -30,6 +35,7 @@ class PlayPage {
|
|
|
30
35
|
this.runAllScenariosButton = page.getByRole('button', {
|
|
31
36
|
name: 'Run all scenarios',
|
|
32
37
|
});
|
|
38
|
+
this.dialog = page.getByRole('dialog');
|
|
33
39
|
this.confirmSaveScenarioButton = page
|
|
34
40
|
.getByTestId('save-scenario-modal')
|
|
35
41
|
.getByRole('button', { name: 'Save' });
|
|
@@ -49,6 +55,8 @@ class PlayPage {
|
|
|
49
55
|
this.startInstanceButton = page.getByTestId('undefined-Start instance');
|
|
50
56
|
this.notifications = page.locator('.cds--toast-notification');
|
|
51
57
|
this.saveScenarioModal = page.getByTestId('save-scenario-modal');
|
|
58
|
+
this.loadingInstanceDetailsText = this.page.getByText('Loading instance details...');
|
|
59
|
+
this.retryButton = this.page.getByRole('button', { name: 'Retry' });
|
|
52
60
|
}
|
|
53
61
|
async waitForCompleteJobButtonToBeAvailable() {
|
|
54
62
|
await (0, test_1.expect)(this.completeJobButton).toBeVisible({
|
|
@@ -59,12 +67,16 @@ class PlayPage {
|
|
|
59
67
|
await this.completeJobButton.click();
|
|
60
68
|
}
|
|
61
69
|
async clickStartInstanceButton() {
|
|
62
|
-
await this.diagram.waitFor({ state: 'visible', timeout: 30000 });
|
|
63
70
|
const maxRetries = 3;
|
|
64
71
|
let attempts = 0;
|
|
65
72
|
while (attempts < maxRetries) {
|
|
66
73
|
try {
|
|
74
|
+
await this.diagram.waitFor({ state: 'visible', timeout: 30000 });
|
|
67
75
|
await this.startInstanceButton.click({ timeout: 30000 });
|
|
76
|
+
await (0, test_1.expect)(this.loadingInstanceDetailsText).toBeVisible();
|
|
77
|
+
await (0, test_1.expect)(this.loadingInstanceDetailsText).not.toBeVisible({
|
|
78
|
+
timeout: 60000,
|
|
79
|
+
});
|
|
68
80
|
return;
|
|
69
81
|
}
|
|
70
82
|
catch (error) {
|
|
@@ -119,7 +131,7 @@ class PlayPage {
|
|
|
119
131
|
const maxRetries = 6; // ~1 min with the waits below
|
|
120
132
|
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
121
133
|
try {
|
|
122
|
-
await (0, test_1.expect)(locator).toBeVisible({ timeout: 20000 });
|
|
134
|
+
await (0, test_1.expect)(locator.first()).toBeVisible({ timeout: 20000 });
|
|
123
135
|
return;
|
|
124
136
|
}
|
|
125
137
|
catch (e) {
|
|
@@ -150,6 +162,9 @@ class PlayPage {
|
|
|
150
162
|
.isVisible()
|
|
151
163
|
.catch(() => false);
|
|
152
164
|
if (!isModalVisible) {
|
|
165
|
+
await (0, sleep_1.sleep)(3000);
|
|
166
|
+
await (0, test_1.expect)(this.saveScenarioButton).toBeVisible({ timeout: 30000 });
|
|
167
|
+
await (0, test_1.expect)(this.saveScenarioButton).toBeEnabled({ timeout: 30000 });
|
|
153
168
|
await this.saveScenarioButton.click({ force: true, timeout: 30000 });
|
|
154
169
|
}
|
|
155
170
|
}
|
|
@@ -157,9 +172,12 @@ class PlayPage {
|
|
|
157
172
|
await this.viewScenarioButton.click();
|
|
158
173
|
}
|
|
159
174
|
async enterScenarioName(scenarioName) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
175
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.dialog, {
|
|
176
|
+
postAction: async () => {
|
|
177
|
+
await this.saveScenarioButton.click({ timeout: 30000 });
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
const input = this.dialog.locator('input#scenario-name');
|
|
163
181
|
await input.waitFor({ state: 'visible', timeout: 10000 });
|
|
164
182
|
await input.clear();
|
|
165
183
|
await input.fill(scenarioName);
|
|
@@ -168,7 +186,7 @@ class PlayPage {
|
|
|
168
186
|
await this.enterScenarioNameInput.fill(newScenarioName);
|
|
169
187
|
}
|
|
170
188
|
async clickViewAllScenariosButton() {
|
|
171
|
-
await this.viewAllScenariosButton
|
|
189
|
+
await (0, clickLocatorWithRetry_1.clickLocatorWithRetry)(this.page, this.viewAllScenariosButton);
|
|
172
190
|
}
|
|
173
191
|
async confirmSaveScenario() {
|
|
174
192
|
await this.confirmSaveScenarioButton.click();
|
|
@@ -197,9 +215,17 @@ class PlayPage {
|
|
|
197
215
|
await publishIcon.click({ timeout: 30000 });
|
|
198
216
|
}
|
|
199
217
|
async assertScenarioCompleted(scenarioName) {
|
|
200
|
-
await (0,
|
|
218
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.page
|
|
201
219
|
.locator('tr', { hasText: scenarioName })
|
|
202
|
-
.locator('text=Completed')
|
|
220
|
+
.locator('text=Completed'), {
|
|
221
|
+
totalTimeout: 90000,
|
|
222
|
+
visibilityTimeout: 20000,
|
|
223
|
+
postAction: async () => {
|
|
224
|
+
if (await this.retryButton.isVisible()) {
|
|
225
|
+
await this.retryButton.click();
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
});
|
|
203
229
|
}
|
|
204
230
|
}
|
|
205
231
|
exports.PlayPage = PlayPage;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ModelerHomePage = void 0;
|
|
4
4
|
const test_1 = require("@playwright/test");
|
|
5
5
|
const sleep_1 = require("../../utils/sleep");
|
|
6
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
6
7
|
class ModelerHomePage {
|
|
7
8
|
page;
|
|
8
9
|
defaultFolderName = 'Cross Component Test Project';
|
|
@@ -81,7 +82,10 @@ class ModelerHomePage {
|
|
|
81
82
|
});
|
|
82
83
|
}
|
|
83
84
|
async clickCreateNewProjectButton() {
|
|
84
|
-
await this.createNewProjectButton
|
|
85
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.createNewProjectButton, {
|
|
86
|
+
totalTimeout: 30000,
|
|
87
|
+
});
|
|
88
|
+
await this.createNewProjectButton.click();
|
|
85
89
|
}
|
|
86
90
|
async enterNewProjectName(name) {
|
|
87
91
|
await this.projectNameInput.click({ timeout: 60000 });
|
|
@@ -16,6 +16,9 @@ declare class PlayPage {
|
|
|
16
16
|
readonly startInstanceWithCachedButton: Locator;
|
|
17
17
|
readonly notifications: Locator;
|
|
18
18
|
readonly saveScenarioModal: Locator;
|
|
19
|
+
readonly loadingInstanceDetailsText: Locator;
|
|
20
|
+
readonly retryButton: Locator;
|
|
21
|
+
readonly dialog: Locator;
|
|
19
22
|
constructor(page: Page);
|
|
20
23
|
waitForCompleteJobButtonToBeAvailable(): Promise<void>;
|
|
21
24
|
clickCompleteJobButton(): Promise<void>;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PlayPage = void 0;
|
|
4
4
|
const test_1 = require("@playwright/test");
|
|
5
5
|
const sleep_1 = require("../../utils/sleep");
|
|
6
|
+
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
6
7
|
const maxWaitTimeSeconds = 180000;
|
|
7
8
|
class PlayPage {
|
|
8
9
|
page;
|
|
@@ -21,8 +22,12 @@ class PlayPage {
|
|
|
21
22
|
startInstanceWithCachedButton;
|
|
22
23
|
notifications;
|
|
23
24
|
saveScenarioModal;
|
|
25
|
+
loadingInstanceDetailsText;
|
|
26
|
+
retryButton;
|
|
27
|
+
dialog;
|
|
24
28
|
constructor(page) {
|
|
25
29
|
this.page = page;
|
|
30
|
+
this.dialog = page.getByRole('dialog');
|
|
26
31
|
this.completeJobButton = page
|
|
27
32
|
.getByTestId('diagram')
|
|
28
33
|
.getByLabel('Complete job');
|
|
@@ -53,6 +58,8 @@ class PlayPage {
|
|
|
53
58
|
this.startInstanceWithCachedButton = page.getByLabel('Start instance with cached');
|
|
54
59
|
this.notifications = page.locator('.cds--toast-notification');
|
|
55
60
|
this.saveScenarioModal = page.getByTestId('save-scenario-modal');
|
|
61
|
+
this.loadingInstanceDetailsText = this.page.getByText('Loading instance details...');
|
|
62
|
+
this.retryButton = this.page.getByRole('button', { name: 'Retry' });
|
|
56
63
|
}
|
|
57
64
|
async waitForCompleteJobButtonToBeAvailable() {
|
|
58
65
|
await (0, test_1.expect)(this.completeJobButton).toBeVisible({
|
|
@@ -63,12 +70,19 @@ class PlayPage {
|
|
|
63
70
|
await this.completeJobButton.click();
|
|
64
71
|
}
|
|
65
72
|
async clickStartInstanceButton() {
|
|
66
|
-
await this.diagram.waitFor({ state: 'visible', timeout: 30000 });
|
|
67
73
|
const maxRetries = 3;
|
|
68
74
|
let attempts = 0;
|
|
69
75
|
while (attempts < maxRetries) {
|
|
70
76
|
try {
|
|
71
|
-
await this.
|
|
77
|
+
await this.diagram.waitFor({ state: 'visible', timeout: 30000 });
|
|
78
|
+
await this.startInstanceButton
|
|
79
|
+
.or(this.startInstanceWithCachedButton)
|
|
80
|
+
.first()
|
|
81
|
+
.click({ timeout: 30000 });
|
|
82
|
+
await (0, test_1.expect)(this.loadingInstanceDetailsText).toBeVisible();
|
|
83
|
+
await (0, test_1.expect)(this.loadingInstanceDetailsText).not.toBeVisible({
|
|
84
|
+
timeout: 60000,
|
|
85
|
+
});
|
|
72
86
|
return;
|
|
73
87
|
}
|
|
74
88
|
catch (error) {
|
|
@@ -123,9 +137,21 @@ class PlayPage {
|
|
|
123
137
|
}
|
|
124
138
|
}
|
|
125
139
|
async waitForNextElementToBeActive(historyItem) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
140
|
+
const locator = this.page.getByText(new RegExp(`^${historyItem}`, 'i'));
|
|
141
|
+
const maxRetries = 6; // ~1 min with the waits below
|
|
142
|
+
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
143
|
+
try {
|
|
144
|
+
await (0, test_1.expect)(locator.first()).toBeVisible({ timeout: 20000 });
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
if (attempt === maxRetries)
|
|
149
|
+
throw e;
|
|
150
|
+
await this.page.reload();
|
|
151
|
+
await this.diagram.waitFor({ state: 'visible', timeout: 30000 });
|
|
152
|
+
await this.page.waitForTimeout(5000);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
129
155
|
}
|
|
130
156
|
async waitForProcessToBeCompleted() {
|
|
131
157
|
await (0, test_1.expect)(this.page.getByText('Completed')).toBeVisible({
|
|
@@ -135,12 +161,15 @@ class PlayPage {
|
|
|
135
161
|
async clickSaveScenarioButton() {
|
|
136
162
|
await this.notifications
|
|
137
163
|
.first()
|
|
138
|
-
.waitFor({ state: 'hidden', timeout:
|
|
164
|
+
.waitFor({ state: 'hidden', timeout: 60000 })
|
|
139
165
|
.catch(() => { });
|
|
140
166
|
const isModalVisible = await this.saveScenarioModal
|
|
141
167
|
.isVisible()
|
|
142
168
|
.catch(() => false);
|
|
143
169
|
if (!isModalVisible) {
|
|
170
|
+
await (0, sleep_1.sleep)(3000);
|
|
171
|
+
await (0, test_1.expect)(this.saveScenarioButton).toBeVisible({ timeout: 30000 });
|
|
172
|
+
await (0, test_1.expect)(this.saveScenarioButton).toBeEnabled({ timeout: 30000 });
|
|
144
173
|
await this.saveScenarioButton.click({ force: true, timeout: 30000 });
|
|
145
174
|
}
|
|
146
175
|
}
|
|
@@ -148,9 +177,12 @@ class PlayPage {
|
|
|
148
177
|
await this.viewScenarioButton.click();
|
|
149
178
|
}
|
|
150
179
|
async enterScenarioName(scenarioName) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
180
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.dialog, {
|
|
181
|
+
postAction: async () => {
|
|
182
|
+
await this.saveScenarioButton.click({ timeout: 30000 });
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
const input = this.dialog.locator('input#scenario-name');
|
|
154
186
|
await input.waitFor({ state: 'visible', timeout: 10000 });
|
|
155
187
|
await input.clear();
|
|
156
188
|
await input.fill(scenarioName);
|
|
@@ -159,6 +191,7 @@ class PlayPage {
|
|
|
159
191
|
await this.enterScenarioNameInput.fill(newScenarioName);
|
|
160
192
|
}
|
|
161
193
|
async clickViewAllScenariosButton() {
|
|
194
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.viewAllScenariosButton);
|
|
162
195
|
await this.viewAllScenariosButton.click();
|
|
163
196
|
}
|
|
164
197
|
async confirmSaveScenario() {
|
|
@@ -188,9 +221,17 @@ class PlayPage {
|
|
|
188
221
|
await publishIcon.click({ timeout: 30000 });
|
|
189
222
|
}
|
|
190
223
|
async assertScenarioCompleted(scenarioName) {
|
|
191
|
-
await (0,
|
|
224
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.page
|
|
192
225
|
.locator('tr', { hasText: scenarioName })
|
|
193
|
-
.locator('text=Completed')
|
|
226
|
+
.locator('text=Completed'), {
|
|
227
|
+
totalTimeout: 90000,
|
|
228
|
+
visibilityTimeout: 20000,
|
|
229
|
+
postAction: async () => {
|
|
230
|
+
if (await this.retryButton.isVisible()) {
|
|
231
|
+
await this.retryButton.click();
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
});
|
|
194
235
|
}
|
|
195
236
|
}
|
|
196
237
|
exports.PlayPage = PlayPage;
|
|
@@ -82,6 +82,8 @@ SM_8_7_1.test.describe('Deploy and run a process in Play', () => {
|
|
|
82
82
|
SM_8_7_1.test.slow();
|
|
83
83
|
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
84
84
|
const processName = 'Play_Test_Process' + randomString;
|
|
85
|
+
const scenarioName = 'My first scenario' + randomString;
|
|
86
|
+
const updatedScenarioName = 'My first scenario-updated' + randomString;
|
|
85
87
|
await SM_8_7_1.test.step('Open Cross Component Test Project', async () => {
|
|
86
88
|
await context.clearCookies();
|
|
87
89
|
await navigationPage.goToModeler();
|
|
@@ -97,10 +99,11 @@ SM_8_7_1.test.describe('Deploy and run a process in Play', () => {
|
|
|
97
99
|
timeout: 120000,
|
|
98
100
|
});
|
|
99
101
|
await modelerCreatePage.enterDiagramName(processName);
|
|
100
|
-
await (
|
|
102
|
+
await modelerCreatePage.addParallelUserTasks(1, 'zeebe-user-task' + randomString);
|
|
103
|
+
await modelerCreatePage.clickSecondPlacedGateway();
|
|
101
104
|
await modelerCreatePage.clickAppendElementButton();
|
|
102
|
-
await modelerCreatePage.clickAppendEndEventButton();
|
|
103
|
-
await (0, sleep_1.sleep)(
|
|
105
|
+
await modelerCreatePage.clickAppendEndEventButton('parallelGateway');
|
|
106
|
+
await (0, sleep_1.sleep)(5000);
|
|
104
107
|
});
|
|
105
108
|
await SM_8_7_1.test.step('Open Play', async () => {
|
|
106
109
|
await modelerCreatePage.switchToPlay();
|
|
@@ -110,52 +113,51 @@ SM_8_7_1.test.describe('Deploy and run a process in Play', () => {
|
|
|
110
113
|
await playPage.dismissStartModal();
|
|
111
114
|
await playPage.clickStartInstanceButton();
|
|
112
115
|
await playPage.waitForInstanceDetailsToBeLoaded();
|
|
116
|
+
await playPage.waitForNextElementToBeActive('zeebe-user-task' + randomString + '1');
|
|
117
|
+
await playPage.waitForCompleteJobButtonToBeAvailable();
|
|
118
|
+
await playPage.clickCompleteJobButton();
|
|
113
119
|
await playPage.waitForProcessToBeCompleted();
|
|
114
120
|
await playPage.clickSaveScenarioButton();
|
|
115
|
-
await playPage.enterScenarioName(
|
|
121
|
+
await playPage.enterScenarioName(scenarioName);
|
|
116
122
|
await playPage.confirmSaveScenario();
|
|
117
123
|
await (0, sleep_1.sleep)(2000);
|
|
118
124
|
});
|
|
119
125
|
await SM_8_7_1.test.step('Update the saved scenario', async () => {
|
|
120
126
|
await modelerCreatePage.switchToImplementTab();
|
|
121
127
|
await (0, sleep_1.sleep)(2000);
|
|
122
|
-
await modelerCreatePage.
|
|
123
|
-
await modelerCreatePage.hoverOnStartEvent();
|
|
124
|
-
await modelerCreatePage.clickAppendTaskButton();
|
|
125
|
-
await modelerCreatePage.clickChangeTypeButton();
|
|
126
|
-
await modelerCreatePage.clickUserTaskOption();
|
|
127
|
-
await modelerCreatePage.chooseImplementationOption('zeebeUserTask');
|
|
128
|
-
await modelerCreatePage.clickGeneralPropertiesPanel();
|
|
129
|
-
await modelerCreatePage.clickElemendIdInput();
|
|
130
|
-
await modelerCreatePage.fillElementIdInput('zeebe-user-task' + randomString);
|
|
131
|
-
await (0, sleep_1.sleep)(2000);
|
|
128
|
+
await modelerCreatePage.clickFirstPlacedGateway();
|
|
132
129
|
await modelerCreatePage.clickAppendElementButton();
|
|
133
|
-
await modelerCreatePage.
|
|
130
|
+
await modelerCreatePage.clickAppendTaskButton();
|
|
131
|
+
await modelerCreatePage.clickConnectToOtherElementButton();
|
|
132
|
+
await modelerCreatePage.clickSecondPlacedGateway();
|
|
133
|
+
await (0, sleep_1.sleep)(5000);
|
|
134
134
|
await modelerCreatePage.switchToPlay();
|
|
135
135
|
await modelerCreatePage.clickContinueToPlay();
|
|
136
136
|
await (0, sleep_1.sleep)(5000);
|
|
137
137
|
await playPage.clickStartInstanceButton();
|
|
138
|
-
await playPage.waitForNextElementToBeActive('zeebe-user-task' + randomString);
|
|
138
|
+
await playPage.waitForNextElementToBeActive('zeebe-user-task' + randomString + '1');
|
|
139
139
|
await playPage.waitForCompleteJobButtonToBeAvailable();
|
|
140
140
|
await playPage.clickCompleteJobButton();
|
|
141
141
|
await playPage.waitForProcessToBeCompleted();
|
|
142
142
|
await playPage.clickSaveScenarioButton();
|
|
143
|
-
await playPage.enterScenarioName(
|
|
143
|
+
await playPage.enterScenarioName(updatedScenarioName);
|
|
144
144
|
await playPage.confirmSaveScenario();
|
|
145
|
-
await modelerCreatePage.assertScenarioNameVisible(
|
|
145
|
+
await modelerCreatePage.assertScenarioNameVisible(updatedScenarioName);
|
|
146
146
|
});
|
|
147
147
|
await SM_8_7_1.test.step('Run all scenarios', async () => {
|
|
148
148
|
await playPage.clickViewAllScenariosButton();
|
|
149
149
|
await playPage.clickRunAllScenariosButton();
|
|
150
|
-
await playPage.assertScenarioCompleted(
|
|
151
|
-
await playPage.assertScenarioCompleted(
|
|
150
|
+
await playPage.assertScenarioCompleted(scenarioName);
|
|
151
|
+
await playPage.assertScenarioCompleted(updatedScenarioName);
|
|
152
152
|
});
|
|
153
153
|
await SM_8_7_1.test.step('Delete test scenario', async () => {
|
|
154
|
-
await playPage.deleteScenario(
|
|
154
|
+
await playPage.deleteScenario(scenarioName);
|
|
155
155
|
await playPage.confirmDeleteScenario();
|
|
156
|
-
await (0, test_1.expect)(page
|
|
157
|
-
.
|
|
158
|
-
|
|
156
|
+
await (0, test_1.expect)(page.locator('tr').filter({
|
|
157
|
+
has: page.getByText(scenarioName, {
|
|
158
|
+
exact: true,
|
|
159
|
+
}),
|
|
160
|
+
})).toHaveCount(0);
|
|
159
161
|
});
|
|
160
162
|
});
|
|
161
163
|
});
|
|
@@ -78,6 +78,8 @@ SM_8_8_1.test.describe('Deploy and run a process in Play', () => {
|
|
|
78
78
|
SM_8_8_1.test.slow();
|
|
79
79
|
const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
|
|
80
80
|
const processName = 'Play_Test_Process' + randomString;
|
|
81
|
+
const scenarioName = 'My first scenario' + randomString;
|
|
82
|
+
const updatedScenarioName = 'My first scenario-updated' + randomString;
|
|
81
83
|
await SM_8_8_1.test.step('Open Cross Component Test Project', async () => {
|
|
82
84
|
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
83
85
|
});
|
|
@@ -90,10 +92,11 @@ SM_8_8_1.test.describe('Deploy and run a process in Play', () => {
|
|
|
90
92
|
timeout: 120000,
|
|
91
93
|
});
|
|
92
94
|
await modelerCreatePage.enterDiagramName(processName);
|
|
93
|
-
await (
|
|
95
|
+
await modelerCreatePage.addParallelUserTasks(1, 'zeebe-user-task' + randomString);
|
|
96
|
+
await modelerCreatePage.clickSecondPlacedGateway();
|
|
94
97
|
await modelerCreatePage.clickAppendElementButton();
|
|
95
|
-
await modelerCreatePage.clickAppendEndEventButton();
|
|
96
|
-
await (0, sleep_1.sleep)(
|
|
98
|
+
await modelerCreatePage.clickAppendEndEventButton('parallelGateway');
|
|
99
|
+
await (0, sleep_1.sleep)(5000);
|
|
97
100
|
});
|
|
98
101
|
await SM_8_8_1.test.step('Open Play', async () => {
|
|
99
102
|
await modelerCreatePage.switchToPlay();
|
|
@@ -103,50 +106,47 @@ SM_8_8_1.test.describe('Deploy and run a process in Play', () => {
|
|
|
103
106
|
await playPage.dismissStartModal();
|
|
104
107
|
await playPage.clickStartInstanceButton();
|
|
105
108
|
await playPage.waitForInstanceDetailsToBeLoaded();
|
|
109
|
+
await playPage.waitForNextElementToBeActive('zeebe-user-task' + randomString + '1');
|
|
110
|
+
await playPage.waitForCompleteJobButtonToBeAvailable();
|
|
111
|
+
await playPage.clickCompleteJobButton();
|
|
106
112
|
await playPage.waitForProcessToBeCompleted();
|
|
107
113
|
await playPage.clickSaveScenarioButton();
|
|
108
|
-
await playPage.enterScenarioName(
|
|
114
|
+
await playPage.enterScenarioName(scenarioName);
|
|
109
115
|
await playPage.confirmSaveScenario();
|
|
110
116
|
await (0, sleep_1.sleep)(2000);
|
|
111
117
|
});
|
|
112
118
|
await SM_8_8_1.test.step('Update the saved scenario', async () => {
|
|
113
119
|
await modelerCreatePage.switchToImplementTab();
|
|
114
120
|
await (0, sleep_1.sleep)(2000);
|
|
115
|
-
await modelerCreatePage.
|
|
116
|
-
await modelerCreatePage.hoverOnStartEvent();
|
|
117
|
-
await modelerCreatePage.clickAppendTaskButton();
|
|
118
|
-
await modelerCreatePage.clickChangeTypeButton();
|
|
119
|
-
await modelerCreatePage.clickUserTaskOption();
|
|
120
|
-
await modelerCreatePage.chooseImplementationOption('zeebeUserTask');
|
|
121
|
-
await modelerCreatePage.clickGeneralPropertiesPanel();
|
|
122
|
-
await modelerCreatePage.clickElemendIdInput();
|
|
123
|
-
await modelerCreatePage.fillElementIdInput('zeebe-user-task' + randomString);
|
|
124
|
-
await (0, sleep_1.sleep)(2000);
|
|
121
|
+
await modelerCreatePage.clickFirstPlacedGateway();
|
|
125
122
|
await modelerCreatePage.clickAppendElementButton();
|
|
126
|
-
await modelerCreatePage.
|
|
123
|
+
await modelerCreatePage.clickAppendTaskButton();
|
|
124
|
+
await modelerCreatePage.clickConnectToOtherElementButton();
|
|
125
|
+
await modelerCreatePage.clickSecondPlacedGateway();
|
|
126
|
+
await (0, sleep_1.sleep)(5000);
|
|
127
127
|
await modelerCreatePage.switchToPlay();
|
|
128
128
|
await modelerCreatePage.clickContinueToPlay();
|
|
129
|
-
await (0, sleep_1.sleep)(
|
|
130
|
-
await playPage.
|
|
131
|
-
await playPage.waitForNextElementToBeActive('zeebe-user-task' + randomString);
|
|
129
|
+
await (0, sleep_1.sleep)(5000);
|
|
130
|
+
await playPage.clickStartInstanceButton();
|
|
131
|
+
await playPage.waitForNextElementToBeActive('zeebe-user-task' + randomString + '1');
|
|
132
132
|
await playPage.waitForCompleteJobButtonToBeAvailable();
|
|
133
133
|
await playPage.clickCompleteJobButton();
|
|
134
134
|
await playPage.waitForProcessToBeCompleted();
|
|
135
135
|
await playPage.clickSaveScenarioButton();
|
|
136
|
-
await playPage.enterScenarioName(
|
|
136
|
+
await playPage.enterScenarioName(updatedScenarioName);
|
|
137
137
|
await playPage.confirmSaveScenario();
|
|
138
|
-
await modelerCreatePage.assertScenarioNameVisible(
|
|
138
|
+
await modelerCreatePage.assertScenarioNameVisible(updatedScenarioName);
|
|
139
139
|
});
|
|
140
140
|
await SM_8_8_1.test.step('Run all scenarios', async () => {
|
|
141
141
|
await playPage.clickViewAllScenariosButton();
|
|
142
142
|
await playPage.clickRunAllScenariosButton();
|
|
143
|
-
await playPage.assertScenarioCompleted(
|
|
144
|
-
await playPage.assertScenarioCompleted(
|
|
143
|
+
await playPage.assertScenarioCompleted(scenarioName);
|
|
144
|
+
await playPage.assertScenarioCompleted(updatedScenarioName);
|
|
145
145
|
});
|
|
146
146
|
await SM_8_8_1.test.step('Delete test scenario', async () => {
|
|
147
|
-
await playPage.deleteScenario(
|
|
147
|
+
await playPage.deleteScenario(scenarioName);
|
|
148
148
|
await playPage.confirmDeleteScenario();
|
|
149
|
-
await (0, test_1.expect)(playPage.getScenarioRow(
|
|
149
|
+
await (0, test_1.expect)(playPage.getScenarioRow(scenarioName)).toHaveCount(0);
|
|
150
150
|
});
|
|
151
151
|
});
|
|
152
152
|
});
|