@camunda/e2e-test-suite 0.0.331 → 0.0.332

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 (29) hide show
  1. package/dist/pages/SM-8.10/IdentityTenantPage.js +2 -1
  2. package/dist/pages/SM-8.10/ModelerCreatePage.d.ts +1 -1
  3. package/dist/pages/SM-8.10/ModelerCreatePage.js +5 -1
  4. package/dist/pages/SM-8.10/OCIdentityClusterVariablesPage.js +7 -3
  5. package/dist/pages/SM-8.10/TaskDetailsPage.js +1 -1
  6. package/dist/pages/SM-8.10/UtilitiesPage.d.ts +4 -4
  7. package/dist/pages/SM-8.10/UtilitiesPage.js +42 -9
  8. package/dist/pages/SM-8.6/IdentityTenantPage.js +1 -0
  9. package/dist/pages/SM-8.7/IdentityTenantPage.js +1 -0
  10. package/dist/pages/SM-8.8/IdentityTenantPage.js +1 -0
  11. package/dist/pages/SM-8.9/IdentityTenantPage.js +2 -1
  12. package/dist/pages/SM-8.9/ModelerCreatePage.d.ts +1 -1
  13. package/dist/pages/SM-8.9/ModelerCreatePage.js +5 -1
  14. package/dist/pages/SM-8.9/OCIdentityClusterVariablesPage.js +7 -3
  15. package/dist/pages/SM-8.9/TaskDetailsPage.js +1 -1
  16. package/dist/pages/SM-8.9/UtilitiesPage.d.ts +4 -4
  17. package/dist/pages/SM-8.9/UtilitiesPage.js +42 -9
  18. package/dist/tests/SM-8.10/cluster-variables.spec.js +48 -12
  19. package/dist/tests/SM-8.10/connectors-user-flows.spec.js +7 -6
  20. package/dist/tests/SM-8.10/hto-user-flows.spec.js +7 -6
  21. package/dist/tests/SM-8.10/mt-enabled-user-flows.spec.js +8 -6
  22. package/dist/tests/SM-8.6/mt-enabled-user-flows.spec.js +8 -6
  23. package/dist/tests/SM-8.8/mt-enabled-user-flows.spec.js +8 -6
  24. package/dist/tests/SM-8.9/cluster-variables.spec.js +48 -12
  25. package/dist/tests/SM-8.9/connectors-user-flows.spec.js +7 -6
  26. package/dist/tests/SM-8.9/hto-user-flows.spec.js +7 -6
  27. package/dist/tests/SM-8.9/mt-enabled-user-flows.spec.js +8 -6
  28. package/dist/utils/apiHelpers.js +15 -5
  29. package/package.json +1 -1
@@ -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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
481
+ await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
480
482
  if (process.env.IS_OPTIMIZE !== 'false') {
481
483
  await managementIdentityTenantPage.assignClientToTenant('Optimize');
482
484
  }
@@ -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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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, process.env.CLUSTER_VARIABLE_JSON_VALUE),
52
- (0, apiHelpers_1.createJsonClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_JSON, process.env.CLUSTER_VARIABLE_JSON_VALUE),
53
- (0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.ORIGINAL_STRING, process.env.CLUSTER_VARIABLE_STRING_VALUE),
54
- (0, apiHelpers_1.createStringClusterVariable)(authToken, 'sm', CLUSTER_VAR_NAMES.UPDATABLE_STRING, process.env.CLUSTER_VARIABLE_STRING_VALUE),
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(process.env.CLUSTER_VARIABLE_JSON_VALUE);
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(derived.processName);
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
- await taskPanelPage.openTask(derived.taskName);
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(derived.processName);
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(derived.processNameUpdatable);
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();
@@ -6,6 +6,7 @@ const _setup_1 = require("../../test-setup.js");
6
6
  const sleep_1 = require("../../utils/sleep");
7
7
  const UtilitiesPage_1 = require("../../pages/SM-8.9/UtilitiesPage");
8
8
  const resetSession_1 = require("../../utils/resetSession");
