@camunda/e2e-test-suite 0.0.331 → 0.0.333
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.10/IdentityTenantPage.js +2 -1
- package/dist/pages/SM-8.10/ModelerCreatePage.d.ts +1 -1
- package/dist/pages/SM-8.10/ModelerCreatePage.js +5 -1
- package/dist/pages/SM-8.10/OCIdentityClusterVariablesPage.js +7 -3
- package/dist/pages/SM-8.10/OperateProcessesPage.js +1 -1
- package/dist/pages/SM-8.10/PlayPage.js +3 -4
- package/dist/pages/SM-8.10/TaskDetailsPage.js +2 -2
- package/dist/pages/SM-8.10/TaskPanelPage.js +3 -1
- package/dist/pages/SM-8.10/UtilitiesPage.d.ts +4 -4
- package/dist/pages/SM-8.10/UtilitiesPage.js +42 -9
- package/dist/pages/SM-8.6/IdentityTenantPage.js +1 -0
- package/dist/pages/SM-8.7/IdentityTenantPage.js +1 -0
- package/dist/pages/SM-8.8/IdentityTenantPage.js +1 -0
- package/dist/pages/SM-8.9/IdentityTenantPage.js +2 -1
- package/dist/pages/SM-8.9/ModelerCreatePage.d.ts +1 -1
- package/dist/pages/SM-8.9/ModelerCreatePage.js +5 -1
- package/dist/pages/SM-8.9/OCIdentityClusterVariablesPage.js +7 -3
- package/dist/pages/SM-8.9/OperateProcessesPage.js +1 -1
- package/dist/pages/SM-8.9/PlayPage.js +3 -4
- package/dist/pages/SM-8.9/TaskDetailsPage.js +2 -2
- package/dist/pages/SM-8.9/TaskPanelPage.js +3 -1
- package/dist/pages/SM-8.9/UtilitiesPage.d.ts +4 -4
- package/dist/pages/SM-8.9/UtilitiesPage.js +42 -9
- package/dist/tests/SM-8.10/cluster-variables.spec.js +48 -12
- package/dist/tests/SM-8.10/connectors-user-flows.spec.js +7 -6
- package/dist/tests/SM-8.10/hto-user-flows.spec.js +7 -6
- package/dist/tests/SM-8.10/mt-enabled-user-flows.spec.js +8 -6
- package/dist/tests/SM-8.10/play.spec.js +9 -2
- package/dist/tests/SM-8.6/mt-enabled-user-flows.spec.js +8 -6
- package/dist/tests/SM-8.8/mt-enabled-user-flows.spec.js +8 -6
- package/dist/tests/SM-8.9/cluster-variables.spec.js +48 -12
- package/dist/tests/SM-8.9/connectors-user-flows.spec.js +7 -6
- package/dist/tests/SM-8.9/hto-user-flows.spec.js +7 -6
- package/dist/tests/SM-8.9/mt-enabled-user-flows.spec.js +8 -6
- package/dist/tests/SM-8.9/play.spec.js +9 -2
- package/dist/utils/apiHelpers.js +15 -5
- package/package.json +1 -1
|
@@ -11,12 +11,16 @@ const CLUSTER_VAR_NAMES = {
|
|
|
11
11
|
ORIGINAL_STRING: 'ORIGINAL_APP_VERSION',
|
|
12
12
|
UPDATABLE_STRING: 'UPDATABLE_APP_VERSION',
|
|
13
13
|
};
|
|
14
|
+
// Resolve cluster variable values from available env vars with fallbacks
|
|
15
|
+
const clusterVariableJsonValue = process.env.CLUSTER_VARIABLE_JSON_VALUE || process.env.CLUSTER_VARIABLE_JSON;
|
|
16
|
+
const clusterVariableStringValue = process.env.CLUSTER_VARIABLE_STRING_VALUE || 'v1.0.0';
|
|
14
17
|
function getConfigByType(type) {
|
|
15
18
|
const configs = {
|
|
16
19
|
JSON: {
|
|
17
20
|
processName: 'Cluster Variable Original JSON',
|
|
18
21
|
processNameUpdatable: 'Cluster Variable Updatable JSON',
|
|
19
22
|
taskName: 'Preview JSON cluster variables',
|
|
23
|
+
taskElementId: 'Activity_1whhatc',
|
|
20
24
|
originalVariableName: CLUSTER_VAR_NAMES.ORIGINAL_JSON,
|
|
21
25
|
updatableVariableName: CLUSTER_VAR_NAMES.UPDATABLE_JSON,
|
|
22
26
|
originalValue: originalJsonClusterVariableValue,
|
|
@@ -27,6 +31,7 @@ function getConfigByType(type) {
|
|
|
27
31
|
processName: 'Cluster Variable Original String',
|
|
28
32
|
processNameUpdatable: 'Cluster Variable Updatable String',
|
|
29
33
|
taskName: 'Preview String cluster variable',
|
|
34
|
+
taskElementId: 'Activity_1whhatc',
|
|
30
35
|
originalVariableName: CLUSTER_VAR_NAMES.ORIGINAL_STRING,
|
|
31
36
|
updatableVariableName: CLUSTER_VAR_NAMES.UPDATABLE_STRING,
|
|
32
37
|
originalValue: originalStringClusterVariableValue,
|
|
@@ -47,15 +52,17 @@ SM_8_10_1.test.describe.configure({ mode: 'parallel' });
|
|
|
47
52
|
SM_8_10_1.test.describe('Cluster Variables User Flows', () => {
|
|
48
53
|
SM_8_10_1.test.beforeAll(async () => {
|
|
49
54
|
authToken = await (0, apiHelpers_1.authSmAPI)();
|
|
55
|
+
if (!clusterVariableJsonValue) {
|
|
56
|
+
throw new Error('Neither CLUSTER_VARIABLE_JSON_VALUE nor CLUSTER_VARIABLE_JSON env var is set');
|
|
57
|
+
}
|
|
50
58
|
await Promise.all([
|
|
51
|
-
(0, apiHelpers_1.createJsonClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.ORIGINAL_JSON,
|
|
52
|
-
(0, apiHelpers_1.createJsonClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_JSON,
|
|
53
|
-
(0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.ORIGINAL_STRING,
|
|
54
|
-
(0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_STRING,
|
|
59
|
+
(0, apiHelpers_1.createJsonClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.ORIGINAL_JSON, clusterVariableJsonValue),
|
|
60
|
+
(0, apiHelpers_1.createJsonClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_JSON, clusterVariableJsonValue),
|
|
61
|
+
(0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.ORIGINAL_STRING, clusterVariableStringValue),
|
|
62
|
+
(0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_STRING, clusterVariableStringValue),
|
|
55
63
|
]);
|
|
56
|
-
originalJsonClusterVariableValue = JSON.parse(
|
|
57
|
-
originalStringClusterVariableValue =
|
|
58
|
-
process.env.CLUSTER_VARIABLE_STRING_VALUE;
|
|
64
|
+
originalJsonClusterVariableValue = JSON.parse(clusterVariableJsonValue);
|
|
65
|
+
originalStringClusterVariableValue = clusterVariableStringValue;
|
|
59
66
|
const deployments = [
|
|
60
67
|
{
|
|
61
68
|
path: './resources/cluster_variables/cluster_variable_json_readonly.bpmn',
|
|
@@ -109,20 +116,49 @@ SM_8_10_1.test.describe('Cluster Variables User Flows', () => {
|
|
|
109
116
|
},
|
|
110
117
|
];
|
|
111
118
|
for (const config of testConfigs) {
|
|
112
|
-
(0, SM_8_10_1.test)(`User views ${config.type} cluster variable in Tasklist from readonly process and completes task`, async ({ navigationPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, taskPanelPage, taskDetailsPage, }) => {
|
|
119
|
+
(0, SM_8_10_1.test)(`User views ${config.type} cluster variable in Tasklist from readonly process and completes task`, async ({ page, navigationPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, taskPanelPage, taskDetailsPage, }) => {
|
|
113
120
|
SM_8_10_1.test.slow();
|
|
114
121
|
const derived = getConfigByType(config.type);
|
|
115
122
|
const instanceKey = await (0, apiHelpers_1.createProcessInstance)(String(config.processKeyDisplay()), authToken);
|
|
116
123
|
await SM_8_10_1.test.step('User can access the process on operate', async () => {
|
|
117
124
|
await operateHomePage.clickProcessesTab();
|
|
118
125
|
await operateProcessesPage.applyMoreFilters('Process Instance Key(s)', String(instanceKey));
|
|
119
|
-
await operateProcessesPage.clickProcessInstanceLink(
|
|
126
|
+
await operateProcessesPage.clickProcessInstanceLink(String(instanceKey));
|
|
120
127
|
await operateProcessInstancePage.assertActiveTokenIsPresent();
|
|
121
128
|
});
|
|
122
129
|
await SM_8_10_1.test.step(`User can view the process with ${config.type} cluster variable on tasklist`, async () => {
|
|
123
130
|
await navigationPage.goToTasklist();
|
|
124
131
|
await (0, sleep_1.sleep)(5000);
|
|
125
|
-
|
|
132
|
+
// Tasklist may display the BPMN element ID instead of the task name
|
|
133
|
+
// due to inconsistent metadata. Determine which label is visible.
|
|
134
|
+
const taskNameLocator = taskPanelPage.availableTasks.getByText(derived.taskName, { exact: true });
|
|
135
|
+
const taskElementIdLocator = taskPanelPage.availableTasks.getByText(derived.taskElementId, { exact: true });
|
|
136
|
+
let taskLabel = derived.taskName;
|
|
137
|
+
for (let attempt = 1; attempt <= 30; attempt++) {
|
|
138
|
+
const [nameVisible, elementIdVisible] = await Promise.all([
|
|
139
|
+
taskNameLocator
|
|
140
|
+
.first()
|
|
141
|
+
.isVisible()
|
|
142
|
+
.catch(() => false),
|
|
143
|
+
taskElementIdLocator
|
|
144
|
+
.first()
|
|
145
|
+
.isVisible()
|
|
146
|
+
.catch(() => false),
|
|
147
|
+
]);
|
|
148
|
+
if (nameVisible) {
|
|
149
|
+
taskLabel = derived.taskName;
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
if (elementIdVisible) {
|
|
153
|
+
taskLabel = derived.taskElementId;
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
if (attempt < 30) {
|
|
157
|
+
await page.reload();
|
|
158
|
+
await (0, sleep_1.sleep)(2000);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
await taskPanelPage.openTask(taskLabel);
|
|
126
162
|
await taskDetailsPage.clickAssignToMeButton();
|
|
127
163
|
});
|
|
128
164
|
await SM_8_10_1.test.step(`User can view the value of ${config.type} cluster variable and complete the task`, async () => {
|
|
@@ -141,7 +177,7 @@ SM_8_10_1.test.describe('Cluster Variables User Flows', () => {
|
|
|
141
177
|
await operateHomePage.clickProcessesTab();
|
|
142
178
|
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
143
179
|
await operateProcessesPage.applyMoreFilters('Process Instance Key(s)', String(instanceKey));
|
|
144
|
-
await operateProcessesPage.clickProcessInstanceLink(
|
|
180
|
+
await operateProcessesPage.clickProcessInstanceLink(String(instanceKey), 'completed');
|
|
145
181
|
await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
|
|
146
182
|
});
|
|
147
183
|
});
|
|
@@ -177,7 +213,7 @@ SM_8_10_1.test.describe('Cluster Variables User Flows', () => {
|
|
|
177
213
|
await operateHomePage.clickProcessesTab();
|
|
178
214
|
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
179
215
|
await operateProcessesPage.applyMoreFilters('Process Instance Key(s)', String(instanceKey));
|
|
180
|
-
await operateProcessesPage.clickProcessInstanceLink(
|
|
216
|
+
await operateProcessesPage.clickProcessInstanceLink(String(instanceKey), 'completed');
|
|
181
217
|
await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
|
|
182
218
|
});
|
|
183
219
|
await SM_8_10_1.test.step(`User verifies the updated ${config.type} cluster variable value is present in process variables`, async () => {
|
|
@@ -7,6 +7,7 @@ const UtilitiesPage_1 = require("../../pages/SM-8.10/UtilitiesPage");
|
|
|
7
7
|
const sleep_1 = require("../../utils/sleep");
|
|
8
8
|
SM_8_10_1.test.describe.configure({ mode: 'parallel' });
|
|
9
9
|
SM_8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
10
|
+
const mtTenant = process.env.IS_MT === 'true' ? '<default>' : '';
|
|
10
11
|
SM_8_10_1.test.beforeEach(async ({ navigationPage }, testInfo) => {
|
|
11
12
|
await navigationPage.goToModeler((testInfo.workerIndex + 1) * 1000);
|
|
12
13
|
});
|
|
@@ -24,7 +25,7 @@ SM_8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
24
25
|
});
|
|
25
26
|
await SM_8_10_1.test.step('Create BPMN Diagram with REST Connector and Start Process Instance', async () => {
|
|
26
27
|
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/no-auth-test', 'noAuth', 'body');
|
|
27
|
-
await modelerCreatePage.runProcessInstance();
|
|
28
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
28
29
|
await (0, sleep_1.sleep)(20000);
|
|
29
30
|
});
|
|
30
31
|
await SM_8_10_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
@@ -53,7 +54,7 @@ SM_8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
53
54
|
});
|
|
54
55
|
await SM_8_10_1.test.step('Create BPMN Diagram with REST Connector with Basic Auth and Start Process Instance', async () => {
|
|
55
56
|
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/bearer-auth-test', 'bearer', '{message:response.body.status}');
|
|
56
|
-
await modelerCreatePage.runProcessInstance();
|
|
57
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
57
58
|
await (0, _setup_1.performBearerTokenAuthPostRequest)('https://camunda.proxy.beeceptor.com/pre-prod/bearer-auth-test', 'thisisabearertoken');
|
|
58
59
|
await (0, sleep_1.sleep)(20000);
|
|
59
60
|
});
|
|
@@ -116,7 +117,7 @@ SM_8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
116
117
|
await modelerCreatePage.clickAppendElementButton();
|
|
117
118
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
118
119
|
await (0, sleep_1.sleep)(10000);
|
|
119
|
-
await modelerCreatePage.deployProcessInstance();
|
|
120
|
+
await modelerCreatePage.deployProcessInstance(mtTenant);
|
|
120
121
|
await (0, sleep_1.sleep)(20000);
|
|
121
122
|
});
|
|
122
123
|
await SM_8_10_1.test.step('Make Authorization Request', async () => {
|
|
@@ -143,7 +144,7 @@ SM_8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
143
144
|
});
|
|
144
145
|
await SM_8_10_1.test.step('Create BPMN Diagram with REST Connector using secrets and Start Process Instance', async () => {
|
|
145
146
|
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/basic-auth-test', 'basic', '{message:response.body.message}', 'result', { username: '{{secrets.username}}', password: '{{secrets.password}}' });
|
|
146
|
-
await modelerCreatePage.runProcessInstance();
|
|
147
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
147
148
|
await (0, sleep_1.sleep)(20000);
|
|
148
149
|
});
|
|
149
150
|
await SM_8_10_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
@@ -208,7 +209,7 @@ SM_8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
208
209
|
await modelerCreatePage.clickAppendElementButton();
|
|
209
210
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
210
211
|
await (0, sleep_1.sleep)(10000);
|
|
211
|
-
await modelerCreatePage.runProcessInstance();
|
|
212
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
212
213
|
await (0, sleep_1.sleep)(20000);
|
|
213
214
|
});
|
|
214
215
|
await SM_8_10_1.test.step('Make Authorization Request', async () => {
|
|
@@ -238,7 +239,7 @@ SM_8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
238
239
|
SM_8_10_1.test.slow();
|
|
239
240
|
const processName = 'Connectors_Timer_Event_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
240
241
|
await SM_8_10_1.test.step('Open Cross Component Test Project and Create a REST Connector Document Handling Flow', async () => {
|
|
241
|
-
await (0, UtilitiesPage_1.modelAndRunConnectorsTimerEventDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage, connectorTemplatePage);
|
|
242
|
+
await (0, UtilitiesPage_1.modelAndRunConnectorsTimerEventDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage, connectorTemplatePage, mtTenant);
|
|
242
243
|
});
|
|
243
244
|
await SM_8_10_1.test.step('View Process Instance in Operate, assert it completes and assert variable values are correct', async () => {
|
|
244
245
|
await navigationPage.goToOperate();
|
|
@@ -8,6 +8,7 @@ const UtilitiesPage_1 = require("../../pages/SM-8.10/UtilitiesPage");
|
|
|
8
8
|
const resetSession_1 = require("../../utils/resetSession");
|
|
9
9
|
SM_8_10_1.test.describe.configure({ mode: 'parallel' });
|
|
10
10
|
SM_8_10_1.test.describe('HTO User Flow Tests', () => {
|
|
11
|
+
const mtTenant = process.env.IS_MT === 'true' ? '<default>' : '';
|
|
11
12
|
SM_8_10_1.test.beforeEach(async ({ navigationPage }, testInfo) => {
|
|
12
13
|
await navigationPage.goToModeler((testInfo.workerIndex + 1) * 1000);
|
|
13
14
|
});
|
|
@@ -26,7 +27,7 @@ SM_8_10_1.test.describe('HTO User Flow Tests', () => {
|
|
|
26
27
|
});
|
|
27
28
|
await SM_8_10_1.test.step('Create BPMN Diagram with User Task and Start Process Instance', async () => {
|
|
28
29
|
await modelerCreatePage.modelJobWorkerDiagram(processName);
|
|
29
|
-
await modelerCreatePage.runProcessInstance();
|
|
30
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
30
31
|
});
|
|
31
32
|
await SM_8_10_1.test.step('View Process Instance in Operate, complete User Task in Tasklist & assert process complete in Operate', async () => {
|
|
32
33
|
await navigationPage.goToOperate();
|
|
@@ -74,7 +75,7 @@ SM_8_10_1.test.describe('HTO User Flow Tests', () => {
|
|
|
74
75
|
await modelerCreatePage.clickAppendElementButton();
|
|
75
76
|
await modelerCreatePage.clickAppendEndEventButton('parallelGateway');
|
|
76
77
|
await modelerCreatePage.setPriority(taskName, 1, 4);
|
|
77
|
-
await modelerCreatePage.runProcessInstance();
|
|
78
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
78
79
|
});
|
|
79
80
|
await SM_8_10_1.test.step('Complete User Task in Tasklist & assert process complete in Operate', async () => {
|
|
80
81
|
await navigationPage.goToTasklist();
|
|
@@ -113,7 +114,7 @@ SM_8_10_1.test.describe('HTO User Flow Tests', () => {
|
|
|
113
114
|
});
|
|
114
115
|
await SM_8_10_1.test.step('Create BPMN Diagram with User Task and Start Process Instance', async () => {
|
|
115
116
|
await modelerCreatePage.modelCamundaUserTaskDiagram(processName);
|
|
116
|
-
await modelerCreatePage.runProcessInstance('{"testVariable":"testValue"}');
|
|
117
|
+
await modelerCreatePage.runProcessInstance('{"testVariable":"testValue"}', mtTenant);
|
|
117
118
|
await (0, sleep_1.sleep)(60000);
|
|
118
119
|
});
|
|
119
120
|
await SM_8_10_1.test.step('View Process Instance in Operate, Edit the Variable & Assert the Variable is Updated in Tasklist', async () => {
|
|
@@ -213,7 +214,7 @@ SM_8_10_1.test.describe('HTO User Flow Tests', () => {
|
|
|
213
214
|
await modelerCreatePage.clickCandidateGroupsInput();
|
|
214
215
|
await modelerCreatePage.fillCandidateGroupsInput(groupNameMultiple);
|
|
215
216
|
await (0, sleep_1.sleep)(1000);
|
|
216
|
-
await modelerCreatePage.runProcessInstance();
|
|
217
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
217
218
|
});
|
|
218
219
|
await SM_8_10_1.test.step('View User Tasks in Tasklist', async () => {
|
|
219
220
|
await navigationPage.goToTasklist();
|
|
@@ -318,7 +319,7 @@ SM_8_10_1.test.describe('HTO User Flow Tests', () => {
|
|
|
318
319
|
await modelerCreatePage.clickCandidateUsersInput();
|
|
319
320
|
await modelerCreatePage.fillCandidateUsersInput(testUser);
|
|
320
321
|
await (0, sleep_1.sleep)(1000);
|
|
321
|
-
await modelerCreatePage.runProcessInstance();
|
|
322
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
322
323
|
});
|
|
323
324
|
await SM_8_10_1.test.step('View User Tasks in Tasklist', async () => {
|
|
324
325
|
await navigationPage.goToTasklist();
|
|
@@ -383,7 +384,7 @@ SM_8_10_1.test.describe('HTO User Flow Tests', () => {
|
|
|
383
384
|
await modelerHomePage.clickCrossComponentProjectFolder();
|
|
384
385
|
});
|
|
385
386
|
await SM_8_10_1.test.step('Create Two BPMN Diagrams with User Task and Start Process Instance', async () => {
|
|
386
|
-
await (0, UtilitiesPage_1.runMultipleProcesses)(page, modelerHomePage, modelerCreatePage, 2, processName, processName);
|
|
387
|
+
await (0, UtilitiesPage_1.runMultipleProcesses)(page, modelerHomePage, modelerCreatePage, 2, processName, processName, mtTenant);
|
|
387
388
|
});
|
|
388
389
|
await SM_8_10_1.test.step('Navigate to Tasklist and Make Sure that the Two Deployed Processes Are Accessible', async () => {
|
|
389
390
|
await navigationPage.goToTasklist();
|
|
@@ -8,6 +8,8 @@ const UtilitiesPage_1 = require("../../pages/SM-8.10/UtilitiesPage");
|
|
|
8
8
|
const resetSession_1 = require("../../utils/resetSession");
|
|
9
9
|
const expectTextWithRetry_1 = require("../../utils/assertionHelpers/expectTextWithRetry");
|
|
10
10
|
const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
|
|
11
|
+
const demoUserEmail = process.env.DEMO_USER_EMAIL || 'demo@example.org';
|
|
12
|
+
const demoUserDisplayText = `Demo User${demoUserEmail}`;
|
|
11
13
|
if (process.env.IS_MT === 'true') {
|
|
12
14
|
SM_8_10_1.test.describe.configure({ mode: 'parallel' });
|
|
13
15
|
SM_8_10_1.test.describe('MT Enabled User Flows Test', () => {
|
|
@@ -42,7 +44,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
42
44
|
await SM_8_10_1.test.step('Create Tenant And Assign User in Management Identity', async () => {
|
|
43
45
|
await navigationPage.goToManagementIdentity();
|
|
44
46
|
await managementIdentityTenantPage.createTenant(tenantName);
|
|
45
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
47
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
46
48
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
47
49
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
48
50
|
}
|
|
@@ -141,7 +143,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
141
143
|
await SM_8_10_1.test.step('Create Tenant And Assign User in Management Identity', async () => {
|
|
142
144
|
await navigationPage.goToManagementIdentity();
|
|
143
145
|
await managementIdentityTenantPage.createTenant(tenantName);
|
|
144
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
146
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
145
147
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
146
148
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
147
149
|
}
|
|
@@ -337,7 +339,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
337
339
|
});
|
|
338
340
|
await SM_8_10_1.test.step('Assign User To Default Tenant in Management Identity', async () => {
|
|
339
341
|
await navigationPage.goToManagementIdentity();
|
|
340
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
342
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
341
343
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
342
344
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
343
345
|
}
|
|
@@ -410,13 +412,13 @@ if (process.env.IS_MT === 'true') {
|
|
|
410
412
|
await SM_8_10_1.test.step('Create Two Tenants And Assign to Demo User in Management Identity', async () => {
|
|
411
413
|
await navigationPage.goToManagementIdentity();
|
|
412
414
|
await managementIdentityTenantPage.createTenant(tenantName1);
|
|
413
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName1, 'demo',
|
|
415
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName1, 'demo', demoUserDisplayText);
|
|
414
416
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
415
417
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
416
418
|
}
|
|
417
419
|
await managementIdentityPage.clickTenantTab();
|
|
418
420
|
await managementIdentityTenantPage.createTenant(tenantName2);
|
|
419
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName2, 'demo',
|
|
421
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName2, 'demo', demoUserDisplayText);
|
|
420
422
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
421
423
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
422
424
|
}
|
|
@@ -476,7 +478,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
476
478
|
await SM_8_10_1.test.step('Create Tenant And Assign User in Management Identity', async () => {
|
|
477
479
|
await navigationPage.goToManagementIdentity();
|
|
478
480
|
await managementIdentityTenantPage.createTenant(tenantName);
|
|
479
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
481
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
480
482
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
481
483
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
482
484
|
}
|
|
@@ -125,8 +125,15 @@ SM_8_10_1.test.describe('Deploy and run a process in Play', () => {
|
|
|
125
125
|
await modelerCreatePage.clickSecondPlacedGateway();
|
|
126
126
|
await (0, sleep_1.sleep)(5000);
|
|
127
127
|
await modelerCreatePage.switchToPlay();
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
// After diagram modification, Play may show a "Continue" button
|
|
129
|
+
// to redeploy, or it may show the diagram directly. Try clicking
|
|
130
|
+
// Continue if present, then wait for the diagram to be ready.
|
|
131
|
+
try {
|
|
132
|
+
await modelerCreatePage.clickContinueToPlay();
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
// Continue button not present; Play loaded directly
|
|
136
|
+
}
|
|
130
137
|
await playPage.clickStartInstanceButton();
|
|
131
138
|
await playPage.waitForNextElementToBeActive('zeebe-user-task' + randomString + '1');
|
|
132
139
|
await playPage.waitForCompleteJobButtonToBeAvailable();
|
|
@@ -7,6 +7,8 @@ const sleep_1 = require("../../utils/sleep");
|
|
|
7
7
|
const UtlitiesPage_1 = require("../../pages/SM-8.6/UtlitiesPage");
|
|
8
8
|
const resetSession_1 = require("../../utils/resetSession");
|
|
9
9
|
const expectTextWithRetry_1 = require("../../utils/assertionHelpers/expectTextWithRetry");
|
|
10
|
+
const demoUserEmail = process.env.DEMO_USER_EMAIL || 'demo@example.org';
|
|
11
|
+
const demoUserDisplayText = `Demo User${demoUserEmail}`;
|
|
10
12
|
if (process.env.IS_MT === 'true') {
|
|
11
13
|
SM_8_6_1.test.describe.configure({ mode: 'parallel' });
|
|
12
14
|
SM_8_6_1.test.describe('MT Enabled User Flows Test', () => {
|
|
@@ -24,7 +26,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
24
26
|
const tenantName = 'Tenant_Main_' + randomString;
|
|
25
27
|
await SM_8_6_1.test.step('Create Tenant And Assign User', async () => {
|
|
26
28
|
await identityTenantPage.createTenant(tenantName);
|
|
27
|
-
await identityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
29
|
+
await identityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
28
30
|
await identityTenantPage.assignClientToTenant('Zeebe');
|
|
29
31
|
await identityTenantPage.assignClientToTenant('Test');
|
|
30
32
|
});
|
|
@@ -115,7 +117,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
115
117
|
const tenantName = 'Tenant_Main_Connectors';
|
|
116
118
|
await SM_8_6_1.test.step('Create Tenant And Assign User', async () => {
|
|
117
119
|
await identityTenantPage.createTenant(tenantName);
|
|
118
|
-
await identityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
120
|
+
await identityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
119
121
|
await identityTenantPage.assignClientToTenant('Zeebe');
|
|
120
122
|
await identityTenantPage.assignClientToTenant('Test');
|
|
121
123
|
});
|
|
@@ -278,7 +280,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
278
280
|
const processName = 'Default_Tenant_Flow_' + randomString;
|
|
279
281
|
const tenantName = 'Default';
|
|
280
282
|
await SM_8_6_1.test.step('Assign User To Default Tenant', async () => {
|
|
281
|
-
await identityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
283
|
+
await identityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
282
284
|
await identityTenantPage.assignClientToTenant('Zeebe');
|
|
283
285
|
await identityTenantPage.assignClientToTenant('Test');
|
|
284
286
|
});
|
|
@@ -333,12 +335,12 @@ if (process.env.IS_MT === 'true') {
|
|
|
333
335
|
const tenantName2 = 'Tenant_2_Connectors';
|
|
334
336
|
await SM_8_6_1.test.step('Create Two Tenants And Assign to Demo User', async () => {
|
|
335
337
|
await identityTenantPage.createTenant(tenantName1);
|
|
336
|
-
await identityTenantPage.assignUserToTenant(tenantName1, 'demo',
|
|
338
|
+
await identityTenantPage.assignUserToTenant(tenantName1, 'demo', demoUserDisplayText);
|
|
337
339
|
await identityTenantPage.assignClientToTenant('Zeebe');
|
|
338
340
|
await identityTenantPage.assignClientToTenant('Test');
|
|
339
341
|
await identityPage.clickTenantTab();
|
|
340
342
|
await identityTenantPage.createTenant(tenantName2);
|
|
341
|
-
await identityTenantPage.assignUserToTenant(tenantName2, 'demo',
|
|
343
|
+
await identityTenantPage.assignUserToTenant(tenantName2, 'demo', demoUserDisplayText);
|
|
342
344
|
await identityTenantPage.assignClientToTenant('Zeebe');
|
|
343
345
|
await identityTenantPage.assignClientToTenant('Test');
|
|
344
346
|
});
|
|
@@ -399,7 +401,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
399
401
|
const tenantName = 'Revoke_' + randomString;
|
|
400
402
|
await SM_8_6_1.test.step('Create Tenant And Assign User', async () => {
|
|
401
403
|
await identityTenantPage.createTenant(tenantName);
|
|
402
|
-
await identityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
404
|
+
await identityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
403
405
|
await identityTenantPage.assignClientToTenant('Zeebe');
|
|
404
406
|
await identityTenantPage.assignClientToTenant('Test');
|
|
405
407
|
});
|
|
@@ -7,6 +7,8 @@ const sleep_1 = require("../../utils/sleep");
|
|
|
7
7
|
const UtilitiesPage_1 = require("../../pages/SM-8.8/UtilitiesPage");
|
|
8
8
|
const resetSession_1 = require("../../utils/resetSession");
|
|
9
9
|
const expectTextWithRetry_1 = require("../../utils/assertionHelpers/expectTextWithRetry");
|
|
10
|
+
const demoUserEmail = process.env.DEMO_USER_EMAIL || 'demo@example.org';
|
|
11
|
+
const demoUserDisplayText = `Demo User${demoUserEmail}`;
|
|
10
12
|
if (process.env.IS_MT === 'true') {
|
|
11
13
|
SM_8_8_1.test.describe.configure({ mode: 'parallel' });
|
|
12
14
|
SM_8_8_1.test.describe('MT Enabled User Flows Test', () => {
|
|
@@ -41,7 +43,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
41
43
|
await SM_8_8_1.test.step('Create Tenant And Assign User in Management Identity', async () => {
|
|
42
44
|
await navigationPage.goToManagementIdentity();
|
|
43
45
|
await managementIdentityTenantPage.createTenant(tenantName);
|
|
44
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
46
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
45
47
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
46
48
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
47
49
|
}
|
|
@@ -142,7 +144,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
142
144
|
await SM_8_8_1.test.step('Create Tenant And Assign User in Management Identity', async () => {
|
|
143
145
|
await navigationPage.goToManagementIdentity();
|
|
144
146
|
await managementIdentityTenantPage.createTenant(tenantName);
|
|
145
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
147
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
146
148
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
147
149
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
148
150
|
}
|
|
@@ -338,7 +340,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
338
340
|
});
|
|
339
341
|
await SM_8_8_1.test.step('Assign User To Default Tenant in Management Identity', async () => {
|
|
340
342
|
await navigationPage.goToManagementIdentity();
|
|
341
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
343
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
342
344
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
343
345
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
344
346
|
}
|
|
@@ -411,13 +413,13 @@ if (process.env.IS_MT === 'true') {
|
|
|
411
413
|
await SM_8_8_1.test.step('Create Two Tenants And Assign to Demo User in Management Identity', async () => {
|
|
412
414
|
await navigationPage.goToManagementIdentity();
|
|
413
415
|
await managementIdentityTenantPage.createTenant(tenantName1);
|
|
414
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName1, 'demo',
|
|
416
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName1, 'demo', demoUserDisplayText);
|
|
415
417
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
416
418
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
417
419
|
}
|
|
418
420
|
await managementIdentityPage.clickTenantTab();
|
|
419
421
|
await managementIdentityTenantPage.createTenant(tenantName2);
|
|
420
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName2, 'demo',
|
|
422
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName2, 'demo', demoUserDisplayText);
|
|
421
423
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
422
424
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
423
425
|
}
|
|
@@ -477,7 +479,7 @@ if (process.env.IS_MT === 'true') {
|
|
|
477
479
|
await SM_8_8_1.test.step('Create Tenant And Assign User in Management Identity', async () => {
|
|
478
480
|
await navigationPage.goToManagementIdentity();
|
|
479
481
|
await managementIdentityTenantPage.createTenant(tenantName);
|
|
480
|
-
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo',
|
|
482
|
+
await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
|
|
481
483
|
if (process.env.IS_OPTIMIZE !== 'false') {
|
|
482
484
|
await managementIdentityTenantPage.assignClientToTenant('Optimize');
|
|
483
485
|
}
|
|
@@ -11,12 +11,16 @@ const CLUSTER_VAR_NAMES = {
|
|
|
11
11
|
ORIGINAL_STRING: 'ORIGINAL_APP_VERSION',
|
|
12
12
|
UPDATABLE_STRING: 'UPDATABLE_APP_VERSION',
|
|
13
13
|
};
|
|
14
|
+
// Resolve cluster variable values from available env vars with fallbacks
|
|
15
|
+
const clusterVariableJsonValue = process.env.CLUSTER_VARIABLE_JSON_VALUE || process.env.CLUSTER_VARIABLE_JSON;
|
|
16
|
+
const clusterVariableStringValue = process.env.CLUSTER_VARIABLE_STRING_VALUE || 'v1.0.0';
|
|
14
17
|
function getConfigByType(type) {
|
|
15
18
|
const configs = {
|
|
16
19
|
JSON: {
|
|
17
20
|
processName: 'Cluster Variable Original JSON',
|
|
18
21
|
processNameUpdatable: 'Cluster Variable Updatable JSON',
|
|
19
22
|
taskName: 'Preview JSON cluster variables',
|
|
23
|
+
taskElementId: 'Activity_1whhatc',
|
|
20
24
|
originalVariableName: CLUSTER_VAR_NAMES.ORIGINAL_JSON,
|
|
21
25
|
updatableVariableName: CLUSTER_VAR_NAMES.UPDATABLE_JSON,
|
|
22
26
|
originalValue: originalJsonClusterVariableValue,
|
|
@@ -27,6 +31,7 @@ function getConfigByType(type) {
|
|
|
27
31
|
processName: 'Cluster Variable Original String',
|
|
28
32
|
processNameUpdatable: 'Cluster Variable Updatable String',
|
|
29
33
|
taskName: 'Preview String cluster variable',
|
|
34
|
+
taskElementId: 'Activity_1whhatc',
|
|
30
35
|
originalVariableName: CLUSTER_VAR_NAMES.ORIGINAL_STRING,
|
|
31
36
|
updatableVariableName: CLUSTER_VAR_NAMES.UPDATABLE_STRING,
|
|
32
37
|
originalValue: originalStringClusterVariableValue,
|
|
@@ -47,15 +52,17 @@ SM_8_9_1.test.describe.configure({ mode: 'parallel' });
|
|
|
47
52
|
SM_8_9_1.test.describe('Cluster Variables User Flows', () => {
|
|
48
53
|
SM_8_9_1.test.beforeAll(async () => {
|
|
49
54
|
authToken = await (0, apiHelpers_1.authSmAPI)();
|
|
55
|
+
if (!clusterVariableJsonValue) {
|
|
56
|
+
throw new Error('Neither CLUSTER_VARIABLE_JSON_VALUE nor CLUSTER_VARIABLE_JSON env var is set');
|
|
57
|
+
}
|
|
50
58
|
await Promise.all([
|
|
51
|
-
(0, apiHelpers_1.createJsonClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.ORIGINAL_JSON,
|
|
52
|
-
(0, apiHelpers_1.createJsonClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_JSON,
|
|
53
|
-
(0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.ORIGINAL_STRING,
|
|
54
|
-
(0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_STRING,
|
|
59
|
+
(0, apiHelpers_1.createJsonClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.ORIGINAL_JSON, clusterVariableJsonValue),
|
|
60
|
+
(0, apiHelpers_1.createJsonClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_JSON, clusterVariableJsonValue),
|
|
61
|
+
(0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.ORIGINAL_STRING, clusterVariableStringValue),
|
|
62
|
+
(0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_STRING, clusterVariableStringValue),
|
|
55
63
|
]);
|
|
56
|
-
originalJsonClusterVariableValue = JSON.parse(
|
|
57
|
-
originalStringClusterVariableValue =
|
|
58
|
-
process.env.CLUSTER_VARIABLE_STRING_VALUE;
|
|
64
|
+
originalJsonClusterVariableValue = JSON.parse(clusterVariableJsonValue);
|
|
65
|
+
originalStringClusterVariableValue = clusterVariableStringValue;
|
|
59
66
|
const deployments = [
|
|
60
67
|
{
|
|
61
68
|
path: './resources/cluster_variables/cluster_variable_json_readonly.bpmn',
|
|
@@ -109,20 +116,49 @@ SM_8_9_1.test.describe('Cluster Variables User Flows', () => {
|
|
|
109
116
|
},
|
|
110
117
|
];
|
|
111
118
|
for (const config of testConfigs) {
|
|
112
|
-
(0, SM_8_9_1.test)(`User views ${config.type} cluster variable in Tasklist from readonly process and completes task`, async ({ navigationPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, taskPanelPage, taskDetailsPage, }) => {
|
|
119
|
+
(0, SM_8_9_1.test)(`User views ${config.type} cluster variable in Tasklist from readonly process and completes task`, async ({ page, navigationPage, operateHomePage, operateProcessesPage, operateProcessInstancePage, taskPanelPage, taskDetailsPage, }) => {
|
|
113
120
|
SM_8_9_1.test.slow();
|
|
114
121
|
const derived = getConfigByType(config.type);
|
|
115
122
|
const instanceKey = await (0, apiHelpers_1.createProcessInstance)(String(config.processKeyDisplay()), authToken);
|
|
116
123
|
await SM_8_9_1.test.step('User can access the process on operate', async () => {
|
|
117
124
|
await operateHomePage.clickProcessesTab();
|
|
118
125
|
await operateProcessesPage.applyMoreFilters('Process Instance Key(s)', String(instanceKey));
|
|
119
|
-
await operateProcessesPage.clickProcessInstanceLink(
|
|
126
|
+
await operateProcessesPage.clickProcessInstanceLink(String(instanceKey));
|
|
120
127
|
await operateProcessInstancePage.assertActiveTokenIsPresent();
|
|
121
128
|
});
|
|
122
129
|
await SM_8_9_1.test.step(`User can view the process with ${config.type} cluster variable on tasklist`, async () => {
|
|
123
130
|
await navigationPage.goToTasklist();
|
|
124
131
|
await (0, sleep_1.sleep)(5000);
|
|
125
|
-
|
|
132
|
+
// Tasklist may display the BPMN element ID instead of the task name
|
|
133
|
+
// due to inconsistent metadata. Determine which label is visible.
|
|
134
|
+
const taskNameLocator = taskPanelPage.availableTasks.getByText(derived.taskName, { exact: true });
|
|
135
|
+
const taskElementIdLocator = taskPanelPage.availableTasks.getByText(derived.taskElementId, { exact: true });
|
|
136
|
+
let taskLabel = derived.taskName;
|
|
137
|
+
for (let attempt = 1; attempt <= 30; attempt++) {
|
|
138
|
+
const [nameVisible, elementIdVisible] = await Promise.all([
|
|
139
|
+
taskNameLocator
|
|
140
|
+
.first()
|
|
141
|
+
.isVisible()
|
|
142
|
+
.catch(() => false),
|
|
143
|
+
taskElementIdLocator
|
|
144
|
+
.first()
|
|
145
|
+
.isVisible()
|
|
146
|
+
.catch(() => false),
|
|
147
|
+
]);
|
|
148
|
+
if (nameVisible) {
|
|
149
|
+
taskLabel = derived.taskName;
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
if (elementIdVisible) {
|
|
153
|
+
taskLabel = derived.taskElementId;
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
if (attempt < 30) {
|
|
157
|
+
await page.reload();
|
|
158
|
+
await (0, sleep_1.sleep)(2000);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
await taskPanelPage.openTask(taskLabel);
|
|
126
162
|
await taskDetailsPage.clickAssignToMeButton();
|
|
127
163
|
});
|
|
128
164
|
await SM_8_9_1.test.step(`User can view the value of ${config.type} cluster variable and complete the task`, async () => {
|
|
@@ -141,7 +177,7 @@ SM_8_9_1.test.describe('Cluster Variables User Flows', () => {
|
|
|
141
177
|
await operateHomePage.clickProcessesTab();
|
|
142
178
|
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
143
179
|
await operateProcessesPage.applyMoreFilters('Process Instance Key(s)', String(instanceKey));
|
|
144
|
-
await operateProcessesPage.clickProcessInstanceLink(
|
|
180
|
+
await operateProcessesPage.clickProcessInstanceLink(String(instanceKey), 'completed');
|
|
145
181
|
await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
|
|
146
182
|
});
|
|
147
183
|
});
|
|
@@ -177,7 +213,7 @@ SM_8_9_1.test.describe('Cluster Variables User Flows', () => {
|
|
|
177
213
|
await operateHomePage.clickProcessesTab();
|
|
178
214
|
await operateProcessesPage.clickProcessCompletedCheckbox();
|
|
179
215
|
await operateProcessesPage.applyMoreFilters('Process Instance Key(s)', String(instanceKey));
|
|
180
|
-
await operateProcessesPage.clickProcessInstanceLink(
|
|
216
|
+
await operateProcessesPage.clickProcessInstanceLink(String(instanceKey), 'completed');
|
|
181
217
|
await operateProcessInstancePage.assertProcessCompleteStatusWithRetry();
|
|
182
218
|
});
|
|
183
219
|
await SM_8_9_1.test.step(`User verifies the updated ${config.type} cluster variable value is present in process variables`, async () => {
|
|
@@ -5,6 +5,7 @@ const SM_8_9_1 = require("../../fixtures/SM-8.9");
|
|
|
5
5
|
const _setup_1 = require("../../test-setup.js");
|
|
6
6
|
const UtilitiesPage_1 = require("../../pages/SM-8.9/UtilitiesPage");
|
|
7
7
|
const sleep_1 = require("../../utils/sleep");
|
|
8
|
+
const mtTenant = process.env.IS_MT === 'true' ? '<default>' : '';
|
|
8
9
|
SM_8_9_1.test.describe.configure({ mode: 'parallel' });
|
|
9
10
|
SM_8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
10
11
|
SM_8_9_1.test.beforeEach(async ({ navigationPage }, testInfo) => {
|
|
@@ -24,7 +25,7 @@ SM_8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
24
25
|
});
|
|
25
26
|
await SM_8_9_1.test.step('Create BPMN Diagram with REST Connector and Start Process Instance', async () => {
|
|
26
27
|
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/no-auth-test', 'noAuth', 'body');
|
|
27
|
-
await modelerCreatePage.runProcessInstance();
|
|
28
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
28
29
|
await (0, sleep_1.sleep)(20000);
|
|
29
30
|
});
|
|
30
31
|
await SM_8_9_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
@@ -53,7 +54,7 @@ SM_8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
53
54
|
});
|
|
54
55
|
await SM_8_9_1.test.step('Create BPMN Diagram with REST Connector with Basic Auth and Start Process Instance', async () => {
|
|
55
56
|
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/bearer-auth-test', 'bearer', '{message:response.body.status}');
|
|
56
|
-
await modelerCreatePage.runProcessInstance();
|
|
57
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
57
58
|
await (0, _setup_1.performBearerTokenAuthPostRequest)('https://camunda.proxy.beeceptor.com/pre-prod/bearer-auth-test', 'thisisabearertoken');
|
|
58
59
|
await (0, sleep_1.sleep)(20000);
|
|
59
60
|
});
|
|
@@ -116,7 +117,7 @@ SM_8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
116
117
|
await modelerCreatePage.clickAppendElementButton();
|
|
117
118
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
118
119
|
await (0, sleep_1.sleep)(10000);
|
|
119
|
-
await modelerCreatePage.deployProcessInstance();
|
|
120
|
+
await modelerCreatePage.deployProcessInstance(mtTenant);
|
|
120
121
|
await (0, sleep_1.sleep)(20000);
|
|
121
122
|
});
|
|
122
123
|
await SM_8_9_1.test.step('Make Authorization Request', async () => {
|
|
@@ -143,7 +144,7 @@ SM_8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
143
144
|
});
|
|
144
145
|
await SM_8_9_1.test.step('Create BPMN Diagram with REST Connector using secrets and Start Process Instance', async () => {
|
|
145
146
|
await (0, UtilitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/basic-auth-test', 'basic', '{message:response.body.message}', 'result', { username: '{{secrets.username}}', password: '{{secrets.password}}' });
|
|
146
|
-
await modelerCreatePage.runProcessInstance();
|
|
147
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
147
148
|
await (0, sleep_1.sleep)(20000);
|
|
148
149
|
});
|
|
149
150
|
await SM_8_9_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
|
|
@@ -208,7 +209,7 @@ SM_8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
208
209
|
await modelerCreatePage.clickAppendElementButton();
|
|
209
210
|
await modelerCreatePage.clickAppendEndEventButton();
|
|
210
211
|
await (0, sleep_1.sleep)(10000);
|
|
211
|
-
await modelerCreatePage.runProcessInstance();
|
|
212
|
+
await modelerCreatePage.runProcessInstance('', mtTenant);
|
|
212
213
|
await (0, sleep_1.sleep)(20000);
|
|
213
214
|
});
|
|
214
215
|
await SM_8_9_1.test.step('Make Authorization Request', async () => {
|
|
@@ -238,7 +239,7 @@ SM_8_9_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
|
|
|
238
239
|
SM_8_9_1.test.slow();
|
|
239
240
|
const processName = 'Connectors_Timer_Event_Process' + (await (0, _setup_1.generateRandomStringAsync)(3));
|
|
240
241
|
await SM_8_9_1.test.step('Open Cross Component Test Project and Create a REST Connector Document Handling Flow', async () => {
|
|
241
|
-
await (0, UtilitiesPage_1.modelAndRunConnectorsTimerEventDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage, connectorTemplatePage);
|
|
242
|
+
await (0, UtilitiesPage_1.modelAndRunConnectorsTimerEventDiagram)(modelerCreatePage, modelerHomePage, processName, page, connectorMarketplacePage, connectorTemplatePage, mtTenant);
|
|
242
243
|
});
|
|
243
244
|
await SM_8_9_1.test.step('View Process Instance in Operate, assert it completes and assert variable values are correct', async () => {
|
|
244
245
|
await navigationPage.goToOperate();
|