@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: 30000,
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: 60000,
60
+ timeout: TIMEOUT.navigation,
52
61
  });
53
62
  });
54
- await _8_7_1.test.step('Create Form To Be Linked For Zeebe User Task', async () => {
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(clusterName);
66
+ await formJsPage.deployForm(CLUSTER_NAME);
58
67
  });
59
- await _8_7_1.test.step('Add A BPMN Template To The Project', async () => {
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 Diagram with Two Zeebe User Tasks and Start Process Instance', async () => {
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: 60000,
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('View Process Instance in Operate, complete User Task in Tasklist & assert process complete in Operate and Assert Process has been successfully imported in Optimize', async () => {
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: 60000,
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
- const operateTab = await page.waitForEvent('popup', { timeout: 30000 });
94
- const operateTabHomePage = new OperateHomePage_1.OperateHomePage(operateTab);
95
- const operateTabProcessesPage = new OperateProcessesPage_1.OperateProcessesPage(operateTab);
96
- const operateTabProcessInstancePage = new OperateProcessInstancePage_1.OperateProcessInstancePage(operateTab);
97
- const operateTabAppsPage = new AppsPage_1.AppsPage(operateTab);
98
- const operateTabTaskPanelPage = new TaskPanelPage_1.TaskPanelPage(operateTab);
99
- const operateTabTaskDetailsPage = new TaskDetailsPage_1.TaskDetailsPage(operateTab);
100
- await (0, test_1.expect)(operateTabProcessInstancePage.activeIcon).toBeVisible({
101
- timeout: 300000,
102
- });
103
- await operateTabAppsPage.clickCamundaApps();
104
- await operateTabAppsPage.clickTasklist(clusterName);
105
- await (0, UtilitiesPage_1.completeTaskWithRetry)(operateTabTaskPanelPage, operateTabTaskDetailsPage, `${userTaskName}1`, 'Medium');
106
- await (0, UtilitiesPage_1.completeTaskWithRetry)(operateTabTaskPanelPage, operateTabTaskDetailsPage, `${userTaskName}2`, 'Medium');
107
- await operateTabTaskPanelPage.filterBy('Completed');
108
- await operateTabTaskPanelPage.openTask(`${userTaskName}1`);
109
- await (0, test_1.expect)(operateTabTaskDetailsPage.detailsInfo.getByText(`${userTaskName}1`)).toBeVisible({ timeout: 30000 });
110
- await operateTabTaskPanelPage.openTask(`${userTaskName}2`);
111
- await (0, test_1.expect)(operateTabTaskDetailsPage.detailsInfo.getByText(`${userTaskName}2`)).toBeVisible({ timeout: 30000 });
112
- await operateTabAppsPage.clickCamundaApps();
113
- await operateTabAppsPage.clickOperate(clusterName);
114
- await operateTabHomePage.clickProcessesTab();
115
- await (0, test_1.expect)(operateTabProcessesPage.processCompletedCheckbox).toBeVisible({ timeout: 15000 });
116
- await operateTabProcessesPage.clickProcessCompletedCheckbox();
117
- await operateTabProcessesPage.clickProcessInstanceLink(processName);
118
- await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTabProcessInstancePage, operateTabProcessInstancePage.completedIcon, 'completed icon in Operate', 60000);
119
- await operateTabAppsPage.clickCamundaApps();
120
- await operateTabAppsPage.clickOptimize(clusterName);
121
- const optimizeTabOptimizeCollectionsPage = new OptimizeCollectionsPage_1.OptimizeCollectionsPage(operateTab);
122
- const optimizeTabOptimizeReportPage = new OptimizeReportPage_1.OptimizeReportPage(operateTab);
123
- const optimizeTabOptimizeHomePage = new OptimizeHomePage_1.OptimizeHomePage(operateTab);
124
- await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(operateTab, operateTab.getByRole('link', { name: processName }));
125
- await optimizeTabOptimizeHomePage.clickCollectionsLink();
126
- await optimizeTabOptimizeCollectionsPage.clickCreateNewButton();
127
- await optimizeTabOptimizeCollectionsPage.clickReportOption();
128
- await optimizeTabOptimizeReportPage.clickProcessSelectionButton();
129
- await optimizeTabOptimizeReportPage.clickUserTaskProcess(processName);
130
- await (0, test_1.expect)(optimizeTabOptimizeReportPage.versionSelection).toBeVisible({
131
- timeout: 15000,
132
- });
133
- await optimizeTabOptimizeReportPage.clickVersionSelection();
134
- await optimizeTabOptimizeReportPage.clickAlwaysDisplayLatestSelection();
135
- await optimizeTabOptimizeReportPage.clickBlankReportButton();
136
- await optimizeTabOptimizeReportPage.clickCreateReportLink();
137
- await optimizeTabOptimizeReportPage.clickSelectDropdown();
138
- await optimizeTabOptimizeReportPage.clickUserTaskOption();
139
- await optimizeTabOptimizeReportPage.clickHeatMapButton();
140
- await (0, test_1.expect)(optimizeTabOptimizeReportPage.tableOption).toBeVisible({
141
- timeout: 15000,
142
- });
143
- await optimizeTabOptimizeReportPage.clickTableOption();
144
- await optimizeTabOptimizeReportPage.clickReportName();
145
- await optimizeTabOptimizeReportPage.clearReportName();
146
- await optimizeTabOptimizeReportPage.fillReportName(reportName);
147
- await optimizeTabOptimizeReportPage.clickSaveButton();
148
- await optimizeTabOptimizeHomePage.clickCollectionsLink();
149
- await (0, test_1.expect)(operateTab.getByText(reportName)).toBeVisible({
150
- timeout: 30000,
151
- });
152
- await optimizeTabOptimizeCollectionsPage.clickMostRecentProcessReport(reportName);
153
- await optimizeTabOptimizeReportPage.waitUntilLocatorIsVisible(optimizeTabOptimizeReportPage.oneUserTaskInstance.first(), operateTab);
154
- await (0, test_1.expect)(optimizeTabOptimizeReportPage.oneUserTaskInstance).toHaveCount(2, { timeout: 120000 });
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: 60000,
195
+ timeout: TIMEOUT.navigation,
168
196
  });
169
197
  });
