@camunda/e2e-test-suite 0.0.1442 → 0.0.1444

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.
Files changed (123) hide show
  1. package/.github/c8_versions.json +1 -0
  2. package/README.md +2 -0
  3. package/dist/fixtures/SM-8.11.d.ts +77 -0
  4. package/dist/fixtures/SM-8.11.js +176 -0
  5. package/dist/pages/8.7/ModelerCreatePage.js +21 -0
  6. package/dist/pages/SM-8.11/Authorization.d.ts +39 -0
  7. package/dist/pages/SM-8.11/Authorization.js +349 -0
  8. package/dist/pages/SM-8.11/ClusterDetailsPage.d.ts +8 -0
  9. package/dist/pages/SM-8.11/ClusterDetailsPage.js +65 -0
  10. package/dist/pages/SM-8.11/ClusterPage.d.ts +11 -0
  11. package/dist/pages/SM-8.11/ClusterPage.js +37 -0
  12. package/dist/pages/SM-8.11/ConnectorMarketplacePage.d.ts +27 -0
  13. package/dist/pages/SM-8.11/ConnectorMarketplacePage.js +187 -0
  14. package/dist/pages/SM-8.11/ConnectorSettingsPage.d.ts +41 -0
  15. package/dist/pages/SM-8.11/ConnectorSettingsPage.js +153 -0
  16. package/dist/pages/SM-8.11/ConnectorTemplatePage.d.ts +11 -0
  17. package/dist/pages/SM-8.11/ConnectorTemplatePage.js +34 -0
  18. package/dist/pages/SM-8.11/FormJsPage.d.ts +33 -0
  19. package/dist/pages/SM-8.11/FormJsPage.js +109 -0
  20. package/dist/pages/SM-8.11/HomePage.d.ts +20 -0
  21. package/dist/pages/SM-8.11/HomePage.js +49 -0
  22. package/dist/pages/SM-8.11/IdentityTenantPage.d.ts +53 -0
  23. package/dist/pages/SM-8.11/IdentityTenantPage.js +264 -0
  24. package/dist/pages/SM-8.11/IdentityUsersPage.d.ts +92 -0
  25. package/dist/pages/SM-8.11/IdentityUsersPage.js +485 -0
  26. package/dist/pages/SM-8.11/KeycloakAdminPage.d.ts +17 -0
  27. package/dist/pages/SM-8.11/KeycloakAdminPage.js +78 -0
  28. package/dist/pages/SM-8.11/KeycloakLoginPage.d.ts +12 -0
  29. package/dist/pages/SM-8.11/KeycloakLoginPage.js +32 -0
  30. package/dist/pages/SM-8.11/KeycloakUtils.d.ts +17 -0
  31. package/dist/pages/SM-8.11/KeycloakUtils.js +94 -0
  32. package/dist/pages/SM-8.11/LoginPage.d.ts +21 -0
  33. package/dist/pages/SM-8.11/LoginPage.js +112 -0
  34. package/dist/pages/SM-8.11/ManagementIdentityPage.d.ts +44 -0
  35. package/dist/pages/SM-8.11/ManagementIdentityPage.js +176 -0
  36. package/dist/pages/SM-8.11/ModelerCreatePage.d.ts +238 -0
  37. package/dist/pages/SM-8.11/ModelerCreatePage.js +1950 -0
  38. package/dist/pages/SM-8.11/ModelerHomePage.d.ts +97 -0
  39. package/dist/pages/SM-8.11/ModelerHomePage.js +956 -0
  40. package/dist/pages/SM-8.11/NavigationPage.d.ts +58 -0
  41. package/dist/pages/SM-8.11/NavigationPage.js +389 -0
  42. package/dist/pages/SM-8.11/OCIdentityAuthorizationsPage.d.ts +10 -0
  43. package/dist/pages/SM-8.11/OCIdentityAuthorizationsPage.js +22 -0
  44. package/dist/pages/SM-8.11/OCIdentityClusterVariablesPage.d.ts +22 -0
  45. package/dist/pages/SM-8.11/OCIdentityClusterVariablesPage.js +120 -0
  46. package/dist/pages/SM-8.11/OCIdentityGroupsPage.d.ts +39 -0
  47. package/dist/pages/SM-8.11/OCIdentityGroupsPage.js +154 -0
  48. package/dist/pages/SM-8.11/OCIdentityHomePage.d.ts +23 -0
  49. package/dist/pages/SM-8.11/OCIdentityHomePage.js +115 -0
  50. package/dist/pages/SM-8.11/OCIdentityMappingRulesPage.d.ts +23 -0
  51. package/dist/pages/SM-8.11/OCIdentityMappingRulesPage.js +116 -0
  52. package/dist/pages/SM-8.11/OCIdentityRolesPage.d.ts +61 -0
  53. package/dist/pages/SM-8.11/OCIdentityRolesPage.js +433 -0
  54. package/dist/pages/SM-8.11/OCTenantPage.d.ts +73 -0
  55. package/dist/pages/SM-8.11/OCTenantPage.js +399 -0
  56. package/dist/pages/SM-8.11/OperateHomePage.d.ts +26 -0
  57. package/dist/pages/SM-8.11/OperateHomePage.js +139 -0
  58. package/dist/pages/SM-8.11/OperateProcessInstancePage.d.ts +30 -0
  59. package/dist/pages/SM-8.11/OperateProcessInstancePage.js +276 -0
  60. package/dist/pages/SM-8.11/OperateProcessesPage.d.ts +38 -0
  61. package/dist/pages/SM-8.11/OperateProcessesPage.js +383 -0
  62. package/dist/pages/SM-8.11/OptimizeCollectionsPage.d.ts +17 -0
  63. package/dist/pages/SM-8.11/OptimizeCollectionsPage.js +62 -0
  64. package/dist/pages/SM-8.11/OptimizeDashboardPage.d.ts +14 -0
  65. package/dist/pages/SM-8.11/OptimizeDashboardPage.js +63 -0
  66. package/dist/pages/SM-8.11/OptimizeHomePage.d.ts +19 -0
  67. package/dist/pages/SM-8.11/OptimizeHomePage.js +76 -0
  68. package/dist/pages/SM-8.11/OptimizeReportPage.d.ts +50 -0
  69. package/dist/pages/SM-8.11/OptimizeReportPage.js +209 -0
  70. package/dist/pages/SM-8.11/PlayPage.d.ts +47 -0
  71. package/dist/pages/SM-8.11/PlayPage.js +389 -0
  72. package/dist/pages/SM-8.11/ProcessApplicationPage.d.ts +35 -0
  73. package/dist/pages/SM-8.11/ProcessApplicationPage.js +340 -0
  74. package/dist/pages/SM-8.11/SettingsPage.d.ts +12 -0
  75. package/dist/pages/SM-8.11/SettingsPage.js +34 -0
  76. package/dist/pages/SM-8.11/TaskDetailsPage.d.ts +70 -0
  77. package/dist/pages/SM-8.11/TaskDetailsPage.js +273 -0
  78. package/dist/pages/SM-8.11/TaskPanelPage.d.ts +29 -0
  79. package/dist/pages/SM-8.11/TaskPanelPage.js +320 -0
  80. package/dist/pages/SM-8.11/TaskProcessesPage.d.ts +15 -0
  81. package/dist/pages/SM-8.11/TaskProcessesPage.js +77 -0
  82. package/dist/pages/SM-8.11/UtilitiesPage.d.ts +38 -0
  83. package/dist/pages/SM-8.11/UtilitiesPage.js +573 -0
  84. package/dist/pages/SM-8.11/optimizeReportUtils.d.ts +6 -0
  85. package/dist/pages/SM-8.11/optimizeReportUtils.js +77 -0
  86. package/dist/tests/SM-8.11/cluster-management-user-flows.spec.d.ts +1 -0
  87. package/dist/tests/SM-8.11/cluster-management-user-flows.spec.js +48 -0
  88. package/dist/tests/SM-8.11/cluster-variables.spec.d.ts +1 -0
  89. package/dist/tests/SM-8.11/cluster-variables.spec.js +226 -0
  90. package/dist/tests/SM-8.11/connectors-user-flows.spec.d.ts +1 -0
  91. package/dist/tests/SM-8.11/connectors-user-flows.spec.js +307 -0
  92. package/dist/tests/SM-8.11/document-handling-user-flows.spec.d.ts +1 -0
  93. package/dist/tests/SM-8.11/document-handling-user-flows.spec.js +174 -0
  94. package/dist/tests/SM-8.11/hto-user-flows.spec.d.ts +1 -0
  95. package/dist/tests/SM-8.11/hto-user-flows.spec.js +410 -0
  96. package/dist/tests/SM-8.11/hub-web-modeler-smoke.spec.d.ts +1 -0
  97. package/dist/tests/SM-8.11/hub-web-modeler-smoke.spec.js +24 -0
  98. package/dist/tests/SM-8.11/identity-user-flows.spec.d.ts +1 -0
  99. package/dist/tests/SM-8.11/identity-user-flows.spec.js +220 -0
  100. package/dist/tests/SM-8.11/license-key-user-flows.spec.d.ts +1 -0
  101. package/dist/tests/SM-8.11/license-key-user-flows.spec.js +461 -0
  102. package/dist/tests/SM-8.11/login.spec.d.ts +1 -0
  103. package/dist/tests/SM-8.11/login.spec.js +24 -0
  104. package/dist/tests/SM-8.11/migration-path-user-flows.spec.d.ts +1 -0
  105. package/dist/tests/SM-8.11/migration-path-user-flows.spec.js +263 -0
  106. package/dist/tests/SM-8.11/mt-enabled-user-flows.spec.d.ts +1 -0
  107. package/dist/tests/SM-8.11/mt-enabled-user-flows.spec.js +607 -0
  108. package/dist/tests/SM-8.11/optimize-user-flows.spec.d.ts +1 -0
  109. package/dist/tests/SM-8.11/optimize-user-flows.spec.js +505 -0
  110. package/dist/tests/SM-8.11/play.spec.d.ts +1 -0
  111. package/dist/tests/SM-8.11/play.spec.js +144 -0
  112. package/dist/tests/SM-8.11/rba-enabled-user-flows.spec.d.ts +1 -0
  113. package/dist/tests/SM-8.11/rba-enabled-user-flows.spec.js +712 -0
  114. package/dist/tests/SM-8.11/smoke-tests.spec.d.ts +1 -0
  115. package/dist/tests/SM-8.11/smoke-tests.spec.js +167 -0
  116. package/dist/tests/SM-8.11/test-setup.spec.d.ts +1 -0
  117. package/dist/tests/SM-8.11/test-setup.spec.js +24 -0
  118. package/dist/tests/SM-8.11/topology-orchestration-smoke.spec.d.ts +1 -0
  119. package/dist/tests/SM-8.11/topology-orchestration-smoke.spec.js +58 -0
  120. package/dist/tests/SM-8.11/web-modeler-user-flows.spec.d.ts +1 -0
  121. package/dist/tests/SM-8.11/web-modeler-user-flows.spec.js +223 -0
  122. package/package.json +1 -1
  123. package/playwright.config.ts +21 -0