9
+ const mtTenant = process.env.IS_MT === 'true' ? '<default>' : '';
9
10
  SM_8_9_1.test.describe.configure({ mode: 'parallel' });
10
11
  SM_8_9_1.test.describe('HTO User Flow Tests', () => {
11
12
  SM_8_9_1.test.beforeEach(async ({ navigationPage }, testInfo) => {
@@ -26,7 +27,7 @@ SM_8_9_1.test.describe('HTO User Flow Tests', () => {
26
27
  });
27
28
  await SM_8_9_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_9_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_9_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_9_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_9_1.test.describe('HTO User Flow Tests', () => {
113
114
  });
114
115
  await SM_8_9_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_9_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_9_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_9_1.test.step('View User Tasks in Tasklist', async () => {
219
220
  await navigationPage.goToTasklist();
@@ -318,7 +319,7 @@ SM_8_9_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_9_1.test.step('View User Tasks in Tasklist', async () => {
324
325
  await navigationPage.goToTasklist();
@@ -383,7 +384,7 @@ SM_8_9_1.test.describe('HTO User Flow Tests', () => {
383
384
  await modelerHomePage.clickCrossComponentProjectFolder();
384
385
  });
385
386
  await SM_8_9_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_9_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.9/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_9_1.test.describe.configure({ mode: 'parallel' });
13
15
  SM_8_9_1.test.describe('MT Enabled User Flows Test', () => {
@@ -42,7 +44,7 @@ if (process.env.IS_MT === 'true') {
42
44
  await SM_8_9_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', 'Demo Userdemo@example.org');
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_9_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', 'Demo Userdemo@example.org');
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_9_1.test.step('Assign User To Default Tenant in Management Identity', async () => {
339
341
  await navigationPage.goToManagementIdentity();
340
- await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', 'Demo Userdemo@example.org');
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_9_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', 'Demo Userdemo@example.org');
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', 'Demo Userdemo@example.org');
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_9_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', 'Demo Userdemo@example.org');
481
+ await managementIdentityTenantPage.assignUserToTenant(tenantName, 'demo', demoUserDisplayText);
480
482
  if (process.env.IS_OPTIMIZE !== 'false') {
481
483
  await managementIdentityTenantPage.assignClientToTenant('Optimize');
482
484
  }
@@ -244,11 +244,16 @@ async function deployProcess(filePath, authToken, environment, clusterType) {
244
244
  buffer: fileContent,
245
245
  };
246
246
  const url = buildZeebeApiUrl('/v2/deployments', environment, clusterType);
247
+ const isMT = process.env.IS_MT === 'true';
248
+ const multipart = { resources };
249
+ if (isMT) {
250
+ multipart.tenantId = '<default>';
251
+ }
247
252
  const response = await apiRequestContext.post(url, {
248
253
  headers: {
249
254
  Authorization: authToken ?? '',
250
255
  },
251
- multipart: { resources },
256
+ multipart,
252
257
  });
253
258
  if (response.status() !== 200) {
254
259
  const body = await response.text();
@@ -272,14 +277,19 @@ exports.deployProcess = deployProcess;
272
277
  async function createProcessInstance(processDefinitionKey, authToken, environment, clusterType, variables) {
273
278
  apiRequestContext = await getApiRequestContext();
274
279
  const url = buildZeebeApiUrl('/v2/process-instances', environment, clusterType);
280
+ const isMT = process.env.IS_MT === 'true';
281
+ const data = {
282
+ processDefinitionKey: String(processDefinitionKey),
283
+ variables: variables ?? {},
284
+ };
285
+ if (isMT) {
286
+ data.tenantId = '<default>';
287
+ }
275
288
  const response = await apiRequestContext.post(url, {
276
289
  headers: {
277
290
  Authorization: authToken ?? '',
278
291
  },
279
- data: {
280
- processDefinitionKey: String(processDefinitionKey),
281
- variables: variables ?? {},
282
- },
292
+ data,
283
293
  });
284
294
  (0, test_1.expect)(response.status()).toBe(200);
285
295
  const responseBody = await response.json();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.331",
3
+ "version": "0.0.332",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",