170
- await _8_7_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
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 Diagram with REST Connector with Basic Auth and Start Process Instance', async () => {
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('View Process Instance in Operate, assert it completes and assert result expression', async () => {
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: 60000,
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', { timeout: 30000 });
185
- const operateTabHomePage = new OperateHomePage_1.OperateHomePage(operateTab);
186
- const operateTabProcessesPage = new OperateProcessesPage_1.OperateProcessesPage(operateTab);
187
- const operateTabProcessInstancePage = new OperateProcessInstancePage_1.OperateProcessInstancePage(operateTab);
188
- await operateTabHomePage.clickProcessesTab();
189
- await operateTabProcessesPage.clickProcessCompletedCheckbox();
190
- await operateTabProcessesPage.clickProcessInstanceLink(processName);
191
- await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateTabProcessInstancePage.completedIcon, { totalTimeout: 60000, maxRetries: 5 });
192
- await (0, test_1.expect)(operateTabProcessInstancePage.variablesList).toBeVisible({
193
- timeout: 15000,
194
- });
195
- await (0, test_1.expect)(operateTabProcessInstancePage.connectorResultVariableName('message')).toBeVisible({
196
- timeout: 15000,
197
- });
198
- await (0, test_1.expect)(operateTabProcessInstancePage
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: 15000,
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
- (0, SM_8_9_1.test)('Assert REST Connector Process Migration @tasklistV2', async ({ operateHomePage, navigationPage, operateProcessesPage, operateProcessInstancePage, }) => {
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 () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.442",
3
+ "version": "0.0.444",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",