@@ -0,0 +1,505 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const test_1 = require("@playwright/test");
27
+ const SM_8_11_1 = require("../../fixtures/SM-8.11");
28
+ const _setup_1 = require("../../test-setup.js");
29
+ const sleep_1 = require("../../utils/sleep");
30
+ const UtilitiesPage_1 = require("../../pages/SM-8.11/UtilitiesPage");
31
+ const UtilitiesPage_2 = require("../../pages/SM-8.11/UtilitiesPage");
32
+ if (process.env.IS_OPTIMIZE !== 'false') {
33
+ SM_8_11_1.test.describe.configure({ mode: 'parallel' });
34
+ SM_8_11_1.test.describe('Optimize User Flow Tests @tasklistV1', () => {
35
+ SM_8_11_1.test.beforeEach(async ({ navigationPage }, testInfo) => {
36
+ await navigationPage.goToModeler((testInfo.workerIndex + 1) * 1000);
37
+ });
38
+ SM_8_11_1.test.afterEach(async ({ page }, testInfo) => {
39
+ await (0, _setup_1.captureScreenshot)(page, testInfo);
40
+ await (0, _setup_1.captureFailureVideo)(page, testInfo);
41
+ });
42
+ (0, SM_8_11_1.test)('Process Import Flow', async ({ page, operateHomePage, modelerHomePage, navigationPage, modelerCreatePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeDashboardPage, }) => {
43
+ SM_8_11_1.test.slow();
44
+ const processName = 'Optimize_Job_Worker_User_Task_Flow' +
45
+ (await (0, _setup_1.generateRandomStringAsync)(3));
46
+ await SM_8_11_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
47
+ await modelerHomePage.clickCrossComponentProjectFolder();
48
+ await modelerHomePage.clickDiagramTypeDropdown();
49
+ await modelerHomePage.clickBpmnTemplateOption();
50
+ });
51
+ await SM_8_11_1.test.step('Create BPMN Diagram with User Task and Start Process Instance', async () => {
52
+ await modelerCreatePage.modelJobWorkerDiagram(processName);
53
+ await modelerCreatePage.runProcessInstance();
54
+ await (0, sleep_1.sleep)(10000);
55
+ });
56
+ await SM_8_11_1.test.step('View Process Instance in Operate and Assert Process has been successfully imported in Optimize', async () => {
57
+ await navigationPage.goToOperate();
58
+ await operateHomePage.clickProcessesTab();
59
+ await operateProcessesPage.clickProcessInstanceLink(processName);
60
+ await operateProcessInstancePage.activeIconAssertion();
61
+ await navigationPage.goToOptimize();
62
+ await optimizeHomePage.clickDashboardLink();
63
+ await (0, sleep_1.sleep)(10000);
64
+ await page.reload();
65
+ await optimizeDashboardPage.clickFilterTable();
66
+ await optimizeDashboardPage.fillFilterTable(processName);
67
+ await optimizeDashboardPage.processAssertion(processName);
68
+ });
69
+ });
70
+ (0, SM_8_11_1.test)('Job Worker User Task User Flow', async ({ page, modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, }) => {
71
+ SM_8_11_1.test.slow();
72
+ const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
73
+ const processName = 'Optimize_Job_Worker_User_Task_Diagram' + reportName;
74
+ await SM_8_11_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
75
+ await modelerHomePage.clickCrossComponentProjectFolder();
76
+ await modelerHomePage.clickDiagramTypeDropdown();
77
+ await modelerHomePage.clickBpmnTemplateOption();
78
+ });
79
+ await SM_8_11_1.test.step('Create BPMN Diagram with User Task and Start Process Instance', async () => {
80
+ await modelerCreatePage.modelJobWorkerDiagram(processName);
81
+ await modelerCreatePage.runProcessInstance();
82
+ await (0, sleep_1.sleep)(10000);
83
+ });
84
+ await SM_8_11_1.test.step('View Process Instance in Operate, Create User Task Report in Optimize, Start Another Process Instance in Modeler & Assert the Report Updates', async () => {
85
+ await navigationPage.goToOperate();
86
+ await (0, sleep_1.sleep)(10000);
87
+ await page.reload();
88
+ await operateHomePage.clickProcessesTab();
89
+ await operateProcessesPage.clickProcessInstanceLink(processName);
90
+ await operateProcessInstancePage.activeIconAssertion();
91
+ await navigationPage.goToOptimize();
92
+ await page.reload();
93
+ await optimizeHomePage.clickCollectionsLink();
94
+ await optimizeCollectionsPage.clickCreateNewButton();
95
+ await optimizeCollectionsPage.clickReportOption();
96
+ await optimizeReportPage.clickProcessSelectionButton();
97
+ await optimizeReportPage.clickUserTaskProcess(processName);
98
+ await (0, test_1.expect)(optimizeReportPage.versionSelection).toBeVisible({
99
+ timeout: 30000,
100
+ });
101
+ await optimizeReportPage.clickVersionSelection();
102
+ await optimizeReportPage.clickAlwaysDisplayLatestSelection();
103
+ await optimizeReportPage.clickBlankReportButton();
104
+ await optimizeReportPage.clickCreateReportLink();
105
+ await optimizeReportPage.clickSelectDropdown();
106
+ await optimizeReportPage.clickUserTaskOption();
107
+ await optimizeReportPage.clickHeatMapButton();
108
+ await (0, test_1.expect)(optimizeReportPage.tableOption).toBeVisible({
109
+ timeout: 30000,
110
+ });
111
+ await optimizeReportPage.clickTableOption();
112
+ await optimizeReportPage.clickReportName();
113
+ await optimizeReportPage.clearReportName();
114
+ await optimizeReportPage.fillReportName(reportName);
115
+ await optimizeReportPage.clickSaveButton();
116
+ await optimizeHomePage.clickCollectionsLink();
117
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, reportName, false, 30000);
118
+ await optimizeCollectionsPage.clickMostRecentProcessReport(reportName);
119
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, optimizeReportPage.oneUserTaskInstance, 'One user task count', 90000);
120
+ await navigationPage.goToModeler();
121
+ await modelerHomePage.clickCrossComponentProjectFolder();
122
+ await modelerHomePage.clickProcessDiagram(processName);
123
+ await modelerCreatePage.runProcessInstance();
124
+ await (0, sleep_1.sleep)(10000);
125
+ await navigationPage.goToOperate();
126
+ await (0, sleep_1.sleep)(10000);
127
+ await page.reload();
128
+ await operateHomePage.clickProcessesTab();
129
+ await operateProcessesPage.clickProcessInstanceLink(processName);
130
+ await operateProcessInstancePage.activeIconAssertion();
131
+ await navigationPage.goToOptimize();
132
+ await (0, sleep_1.sleep)(10000);
133
+ await optimizeHomePage.clickCollectionsLink();
134
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, reportName, false, 30000);
135
+ await optimizeCollectionsPage.clickMostRecentProcessReport(reportName);
136
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, optimizeReportPage.twoUserTaskInstance, 'Two user tasks count', 90000);
137
+ await (0, test_1.expect)(optimizeReportPage.oneUserTaskInstance).not.toBeVisible();
138
+ });
139
+ });
140
+ (0, SM_8_11_1.test)('New Instances Updated Flow', async ({ page, modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, }) => {
141
+ SM_8_11_1.test.slow();
142
+ const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
143
+ const processName = 'Optimize_Job_Worker_User_Task_Flow_Updated' +
144
+ (await (0, _setup_1.generateRandomStringAsync)(3));
145
+ await SM_8_11_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
146
+ await modelerHomePage.clickCrossComponentProjectFolder();
147
+ await modelerHomePage.clickDiagramTypeDropdown();
148
+ await modelerHomePage.clickBpmnTemplateOption();
149
+ });
150
+ await SM_8_11_1.test.step('Create BPMN Diagram with User Task and Start Process Instance', async () => {
151
+ await modelerCreatePage.modelJobWorkerDiagram(processName);
152
+ await modelerCreatePage.deployProcessInstance();
153
+ await (0, sleep_1.sleep)(10000);
154
+ });
155
+ await SM_8_11_1.test.step('Create Process Instance Count Report in Optimize, Start A Process Instance in Modeler & Assert the Report Updates', async () => {
156
+ await navigationPage.goToOptimize();
157
+ await (0, sleep_1.sleep)(40000);
158
+ await page.reload();
159
+ await optimizeHomePage.clickCollectionsLink();
160
+ await optimizeCollectionsPage.clickCreateNewButton();
161
+ await optimizeCollectionsPage.clickReportOption();
162
+ await optimizeReportPage.clickProcessSelectionButton();
163
+ await optimizeReportPage.clickUserTaskProcess(processName);
164
+ await (0, test_1.expect)(optimizeReportPage.versionSelection).toBeVisible({
165
+ timeout: 30000,
166
+ });
167
+ await optimizeReportPage.clickVersionSelection();
168
+ await optimizeReportPage.clickAlwaysDisplayLatestSelection();
169
+ await optimizeReportPage.clickBlankReportButton();
170
+ await optimizeReportPage.clickCreateReportLink();
171
+ await optimizeReportPage.clickSelectDropdown();
172
+ await optimizeReportPage.clickUserTaskOption();
173
+ await optimizeReportPage.clickHeatMapButton();
174
+ await (0, test_1.expect)(optimizeReportPage.tableOption).toBeVisible({
175
+ timeout: 30000,
176
+ });
177
+ await optimizeReportPage.clickTableOption();
178
+ await optimizeReportPage.clickReportName();
179
+ await optimizeReportPage.clearReportName();
180
+ await optimizeReportPage.fillReportName(reportName);
181
+ await optimizeReportPage.clickSaveButton();
182
+ await optimizeHomePage.clickCollectionsLink();
183
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, reportName, false, 30000);
184
+ await optimizeCollectionsPage.clickMostRecentProcessReport(reportName);
185
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, 'Displaying data from 0 instances.', false, 30000);
186
+ await navigationPage.goToModeler();
187
+ await modelerHomePage.clickCrossComponentProjectFolder();
188
+ await modelerHomePage.clickProcessDiagram(processName);
189
+ await modelerCreatePage.runProcessInstance();
190
+ await (0, sleep_1.sleep)(10000);
191
+ await navigationPage.goToOperate();
192
+ await operateHomePage.clickProcessesTab();
193
+ await operateProcessesPage.clickProcessInstanceLink(processName);
194
+ await (0, test_1.expect)(operateProcessInstancePage.activeIcon).toBeVisible({
195
+ timeout: 1200000,
196
+ });
197
+ await navigationPage.goToOptimize();
198
+ await (0, sleep_1.sleep)(15000);
199
+ await page.reload();
200
+ await optimizeHomePage.clickCollectionsLink();
201
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, reportName, false, 30000);
202
+ await optimizeCollectionsPage.clickMostRecentProcessReport(reportName);
203
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, 'Displaying data from 1 instance.', false, 30000);
204
+ });
205
+ });
206
+ (0, SM_8_11_1.test)('Conditional Events - Process Import Flow @tasklistV2', async ({ page, modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeDashboardPage, }) => {
207
+ SM_8_11_1.test.slow();
208
+ const bpmnFileName = 'Conditional_Events_All.bpmn';
209
+ const processName = 'Conditional Events Auto-Run';
210
+ await SM_8_11_1.test.step('Upload and deploy Conditional Events BPMN from Web Modeler', async () => {
211
+ await modelerHomePage.clickCrossComponentProjectFolder();
212
+ await modelerHomePage.clickDiagramTypeDropdown();
213
+ await modelerHomePage.clickUploadFilesButton();
214
+ const { uploadFile } = await Promise.resolve().then(() => __importStar(require('../../utils/fileUpload')));
215
+ await uploadFile(page, bpmnFileName);
216
+ await (0, sleep_1.sleep)(5000);
217
+ await modelerHomePage.clickProcessDiagram(bpmnFileName.replace('.bpmn', ''));
218
+ });
219
+ await SM_8_11_1.test.step('Start process instance with variable {"myVar": 8}', async () => {
220
+ const variables = '{"myVar": 8}';
221
+ await modelerCreatePage.runProcessInstance(variables);
222
+ });
223
+ await SM_8_11_1.test.step('Verify process instance is completed in Operate', async () => {
224
+ await navigationPage.goToOperate();
225
+ await operateHomePage.clickProcessesTab();
226
+ await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
227
+ await operateProcessInstancePage.assertProcessCompleteStatusWithRetry(60000, 15);
228
+ await operateProcessInstancePage.assertProcessVariableContainsText('myVar', '8');
229
+ });
230
+ await SM_8_11_1.test.step('Navigate to Optimize and verify Conditional Events process appears in Dashboards (CE-OPT-01)', async () => {
231
+ await navigationPage.goToOptimize();
232
+ await optimizeHomePage.clickDashboardLink();
233
+ await (0, sleep_1.sleep)(10000);
234
+ await page.reload();
235
+ await optimizeDashboardPage.clickFilterTable();
236
+ await optimizeDashboardPage.fillFilterTable(processName);
237
+ await optimizeDashboardPage.processAssertion(processName);
238
+ });
239
+ await SM_8_11_1.test.step('Verify the process link for Conditional Events is navigable in the Optimize dashboard (CE-OPT-02)', async () => {
240
+ await page.reload();
241
+ await optimizeDashboardPage.clickFilterTable();
242
+ await optimizeDashboardPage.fillFilterTable(processName);
243
+ await optimizeDashboardPage.processAssertion(processName);
244
+ await page.getByTitle(processName).first().click({ timeout: 60000 });
245
+ await (0, test_1.expect)(page.getByRole('link', { name: 'Camunda logo Optimize' })).toBeVisible({ timeout: 60000 });
246
+ });
247
+ });
248
+ (0, SM_8_11_1.test)('Conditional Events - Create and Verify User Task Report @tasklistV2', async ({ page, modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, }) => {
249
+ SM_8_11_1.test.slow();
250
+ const bpmnFileName = 'Conditional_Events_All.bpmn';
251
+ const processName = 'Conditional Events Auto-Run';
252
+ const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
253
+ await SM_8_11_1.test.step('Upload and deploy Conditional Events BPMN from Web Modeler', async () => {
254
+ await modelerHomePage.clickCrossComponentProjectFolder();
255
+ await modelerHomePage.clickDiagramTypeDropdown();
256
+ await modelerHomePage.clickUploadFilesButton();
257
+ const { uploadFile } = await Promise.resolve().then(() => __importStar(require('../../utils/fileUpload')));
258
+ await uploadFile(page, bpmnFileName);
259
+ await (0, sleep_1.sleep)(5000);
260
+ await modelerHomePage.clickProcessDiagram(bpmnFileName.replace('.bpmn', ''));
261
+ });
262
+ await SM_8_11_1.test.step('Start process instance with variable {"myVar": 8}', async () => {
263
+ const variables = '{"myVar": 8}';
264
+ await modelerCreatePage.runProcessInstance(variables);
265
+ });
266
+ await SM_8_11_1.test.step('Verify process instance is completed in Operate', async () => {
267
+ await navigationPage.goToOperate();
268
+ await operateHomePage.clickProcessesTab();
269
+ await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
270
+ await operateProcessInstancePage.assertProcessCompleteStatusWithRetry(60000, 15);
271
+ });
272
+ await SM_8_11_1.test.step('Navigate to Optimize and create a User Task Table report for Conditional Events process (CE-OPT-03)', async () => {
273
+ await navigationPage.goToOptimize();
274
+ await (0, sleep_1.sleep)(10000);
275
+ await page.reload();
276
+ await optimizeHomePage.clickCollectionsLink();
277
+ await optimizeCollectionsPage.clickCreateNewButton();
278
+ await optimizeCollectionsPage.clickReportOption();
279
+ await optimizeReportPage.clickProcessSelectionButton();
280
+ await optimizeReportPage.clickUserTaskProcess(processName);
281
+ await (0, test_1.expect)(optimizeReportPage.versionSelection).toBeVisible({
282
+ timeout: 30000,
283
+ });
284
+ await optimizeReportPage.clickVersionSelection();
285
+ await optimizeReportPage.clickAlwaysDisplayLatestSelection();
286
+ await optimizeReportPage.clickBlankReportButton();
287
+ await optimizeReportPage.clickCreateReportLink();
288
+ await optimizeReportPage.clickSelectDropdown();
289
+ await optimizeReportPage.clickUserTaskOption();
290
+ await optimizeReportPage.clickHeatMapButton();
291
+ await (0, test_1.expect)(optimizeReportPage.tableOption).toBeVisible({
292
+ timeout: 30000,
293
+ });
294
+ await optimizeReportPage.clickTableOption();
295
+ await optimizeReportPage.clickReportName();
296
+ await optimizeReportPage.clearReportName();
297
+ await optimizeReportPage.fillReportName(reportName);
298
+ await optimizeReportPage.clickSaveButton();
299
+ });
300
+ await SM_8_11_1.test.step('Verify the report is listed in Collections (CE-OPT-03)', async () => {
301
+ await optimizeHomePage.clickCollectionsLink();
302
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, reportName, false, 30000);
303
+ });
304
+ await SM_8_11_1.test.step('Verify the report shows exactly 1 completed instance for Conditional Events (CE-OPT-04)', async () => {
305
+ await optimizeCollectionsPage.clickMostRecentProcessReport(reportName);
306
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, optimizeReportPage.oneUserTaskInstance, 'One user task instance count', 90000);
307
+ await (0, test_1.expect)(optimizeReportPage.twoUserTaskInstance).not.toBeVisible();
308
+ });
309
+ });
310
+ (0, SM_8_11_1.test)('Conditional Events - Report Updates After Second Process Run @tasklistV2', async ({ page, modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, }) => {
311
+ SM_8_11_1.test.slow();
312
+ const bpmnFileName = 'Conditional_Events_All.bpmn';
313
+ const processName = 'Conditional Events Auto-Run';
314
+ const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
315
+ await SM_8_11_1.test.step('Upload and deploy Conditional Events BPMN from Web Modeler', async () => {
316
+ await modelerHomePage.clickCrossComponentProjectFolder();
317
+ await modelerHomePage.clickDiagramTypeDropdown();
318
+ await modelerHomePage.clickUploadFilesButton();
319
+ const { uploadFile } = await Promise.resolve().then(() => __importStar(require('../../utils/fileUpload')));
320
+ await uploadFile(page, bpmnFileName);
321
+ await (0, sleep_1.sleep)(5000);
322
+ await modelerHomePage.clickProcessDiagram(bpmnFileName.replace('.bpmn', ''));
323
+ });
324
+ await SM_8_11_1.test.step('Start first process instance with variable {"myVar": 8}', async () => {
325
+ const variables = '{"myVar": 8}';
326
+ await modelerCreatePage.runProcessInstance(variables);
327
+ });
328
+ await SM_8_11_1.test.step('Verify first process instance is completed in Operate', async () => {
329
+ await navigationPage.goToOperate();
330
+ await operateHomePage.clickProcessesTab();
331
+ await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
332
+ await operateProcessInstancePage.assertProcessCompleteStatusWithRetry(60000, 15);
333
+ });
334
+ await SM_8_11_1.test.step('Create a User Task Table report in Optimize and verify it shows count of 1', async () => {
335
+ await navigationPage.goToOptimize();
336
+ await (0, sleep_1.sleep)(10000);
337
+ await page.reload();
338
+ await optimizeHomePage.clickCollectionsLink();
339
+ await optimizeCollectionsPage.clickCreateNewButton();
340
+ await optimizeCollectionsPage.clickReportOption();
341
+ await optimizeReportPage.clickProcessSelectionButton();
342
+ await optimizeReportPage.clickUserTaskProcess(processName);
343
+ await (0, test_1.expect)(optimizeReportPage.versionSelection).toBeVisible({
344
+ timeout: 30000,
345
+ });
346
+ await optimizeReportPage.clickVersionSelection();
347
+ await optimizeReportPage.clickAlwaysDisplayLatestSelection();
348
+ await optimizeReportPage.clickBlankReportButton();
349
+ await optimizeReportPage.clickCreateReportLink();
350
+ await optimizeReportPage.clickSelectDropdown();
351
+ await optimizeReportPage.clickUserTaskOption();
352
+ await optimizeReportPage.clickHeatMapButton();
353
+ await (0, test_1.expect)(optimizeReportPage.tableOption).toBeVisible({
354
+ timeout: 30000,
355
+ });
356
+ await optimizeReportPage.clickTableOption();
357
+ await optimizeReportPage.clickReportName();
358
+ await optimizeReportPage.clearReportName();
359
+ await optimizeReportPage.fillReportName(reportName);
360
+ await optimizeReportPage.clickSaveButton();
361
+ await optimizeHomePage.clickCollectionsLink();
362
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, reportName, false, 30000);
363
+ await optimizeCollectionsPage.clickMostRecentProcessReport(reportName);
364
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, optimizeReportPage.oneUserTaskInstance, 'One user task instance count', 90000);
365
+ });
366
+ await SM_8_11_1.test.step('Start a second process instance with variable {"myVar": 8} in Modeler', async () => {
367
+ await navigationPage.goToModeler();
368
+ await modelerHomePage.clickCrossComponentProjectFolder();
369
+ await modelerHomePage.clickProcessDiagram(bpmnFileName.replace('.bpmn', ''));
370
+ const variables = '{"myVar": 8}';
371
+ await modelerCreatePage.runProcessInstance(variables);
372
+ await (0, sleep_1.sleep)(10000);
373
+ });
374
+ await SM_8_11_1.test.step('Verify second process instance is completed in Operate', async () => {
375
+ await navigationPage.goToOperate();
376
+ await (0, sleep_1.sleep)(10000);
377
+ await page.reload();
378
+ await operateHomePage.clickProcessesTab();
379
+ await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
380
+ await operateProcessInstancePage.assertProcessCompleteStatusWithRetry(60000, 15);
381
+ });
382
+ await SM_8_11_1.test.step('Verify the Optimize report now shows 2 instances and the single instance count is gone (CE-OPT-05)', async () => {
383
+ await navigationPage.goToOptimize();
384
+ await (0, sleep_1.sleep)(10000);
385
+ await optimizeHomePage.clickCollectionsLink();
386
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, reportName, false, 30000);
387
+ await optimizeCollectionsPage.clickMostRecentProcessReport(reportName);
388
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, optimizeReportPage.twoUserTaskInstance, 'Two user task instance count', 90000);
389
+ await (0, test_1.expect)(optimizeReportPage.oneUserTaskInstance).not.toBeVisible();
390
+ });
391
+ });
392
+ (0, SM_8_11_1.test)('Conditional Events - Report Starts at Zero and Updates After First Run @tasklistV2', async ({ page, modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, }) => {
393
+ SM_8_11_1.test.slow();
394
+ const bpmnFileName = 'Conditional_Events_All.bpmn';
395
+ const processName = 'Conditional Events Auto-Run';
396
+ const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
397
+ await SM_8_11_1.test.step('Upload and deploy Conditional Events BPMN from Web Modeler', async () => {
398
+ await modelerHomePage.clickCrossComponentProjectFolder();
399
+ await modelerHomePage.clickDiagramTypeDropdown();
400
+ await modelerHomePage.clickUploadFilesButton();
401
+ const { uploadFile } = await Promise.resolve().then(() => __importStar(require('../../utils/fileUpload')));
402
+ await uploadFile(page, bpmnFileName);
403
+ await (0, sleep_1.sleep)(5000);
404
+ await modelerHomePage.clickProcessDiagram(bpmnFileName.replace('.bpmn', ''));
405
+ });
406
+ await SM_8_11_1.test.step('Deploy the process without starting any instance', async () => {
407
+ await modelerCreatePage.deployProcessInstance();
408
+ await (0, sleep_1.sleep)(10000);
409
+ });
410
+ await SM_8_11_1.test.step('Create a User Task Table report in Optimize and verify it shows 0 instances (CE-OPT-08)', async () => {
411
+ await navigationPage.goToOptimize();
412
+ await (0, sleep_1.sleep)(40000);
413
+ await page.reload();
414
+ await optimizeHomePage.clickCollectionsLink();
415
+ await optimizeCollectionsPage.clickCreateNewButton();
416
+ await optimizeCollectionsPage.clickReportOption();
417
+ await optimizeReportPage.clickProcessSelectionButton();
418
+ await optimizeReportPage.clickUserTaskProcess(processName);
419
+ await (0, test_1.expect)(optimizeReportPage.versionSelection).toBeVisible({
420
+ timeout: 30000,
421
+ });
422
+ await optimizeReportPage.clickVersionSelection();
423
+ await optimizeReportPage.clickAlwaysDisplayLatestSelection();
424
+ await optimizeReportPage.clickBlankReportButton();
425
+ await optimizeReportPage.clickCreateReportLink();
426
+ await optimizeReportPage.clickSelectDropdown();
427
+ await optimizeReportPage.clickUserTaskOption();
428
+ await optimizeReportPage.clickHeatMapButton();
429
+ await (0, test_1.expect)(optimizeReportPage.tableOption).toBeVisible({
430
+ timeout: 30000,
431
+ });
432
+ await optimizeReportPage.clickTableOption();
433
+ await optimizeReportPage.clickReportName();
434
+ await optimizeReportPage.clearReportName();
435
+ await optimizeReportPage.fillReportName(reportName);
436
+ await optimizeReportPage.clickSaveButton();
437
+ await optimizeHomePage.clickCollectionsLink();
438
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, reportName, false, 30000);
439
+ await optimizeCollectionsPage.clickMostRecentProcessReport(reportName);
440
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, 'Displaying data from 0 instances.', false, 30000);
441
+ });
442
+ await SM_8_11_1.test.step('Start a process instance with variable {"myVar": 8} and verify completion in Operate', async () => {
443
+ await navigationPage.goToModeler();
444
+ await modelerHomePage.clickCrossComponentProjectFolder();
445
+ await modelerHomePage.clickProcessDiagram(bpmnFileName.replace('.bpmn', ''));
446
+ const variables = '{"myVar": 8}';
447
+ await modelerCreatePage.runProcessInstance(variables);
448
+ await (0, sleep_1.sleep)(10000);
449
+ await navigationPage.goToOperate();
450
+ await operateHomePage.clickProcessesTab();
451
+ await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
452
+ await operateProcessInstancePage.assertProcessCompleteStatusWithRetry(60000, 15);
453
+ });
454
+ await SM_8_11_1.test.step('Verify the Optimize report now shows data from 1 instance (CE-OPT-07 & CE-OPT-08)', async () => {
455
+ await navigationPage.goToOptimize();
456
+ await (0, sleep_1.sleep)(15000);
457
+ await page.reload();
458
+ await optimizeHomePage.clickCollectionsLink();
459
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, reportName, false, 30000);
460
+ await optimizeCollectionsPage.clickMostRecentProcessReport(reportName);
461
+ await (0, UtilitiesPage_2.assertPageTextWithRetry)(page, 'Displaying data from 1 instance.', false, 30000);
462
+ });
463
+ });
464
+ (0, SM_8_11_1.test)('Conditional Events - Instance Gated By Unmet Condition (CE-OPT-06) @tasklistV2', async ({ page, modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeDashboardPage, }) => {
465
+ SM_8_11_1.test.slow();
466
+ const bpmnFileName = 'Conditional_Events_All.bpmn';
467
+ const processName = 'Conditional Events Auto-Run';
468
+ // myVar = 3 does NOT satisfy the intermediate conditional catch event
469
+ // (condition: myVar > 5), so the token is gated at the catch event and no
470
+ // user task is ever activated. The instance stays active/running and
471
+ // Optimize should still import the running process. This exercises the
472
+ // conditional-gating path, which the other CE-OPT tests (all myVar = 8) do
473
+ // not cover.
474
+ await SM_8_11_1.test.step('Upload and deploy Conditional Events BPMN from Web Modeler', async () => {
475
+ await modelerHomePage.clickCrossComponentProjectFolder();
476
+ await modelerHomePage.clickDiagramTypeDropdown();
477
+ await modelerHomePage.clickUploadFilesButton();
478
+ const { uploadFile } = await Promise.resolve().then(() => __importStar(require('../../utils/fileUpload')));
479
+ await uploadFile(page, bpmnFileName);
480
+ await (0, sleep_1.sleep)(5000);
481
+ await modelerHomePage.clickProcessDiagram(bpmnFileName.replace('.bpmn', ''));
482
+ });
483
+ await SM_8_11_1.test.step('Start process instance with variable {"myVar": 3}', async () => {
484
+ const variables = '{"myVar": 3}';
485
+ await modelerCreatePage.runProcessInstance(variables);
486
+ });
487
+ await SM_8_11_1.test.step('Verify the instance is gated (active, not completed) in Operate', async () => {
488
+ await navigationPage.goToOperate();
489
+ await operateHomePage.clickProcessesTab();
490
+ await operateProcessesPage.clickProcessInstanceLink(processName, 'active');
491
+ await operateProcessInstancePage.activeIconAssertion();
492
+ await operateProcessInstancePage.assertProcessVariableContainsText('myVar', '3');
493
+ });
494
+ await SM_8_11_1.test.step('Verify the gated Conditional Events process is imported and visible in the Optimize dashboard (CE-OPT-06)', async () => {
495
+ await navigationPage.goToOptimize();
496
+ await optimizeHomePage.clickDashboardLink();
497
+ await (0, sleep_1.sleep)(10000);
498
+ await page.reload();
499
+ await optimizeDashboardPage.clickFilterTable();
500
+ await optimizeDashboardPage.fillFilterTable(processName);
501
+ await optimizeDashboardPage.processAssertion(processName);
502
+ });
503
+ });
504
+ });
505
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_1 = require("@playwright/test");
4
+ const SM_8_11_1 = require("../../fixtures/SM-8.11");
5
+ const _setup_1 = require("../../test-setup.js");
6
+ const sleep_1 = require("../../utils/sleep");
7
+ const UtilitiesPage_1 = require("../../pages/SM-8.11/UtilitiesPage");
8
+ SM_8_11_1.test.describe.configure({ mode: 'parallel' });
9
+ SM_8_11_1.test.describe('Deploy and run a process in Play', () => {
10
+ SM_8_11_1.test.beforeEach(async ({ navigationPage }, testInfo) => {
11
+ await navigationPage.goToModeler((testInfo.workerIndex + 1) * 1000);
12
+ });
13
+ SM_8_11_1.test.afterEach(async ({ page }, testInfo) => {
14
+ await (0, _setup_1.captureScreenshot)(page, testInfo);
15
+ await (0, _setup_1.captureFailureVideo)(page, testInfo);
16
+ });
17
+ (0, SM_8_11_1.test)('User Tasks and Service Task', async ({ page, modelerHomePage, modelerCreatePage, playPage, }) => {
18
+ SM_8_11_1.test.slow();
19
+ const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
20
+ const processName = 'Play_Test_Process' + randomString;
21
+ await SM_8_11_1.test.step('Open Cross Component Test Project', async () => {
22
+ await modelerHomePage.clickCrossComponentProjectFolder();
23
+ });
24
+ await SM_8_11_1.test.step('Create a BPMN Diagram with user tasks and service task', async () => {
25
+ await (0, UtilitiesPage_1.modelDiagramFromFile)(page, modelerHomePage, modelerCreatePage, processName, 'Play_Test_User_Service_Task');
26
+ });
27
+ await SM_8_11_1.test.step('Open Play', async () => {
28
+ await modelerCreatePage.switchToPlay();
29
+ await modelerCreatePage.completePlayConfiguration();
30
+ });
31
+ await SM_8_11_1.test.step('Start and complete the process instance in Play', async () => {
32
+ await playPage.dismissStartModal();
33
+ await playPage.clickStartInstanceButton();
34
+ await playPage.waitForInstanceDetailsToBeLoaded();
35
+ await playPage.waitForNextElementToBeActive('play-user-task');
36
+ await playPage.waitForCompleteJobButtonToBeAvailable();
37
+ await playPage.clickCompleteJobButton();
38
+ await playPage.waitForNextElementToBeActive('play-service-task');
39
+ await playPage.waitForCompleteJobButtonToBeAvailable();
40
+ await playPage.clickCompleteJobButton();
41
+ await playPage.waitForProcessToBeCompleted();
42
+ });
43
+ });
44
+ (0, SM_8_11_1.test)('Create,update and delete test scenarios in play', async ({ modelerHomePage, modelerCreatePage, playPage, }) => {
45
+ SM_8_11_1.test.slow();
46
+ const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
47
+ const processName = 'Play_Test_Process' + randomString;
48
+ const scenarioName = 'My first scenario' + randomString;
49
+ const updatedScenarioName = 'My first scenario-updated' + randomString;
50
+ await SM_8_11_1.test.step('Open Cross Component Test Project', async () => {
51
+ await modelerHomePage.clickCrossComponentProjectFolder();
52
+ });
53
+ await SM_8_11_1.test.step('Add A BPMN Template To The Project', async () => {
54
+ await modelerHomePage.clickDiagramTypeDropdown();
55
+ await modelerHomePage.clickBpmnTemplateOption();
56
+ });
57
+ await SM_8_11_1.test.step('Create a BPMN Diagram with simple start and end event', async () => {
58
+ await (0, test_1.expect)(modelerCreatePage.generalPanel).toBeVisible({
59
+ timeout: 120000,
60
+ });
61
+ await modelerCreatePage.enterDiagramName(processName);
62
+ await modelerCreatePage.addParallelUserTasks(1, 'zeebe-user-task' + randomString);
63
+ await modelerCreatePage.clickSecondPlacedGateway();
64
+ await modelerCreatePage.clickAppendElementButton();
65
+ await modelerCreatePage.clickAppendEndEventButton('parallelGateway');
66
+ await (0, test_1.expect)(modelerCreatePage.generalPanel).toBeVisible({
67
+ timeout: 30000,
68
+ });
69
+ // Wait for modeler background auto-save to complete
70
+ await (0, sleep_1.sleep)(2000);
71
+ });
72
+ await SM_8_11_1.test.step('Open Play', async () => {
73
+ await modelerCreatePage.switchToPlay();
74
+ await modelerCreatePage.completePlayConfiguration();
75
+ });
76
+ await SM_8_11_1.test.step('Start and complete the process instance in Play and save scenario', async () => {
77
+ await playPage.dismissStartModal();
78
+ await playPage.clickStartInstanceButton();
79
+ await playPage.waitForInstanceDetailsToBeLoaded();
80
+ await playPage.waitForNextElementToBeActive('zeebe-user-task' + randomString + '1');
81
+ await playPage.waitForCompleteJobButtonToBeAvailable();
82
+ await playPage.clickCompleteJobButton();
83
+ await playPage.waitForProcessToBeCompleted();
84
+ await playPage.waitForScenarioRecordPanelReady();
85
+ await playPage.enterScenarioName(scenarioName);
86
+ await playPage.confirmSaveScenario();
87
+ });
88
+ await SM_8_11_1.test.step('Update the saved scenario', async () => {
89
+ await modelerCreatePage.switchToImplementTab();
90
+ await (0, test_1.expect)(modelerCreatePage.generalPanel).toBeVisible({
91
+ timeout: 30000,
92
+ });
93
+ await modelerCreatePage.clickFirstPlacedGateway();
94
+ // On slow clusters clickFirstPlacedGateway() may trigger page.reload();
95
+ // the canvas needs settling before the context-pad JavaScript handler
96
+ // attaches. Wait up to 20 s for the context pad, then re-click the
97
+ // gateway directly (canvas is settled by then) if it still isn't open.
98
+ if (!(await modelerCreatePage.appendElementButton
99
+ .isVisible({ timeout: 20000 })
100
+ .catch(() => false))) {
101
+ await modelerCreatePage.firstPlacedGateway.click({ timeout: 10000 });
102
+ }
103
+ await (0, test_1.expect)(modelerCreatePage.appendElementButton).toBeVisible({
104
+ timeout: 15000,
105
+ });
106
+ await modelerCreatePage.clickAppendElementButton();
107
+ await modelerCreatePage.clickAppendTaskButton();
108
+ await modelerCreatePage.clickConnectToOtherElementButton();
109
+ await modelerCreatePage.clickSecondPlacedGateway();
110
+ await (0, test_1.expect)(modelerCreatePage.generalPanel).toBeVisible({
111
+ timeout: 30000,
112
+ });
113
+ // Wait for modeler background auto-save to complete
114
+ await (0, sleep_1.sleep)(2000);
115
+ await modelerCreatePage.switchToPlay();
116
+ // After diagram modification, Play shows the setup panel again (new flow)
117
+ // or a Continue button (legacy flow), or loads directly.
118
+ await modelerCreatePage.completePlayConfiguration();
119
+ await playPage.dismissStartModal();
120
+ await playPage.clickStartInstanceButton();
121
+ await playPage.waitForNextElementToBeActive('zeebe-user-task' + randomString + '1');
122
+ await playPage.waitForCompleteJobButtonToBeAvailable();
123
+ await playPage.clickCompleteJobButton();
124
+ await playPage.waitForProcessToBeCompleted();
125
+ await playPage.waitForScenarioRecordPanelReady();
126
+ await playPage.enterScenarioName(updatedScenarioName);
127
+ await playPage.confirmSaveScenario();
128
+ await playPage.assertSavedScenarioNameInPanel(updatedScenarioName);
129
+ });
130
+ await SM_8_11_1.test.step('Run all scenarios', async () => {
131
+ await playPage.clickViewAllScenariosButton();
132
+ await playPage.clickRunAllScenariosButton();
133
+ await playPage.assertScenarioCompleted(scenarioName);
134
+ await playPage.assertScenarioCompleted(updatedScenarioName);
135
+ });
136
+ await SM_8_11_1.test.step('Delete test scenario', async () => {
137
+ await playPage.deleteScenario(scenarioName);
138
+ await playPage.confirmDeleteScenario();
139
+ await (0, test_1.expect)(playPage.getScenarioRow(scenarioName)).toHaveCount(0, {
140
+ timeout: 10000,
141
+ });
142
+ });
143
+ });
144
+ });