@camunda/e2e-test-suite 0.0.442 → 0.0.444
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.
|
@@ -84,9 +84,11 @@ async function modelRestConnector(modelerCreatePage, connectorSettingsPage, proc
|
|
|
84
84
|
});
|
|
85
85
|
await connectorSettingsPage.clickResultVariableInput();
|
|
86
86
|
await connectorSettingsPage.fillResultVariableInput('result');
|
|
87
|
+
await (0, sleep_1.sleep)(3000);
|
|
87
88
|
}
|
|
88
89
|
await connectorSettingsPage.clickResultExpressionInput();
|
|
89
90
|
await connectorSettingsPage.fillResultExpressionInput(resultExpression);
|
|
91
|
+
await (0, sleep_1.sleep)(3000);
|
|
90
92
|
await modelerCreatePage.clickAppendElementButton();
|
|
91
93
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
92
94
|
await (0, sleep_1.sleep)(10000);
|
|
@@ -17,12 +17,20 @@ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLoc
|
|
|
17
17
|
const users_1 = require("../../utils/users");
|
|
18
18
|
const sleep_1 = require("../../utils/sleep");
|
|
19
19
|
const testUser = (0, users_1.getTestUser)('thirteenthUser');
|
|
20
|
+
const CLUSTER_NAME = 'Test Cluster';
|
|
21
|
+
const TIMEOUT = {
|
|
22
|
+
short: 15000,
|
|
23
|
+
medium: 30000,
|
|
24
|
+
navigation: 60000,
|
|
25
|
+
processActive: 300000,
|
|
26
|
+
processComplete: 120000,
|
|
27
|
+
optimizeImport: 120000,
|
|
28
|
+
};
|
|
29
|
+
// Use fixed names for upgrade testing validation, random names for regular testing
|
|
30
|
+
const useFixedNames = process.env.UPGRADE_BASELINE === 'true';
|
|
20
31
|
_8_7_1.test.describe.configure({ mode: 'parallel' });
|
|
21
32
|
_8_7_1.test.describe('Smoke Tests', () => {
|
|
22
33
|
_8_7_1.test.skip(process.env.IS_AG === 'true', 'Skipping Smoke Tests due to console breaking changes');
|
|
23
|
-
const clusterName = 'Test Cluster';
|
|
24
|
-
// Use fixed names for upgrade testing validation, random names for regular testing
|
|
25
|
-
const useFixedNames = process.env.UPGRADE_BASELINE === 'true';
|
|
26
34
|
_8_7_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
|
|
27
35
|
await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
|
|
28
36
|
});
|
|
@@ -41,32 +49,34 @@ _8_7_1.test.describe('Smoke Tests', () => {
|
|
|
41
49
|
const reportName = useFixedNames
|
|
42
50
|
? 'UpgradeTestReport'
|
|
43
51
|
: await (0, _setup_1.generateRandomStringAsync)(5);
|
|
52
|
+
let appTab;
|
|
44
53
|
await _8_7_1.test.step('Navigate to Web Modeler', async () => {
|
|
45
54
|
await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
|
|
46
|
-
timeout:
|
|
55
|
+
timeout: TIMEOUT.medium,
|
|
47
56
|
});
|
|
48
57
|
await appsPage.clickCamundaApps();
|
|
49
58
|
await appsPage.clickModeler();
|
|
50
59
|
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
51
|
-
timeout:
|
|
60
|
+
timeout: TIMEOUT.navigation,
|
|
52
61
|
});
|
|
53
62
|
});
|
|
54
|
-
await _8_7_1.test.step('Create
|
|
63
|
+
await _8_7_1.test.step('Create form to be linked for Zeebe user task', async () => {
|
|
55
64
|
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
56
65
|
await modelerHomePage.createForm(formName);
|
|
57
|
-
await formJsPage.deployForm(
|
|
66
|
+
await formJsPage.deployForm(CLUSTER_NAME);
|
|
58
67
|
});
|
|
59
|
-
await _8_7_1.test.step('Add
|
|
68
|
+
await _8_7_1.test.step('Add a BPMN template to the project', async () => {
|
|
60
69
|
await modelerHomePage.clickProjectBreadcrumb();
|
|
61
70
|
await modelerHomePage.clickDiagramTypeDropdown();
|
|
62
71
|
await modelerHomePage.clickBpmnTemplateOption();
|
|
63
72
|
});
|
|
64
|
-
await _8_7_1.test.step('Create BPMN
|
|
73
|
+
await _8_7_1.test.step('Create BPMN diagram with two Zeebe user tasks', async () => {
|
|
65
74
|
await (0, test_1.expect)(modelerCreatePage.generalPanel).toBeVisible({
|
|
66
|
-
timeout:
|
|
75
|
+
timeout: TIMEOUT.navigation,
|
|
67
76
|
});
|
|
68
77
|
await modelerCreatePage.enterDiagramName(processName);
|
|
69
78
|
await modelerCreatePage.assertDiagramNameSet(processName);
|
|
79
|
+
// Wait for the diagram name change to auto-save before interacting with the canvas
|
|
70
80
|
await (0, sleep_1.sleep)(10000);
|
|
71
81
|
await modelerCreatePage.clickCanvas();
|
|
72
82
|
await modelerCreatePage.clickGeneralPropertiesPanel();
|
|
@@ -83,122 +93,144 @@ _8_7_1.test.describe('Smoke Tests', () => {
|
|
|
83
93
|
await modelerCreatePage.clickForm(formName);
|
|
84
94
|
await modelerCreatePage.clickEmbedButton();
|
|
85
95
|
await modelerCreatePage.assertFormEmbedded();
|
|
86
|
-
await modelerCreatePage.runProcessInstance(clusterName);
|
|
87
96
|
});
|
|
88
|
-
await _8_7_1.test.step('
|
|
97
|
+
await _8_7_1.test.step('Deploy and start process instance', async () => {
|
|
98
|
+
await modelerCreatePage.runProcessInstance(CLUSTER_NAME);
|
|
89
99
|
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible({
|
|
90
|
-
timeout:
|
|
100
|
+
timeout: TIMEOUT.navigation,
|
|
91
101
|
});
|
|
102
|
+
});
|
|
103
|
+
await _8_7_1.test.step('Open process instance in Operate and verify it is active', async () => {
|
|
92
104
|
await modelerCreatePage.clickViewProcessInstanceLink();
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
await
|
|
104
|
-
await
|
|
105
|
-
await (0, UtilitiesPage_1.completeTaskWithRetry)(
|
|
106
|
-
await (0, UtilitiesPage_1.completeTaskWithRetry)(
|
|
107
|
-
await
|
|
108
|
-
await
|
|
109
|
-
await (0, test_1.expect)(
|
|
110
|
-
await
|
|
111
|
-
await (0, test_1.expect)(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
await
|
|
119
|
-
await
|
|
120
|
-
await
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
await
|
|
125
|
-
await
|
|
126
|
-
await
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
await
|
|
134
|
-
await
|
|
135
|
-
await
|
|
136
|
-
await
|
|
137
|
-
await
|
|
138
|
-
await
|
|
139
|
-
await
|
|
140
|
-
await
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
await
|
|
145
|
-
await
|
|
146
|
-
await
|
|
147
|
-
await
|
|
148
|
-
await
|
|
149
|
-
await
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
await
|
|
105
|
+
appTab = await page.waitForEvent('popup', { timeout: TIMEOUT.navigation });
|
|
106
|
+
const appTabProcessInstancePage = new OperateProcessInstancePage_1.OperateProcessInstancePage(appTab);
|
|
107
|
+
await (0, test_1.expect)(appTabProcessInstancePage.activeIcon).toBeVisible({
|
|
108
|
+
timeout: TIMEOUT.processActive,
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
await _8_7_1.test.step('Navigate to Tasklist and complete both user tasks', async () => {
|
|
112
|
+
const appTabAppsPage = new AppsPage_1.AppsPage(appTab);
|
|
113
|
+
const appTabTaskPanelPage = new TaskPanelPage_1.TaskPanelPage(appTab);
|
|
114
|
+
const appTabTaskDetailsPage = new TaskDetailsPage_1.TaskDetailsPage(appTab);
|
|
115
|
+
await appTabAppsPage.clickCamundaApps();
|
|
116
|
+
await appTabAppsPage.clickTasklist(CLUSTER_NAME);
|
|
117
|
+
await (0, UtilitiesPage_1.completeTaskWithRetry)(appTabTaskPanelPage, appTabTaskDetailsPage, `${userTaskName}1`, 'Medium');
|
|
118
|
+
await (0, UtilitiesPage_1.completeTaskWithRetry)(appTabTaskPanelPage, appTabTaskDetailsPage, `${userTaskName}2`, 'Medium');
|
|
119
|
+
await appTabTaskPanelPage.filterBy('Completed');
|
|
120
|
+
await appTabTaskPanelPage.openTask(`${userTaskName}1`);
|
|
121
|
+
await (0, test_1.expect)(appTabTaskDetailsPage.detailsInfo.getByText(`${userTaskName}1`)).toBeVisible({ timeout: TIMEOUT.medium });
|
|
122
|
+
await appTabTaskPanelPage.openTask(`${userTaskName}2`);
|
|
123
|
+
await (0, test_1.expect)(appTabTaskDetailsPage.detailsInfo.getByText(`${userTaskName}2`)).toBeVisible({ timeout: TIMEOUT.medium });
|
|
124
|
+
});
|
|
125
|
+
await _8_7_1.test.step('Assert process completion in Operate', async () => {
|
|
126
|
+
const appTabAppsPage = new AppsPage_1.AppsPage(appTab);
|
|
127
|
+
const appTabHomePage = new OperateHomePage_1.OperateHomePage(appTab);
|
|
128
|
+
const appTabProcessesPage = new OperateProcessesPage_1.OperateProcessesPage(appTab);
|
|
129
|
+
const appTabProcessInstancePage = new OperateProcessInstancePage_1.OperateProcessInstancePage(appTab);
|
|
130
|
+
await appTabAppsPage.clickCamundaApps();
|
|
131
|
+
await appTabAppsPage.clickOperate(CLUSTER_NAME);
|
|
132
|
+
await appTabHomePage.clickProcessesTab();
|
|
133
|
+
await (0, test_1.expect)(appTabProcessesPage.processCompletedCheckbox).toBeVisible({
|
|
134
|
+
timeout: TIMEOUT.short,
|
|
135
|
+
});
|
|
136
|
+
await appTabProcessesPage.clickProcessCompletedCheckbox();
|
|
137
|
+
await appTabProcessesPage.clickProcessInstanceLink(processName);
|
|
138
|
+
await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(appTabProcessInstancePage, appTabProcessInstancePage.completedIcon, 'completed icon in Operate', TIMEOUT.processComplete);
|
|
139
|
+
});
|
|
140
|
+
await _8_7_1.test.step('Assert process imported in Optimize and create user task report', async () => {
|
|
141
|
+
const appTabAppsPage = new AppsPage_1.AppsPage(appTab);
|
|
142
|
+
const optimizeHomePage = new OptimizeHomePage_1.OptimizeHomePage(appTab);
|
|
143
|
+
const optimizeCollectionsPage = new OptimizeCollectionsPage_1.OptimizeCollectionsPage(appTab);
|
|
144
|
+
const optimizeReportPage = new OptimizeReportPage_1.OptimizeReportPage(appTab);
|
|
145
|
+
await appTabAppsPage.clickCamundaApps();
|
|
146
|
+
await appTabAppsPage.clickOptimize(CLUSTER_NAME);
|
|
147
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(appTab, appTab.getByRole('link', { name: processName }));
|
|
148
|
+
await optimizeHomePage.clickCollectionsLink();
|
|
149
|
+
await optimizeCollectionsPage.clickCreateNewButton();
|
|
150
|
+
await optimizeCollectionsPage.clickReportOption();
|
|
151
|
+
await optimizeReportPage.clickProcessSelectionButton();
|
|
152
|
+
await optimizeReportPage.clickUserTaskProcess(processName);
|
|
153
|
+
await (0, test_1.expect)(optimizeReportPage.versionSelection).toBeVisible({
|
|
154
|
+
timeout: TIMEOUT.short,
|
|
155
|
+
});
|
|
156
|
+
await optimizeReportPage.clickVersionSelection();
|
|
157
|
+
await optimizeReportPage.clickAlwaysDisplayLatestSelection();
|
|
158
|
+
await optimizeReportPage.clickBlankReportButton();
|
|
159
|
+
await optimizeReportPage.clickCreateReportLink();
|
|
160
|
+
await optimizeReportPage.clickSelectDropdown();
|
|
161
|
+
await optimizeReportPage.clickUserTaskOption();
|
|
162
|
+
await optimizeReportPage.clickHeatMapButton();
|
|
163
|
+
await (0, test_1.expect)(optimizeReportPage.tableOption).toBeVisible({
|
|
164
|
+
timeout: TIMEOUT.short,
|
|
165
|
+
});
|
|
166
|
+
await optimizeReportPage.clickTableOption();
|
|
167
|
+
await optimizeReportPage.clickReportName();
|
|
168
|
+
await optimizeReportPage.clearReportName();
|
|
169
|
+
await optimizeReportPage.fillReportName(reportName);
|
|
170
|
+
await optimizeReportPage.clickSaveButton();
|
|
171
|
+
await optimizeHomePage.clickCollectionsLink();
|
|
172
|
+
await (0, test_1.expect)(appTab.getByText(reportName)).toBeVisible({
|
|
173
|
+
timeout: TIMEOUT.medium,
|
|
174
|
+
});
|
|
175
|
+
await optimizeCollectionsPage.clickMostRecentProcessReport(reportName);
|
|
176
|
+
await optimizeReportPage.waitUntilLocatorIsVisible(optimizeReportPage.oneUserTaskInstance.first(), appTab);
|
|
177
|
+
await (0, test_1.expect)(optimizeReportPage.oneUserTaskInstance).toHaveCount(2, {
|
|
178
|
+
timeout: TIMEOUT.optimizeImport,
|
|
179
|
+
});
|
|
155
180
|
});
|
|
156
181
|
});
|
|
157
|
-
(0, _8_7_1.test)('Most Common REST Connector User Flow', async ({ page, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, }) => {
|
|
182
|
+
(0, _8_7_1.test)('Most Common REST Connector User Flow', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, connectorSettingsPage, }) => {
|
|
158
183
|
_8_7_1.test.slow();
|
|
159
184
|
const randomString = useFixedNames
|
|
160
185
|
? 'UpgradeTest'
|
|
161
186
|
: await (0, _setup_1.generateRandomStringAsync)(3);
|
|
162
187
|
const processName = 'REST_Connector_Basic_Auth_Process' + randomString;
|
|
163
188
|
await _8_7_1.test.step('Navigate to Web Modeler', async () => {
|
|
189
|
+
await (0, test_1.expect)(homePage.camundaComponentsButton).toBeVisible({
|
|
190
|
+
timeout: TIMEOUT.medium,
|
|
191
|
+
});
|
|
164
192
|
await appsPage.clickCamundaApps();
|
|
165
193
|
await appsPage.clickModeler();
|
|
166
194
|
await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
|
|
167
|
-
timeout:
|
|
195
|
+
timeout: TIMEOUT.navigation,
|
|
168
196
|
});
|
|
169
197
|
});
|
|
170
|
-
await _8_7_1.test.step('Open Cross Component Test Project and
|
|
198
|
+
await _8_7_1.test.step('Open Cross Component Test Project and create a BPMN diagram template', async () => {
|
|
171
199
|
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
172
200
|
await modelerHomePage.clickDiagramTypeDropdown();
|
|
173
201
|
await modelerHomePage.clickBpmnTemplateOption();
|
|
174
202
|
});
|
|
175
|
-
await _8_7_1.test.step('Create BPMN
|
|
203
|
+
await _8_7_1.test.step('Create BPMN diagram with REST Connector using Basic Auth', async () => {
|
|
176
204
|
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/basic-auth-test', 'basic', '{message:response.body.message}', 'result', { username: 'username', password: 'password' });
|
|
177
|
-
await modelerCreatePage.runProcessInstance(clusterName);
|
|
178
205
|
});
|
|
179
|
-
await _8_7_1.test.step('
|
|
206
|
+
await _8_7_1.test.step('Deploy and start process instance', async () => {
|
|
207
|
+
await modelerCreatePage.runProcessInstance(CLUSTER_NAME);
|
|
180
208
|
await (0, test_1.expect)(modelerCreatePage.viewProcessInstanceLink).toBeVisible({
|
|
181
|
-
timeout:
|
|
209
|
+
timeout: TIMEOUT.navigation,
|
|
182
210
|
});
|
|
211
|
+
});
|
|
212
|
+
await _8_7_1.test.step('Assert process completes in Operate and verify connector result', async () => {
|
|
183
213
|
await modelerCreatePage.clickViewProcessInstanceLink();
|
|
184
|
-
const operateTab = await page.waitForEvent('popup', {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
await
|
|
191
|
-
await
|
|
192
|
-
await
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
214
|
+
const operateTab = await page.waitForEvent('popup', {
|
|
215
|
+
timeout: TIMEOUT.navigation,
|
|
216
|
+
});
|
|
217
|
+
const operateHomePage = new OperateHomePage_1.OperateHomePage(operateTab);
|
|
218
|
+
const operateProcessesPage = new OperateProcessesPage_1.OperateProcessesPage(operateTab);
|
|
219
|
+
const operateProcessInstancePage = new OperateProcessInstancePage_1.OperateProcessInstancePage(operateTab);
|
|
220
|
+
await operateHomePage.clickProcessesTab();
|
|
221
|
+
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
222
|
+
await operateProcessesPage.clickProcessInstanceLink(processName);
|
|
223
|
+
await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(operateTab, operateProcessInstancePage.completedIcon, { totalTimeout: TIMEOUT.processComplete, maxRetries: 5 });
|
|
224
|
+
await (0, test_1.expect)(operateProcessInstancePage.variablesList).toBeVisible({
|
|
225
|
+
timeout: TIMEOUT.short,
|
|
226
|
+
});
|
|
227
|
+
await (0, test_1.expect)(operateProcessInstancePage.connectorResultVariableName('message')).toBeVisible({
|
|
228
|
+
timeout: TIMEOUT.short,
|
|
229
|
+
});
|
|
230
|
+
await (0, test_1.expect)(operateProcessInstancePage
|
|
199
231
|
.connectorResultVariableName('message')
|
|
200
232
|
.getByText('"Message from Mock!"')).toBeVisible({
|
|
201
|
-
timeout:
|
|
233
|
+
timeout: TIMEOUT.short,
|
|
202
234
|
});
|
|
203
235
|
});
|
|
204
236
|
});
|
|
@@ -70,7 +70,8 @@ if (process.env.IS_MIGRATION === 'true') {
|
|
|
70
70
|
});
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
|
-
|
|
73
|
+
// Skipped due to 320: https://github.com/camunda/marketplace-api/issues/320
|
|
74
|
+
SM_8_9_1.test.skip('Assert REST Connector Process Migration @tasklistV2', async ({ operateHomePage, navigationPage, operateProcessesPage, operateProcessInstancePage, }) => {
|
|
74
75
|
SM_8_9_1.test.slow();
|
|
75
76
|
const processName = 'REST_Connector_Basic_Auth_Process';
|
|
76
77
|
await SM_8_9_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|