@camunda/e2e-test-suite 0.0.1205 → 0.0.1207

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.
@@ -4,6 +4,7 @@ declare class ClusterPage {
4
4
  private defaultClusterType;
5
5
  readonly belgiumRegion: Locator;
6
6
  readonly londonRegion: Locator;
7
+ readonly ohioRegion: Locator;
7
8
  readonly finlandRegion: Locator;
8
9
  private testInfo?;
9
10
  readonly createNewClusterButton: Locator;
@@ -9,6 +9,7 @@ class ClusterPage {
9
9
  defaultClusterType = 'G3-Dev';
10
10
  belgiumRegion;
11
11
  londonRegion;
12
+ ohioRegion;
12
13
  finlandRegion;
13
14
  testInfo;
14
15
  createNewClusterButton;
@@ -84,6 +85,9 @@ class ClusterPage {
84
85
  this.londonRegion = page.locator('label').filter({
85
86
  hasText: 'London, Europe (europe-west2)',
86
87
  });
88
+ this.ohioRegion = page.locator('label').filter({
89
+ hasText: 'Ohio, North America (us-east-2)',
90
+ });
87
91
  this.finlandRegion = page.locator('label').filter({
88
92
  hasText: 'Finland, Europe (europe-north1)',
89
93
  });
@@ -576,6 +580,12 @@ class ClusterPage {
576
580
  await chosen.locator.click();
577
581
  }
578
582
  }
583
+ else if (region === 'AWS' && process.env.IS_PROD == 'true') {
584
+ // The AWS region tile has no default selection, unlike GCP's tiles.
585
+ // Only prod creates AWS clusters through this UI flow.
586
+ await (0, test_1.expect)(this.ohioRegion).toBeVisible({ timeout: 20000 });
587
+ await this.ohioRegion.click();
588
+ }
579
589
  }
580
590
  async clickGCPRegion() {
581
591
  const regionSelectionEnabled = process.env.REGION_SELECTION === 'true';
@@ -522,15 +522,22 @@ class ModelerHomePage {
522
522
  await this.page.goto(this.processApplicationUrl, {
523
523
  waitUntil: 'domcontentloaded',
524
524
  });
525
- // One reload before spending the whole budget: processApplicationStore
525
+ // Up to two reloads before spending the whole budget: processApplicationStore
526
526
  // .init() swallows a failed fetch (it only toasts "Yikes! Couldn't
527
527
  // retrieve your project" and clears its loading flag), so a transient 5xx
528
528
  // leaves a fully rendered page that simply has no process-application
529
529
  // breadcrumb -- waiting the full 90s on it can only ever time out, and
530
- // re-running the store init is the only thing that brings it back.
531
- const backInside = await this.becameVisible(this.processApplicationPage.breadcrumb, 45000);
532
- if (!backInside) {
533
- await this.page.reload({ waitUntil: 'domcontentloaded' });
530
+ // re-running the store init is the only thing that brings it back. A
531
+ // single reload can itself land on a second transient failure (seen in
532
+ // run 35340608406), so retry the reload once more before falling through
533
+ // to the full-budget wait below.
534
+ const maxReloadAttempts = 2;
535
+ let backInside = false;
536
+ for (let attempt = 0; attempt < maxReloadAttempts && !backInside; attempt++) {
537
+ backInside = await this.becameVisible(this.processApplicationPage.breadcrumb, 45000);
538
+ if (!backInside) {
539
+ await this.page.reload({ waitUntil: 'domcontentloaded' });
540
+ }
534
541
  }
535
542
  await this.processApplicationPage.waitForProcessApplication();
536
543
  await this.dismissBlockingDialog();
@@ -5,6 +5,7 @@ declare class ClusterPage {
5
5
  readonly belgiumRegion: Locator;
6
6
  readonly finlandRegion: Locator;
7
7
  readonly londonRegion: Locator;
8
+ readonly ohioRegion: Locator;
8
9
  readonly createNewClusterButton: Locator;
9
10
  readonly clusterNameInput: Locator;
10
11
  readonly createClusterButton: Locator;
@@ -12,6 +12,7 @@ class ClusterPage {
12
12
  belgiumRegion;
13
13
  finlandRegion;
14
14
  londonRegion;
15
+ ohioRegion;
15
16
  createNewClusterButton;
16
17
  clusterNameInput;
17
18
  createClusterButton;
@@ -97,6 +98,9 @@ class ClusterPage {
97
98
  this.londonRegion = page.locator('label').filter({
98
99
  hasText: 'London, Europe (europe-west2)',
99
100
  });
101
+ this.ohioRegion = page.locator('label').filter({
102
+ hasText: 'Ohio, North America (us-east-2)',
103
+ });
100
104
  this.clustersList = page
101
105
  .getByRole('row')
102
106
  .filter({ hasNotText: 'Generation' }); //Filter out header row
@@ -231,6 +235,12 @@ class ClusterPage {
231
235
  await chosen.locator.click();
232
236
  }
233
237
  }
238
+ else if (region === 'AWS' && process.env.IS_PROD == 'true') {
239
+ // The AWS region tile has no default selection, unlike GCP's tiles.
240
+ // Only prod creates AWS clusters through this UI flow.
241
+ await (0, test_1.expect)(this.ohioRegion).toBeVisible({ timeout: 20000 });
242
+ await this.ohioRegion.click();
243
+ }
234
244
  }
235
245
  extractClusterIdFromUrl(url) {
236
246
  const clusterIdMatch = url.match(/\/cluster\/([a-f0-9-]+)/);
@@ -22,6 +22,7 @@ declare class ClusterPage {
22
22
  readonly g3DevClusterType: Locator;
23
23
  readonly belgiumRegion: Locator;
24
24
  readonly londonRegion: Locator;
25
+ readonly ohioRegion: Locator;
25
26
  readonly finlandRegion: Locator;
26
27
  readonly alphaTab: Locator;
27
28
  readonly devTab: Locator;
@@ -29,6 +29,7 @@ class ClusterPage {
29
29
  g3DevClusterType;
30
30
  belgiumRegion;
31
31
  londonRegion;
32
+ ohioRegion;
32
33
  finlandRegion;
33
34
  alphaTab;
34
35
  devTab;
@@ -87,6 +88,9 @@ class ClusterPage {
87
88
  this.londonRegion = page.locator('label').filter({
88
89
  hasText: 'London, Europe (europe-west2)',
89
90
  });
91
+ this.ohioRegion = page.locator('label').filter({
92
+ hasText: 'Ohio, North America (us-east-2)',
93
+ });
90
94
  this.belgiumRegion = page.locator('label').filter({
91
95
  hasText: 'Chaos, Belgium, Europe (europe-west1)',
92
96
  });
@@ -264,6 +268,12 @@ class ClusterPage {
264
268
  await chosen.locator.click();
265
269
  }
266
270
  }
271
+ else if (region === 'AWS' && process.env.IS_PROD == 'true') {
272
+ // The AWS region tile has no default selection, unlike GCP's tiles.
273
+ // Only prod creates AWS clusters through this UI flow.
274
+ await (0, test_1.expect)(this.ohioRegion).toBeVisible({ timeout: 20000 });
275
+ await this.ohioRegion.click();
276
+ }
267
277
  }
268
278
  async determineTasklistAPI(tasklistV1Api) {
269
279
  // Determine tasklistV1Api from project name if not explicitly provided
@@ -4,6 +4,7 @@ declare class ClusterPage {
4
4
  private defaultClusterType;
5
5
  readonly belgiumRegion: Locator;
6
6
  readonly londonRegion: Locator;
7
+ readonly ohioRegion: Locator;
7
8
  readonly finlandRegion: Locator;
8
9
  private testInfo?;
9
10
  readonly createNewClusterButton: Locator;
@@ -10,6 +10,7 @@ class ClusterPage {
10
10
  defaultClusterType = 'G3-Dev';
11
11
  belgiumRegion;
12
12
  londonRegion;
13
+ ohioRegion;
13
14
  finlandRegion;
14
15
  testInfo;
15
16
  createNewClusterButton;
@@ -81,6 +82,9 @@ class ClusterPage {
81
82
  this.londonRegion = page.locator('label').filter({
82
83
  hasText: 'London, Europe (europe-west2)',
83
84
  });
85
+ this.ohioRegion = page.locator('label').filter({
86
+ hasText: 'Ohio, North America (us-east-2)',
87
+ });
84
88
  this.finlandRegion = page.locator('label').filter({
85
89
  hasText: 'Finland, Europe (europe-north1)',
86
90
  });
@@ -415,6 +419,12 @@ class ClusterPage {
415
419
  await chosen.locator.click();
416
420
  }
417
421
  }
422
+ else if (region === 'AWS' && process.env.IS_PROD == 'true') {
423
+ // The AWS region tile has no default selection, unlike GCP's tiles.
424
+ // Only prod creates AWS clusters through this UI flow.
425
+ await (0, test_1.expect)(this.ohioRegion).toBeVisible({ timeout: 20000 });
426
+ await this.ohioRegion.click();
427
+ }
418
428
  }
419
429
  async clickGCPRegion() {
420
430
  const regionSelectionEnabled = process.env.REGION_SELECTION === 'true';
@@ -272,6 +272,14 @@ _8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
272
272
  await operateProcessesPage.clickProcessCompletedCheckbox();
273
273
  await operateProcessesPage.clickProcessInstanceLink(processName);
274
274
  await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, operateProcessInstancePage.completedIcon, {
275
+ // This flow's REST connector call round-trips to a real AWS
276
+ // endpoint using the secrets above, which can take longer to
277
+ // complete than the suite's default 60s/3-retry budget (seen
278
+ // timing out in run 35340608406). Match the operateBanner budget
279
+ // above rather than the suite default used elsewhere.
280
+ totalTimeout: 120000,
281
+ visibilityTimeout: 30000,
282
+ maxRetries: 5,
275
283
  postAction: async () => {
276
284
  await page.reload();
277
285
  },
@@ -21,8 +21,20 @@ _8_10_1.test.describe('Orchestration Cluster MCP Server - User Task Tools @taskl
21
21
  throw new Error('Failed to deploy user task tools processes');
22
22
  }
23
23
  const testFileProcessKey = String(deployedTestFileProcessKey);
24
+ // searchUserTaskVariables (below) returns the task's own VARIABLES
25
+ // (name/value pairs), not fields of the task entity itself -- unlike
26
+ // searchUserTasks/getUserTask, whose responses do carry the task's own
27
+ // userTaskKey. mcp_user_task_test_file.bpmn's user task has no input
28
+ // variables and only writes its output on completion (which this test
29
+ // never reaches), so a process instance started with no variables would
30
+ // have nothing for that call to find, and no amount of retrying or
31
+ // waiting could ever make its response contain testUserTaskKey (run
32
+ // 35340608406 and its retry both failed identically on exactly this).
33
+ // Start the process instance with a marker variable instead, so there is
34
+ // a real value in the task's scope to search for.
35
+ const taskVariableMarker = await (0, _setup_1.generateRandomStringAsync)(10);
24
36
  // Create test instance which will create a user task
25
- const testInstanceKey = await (0, apiHelpers_1.createProcessInstance)(testFileProcessKey, authToken, 'saas', 'agentic_cluster');
37
+ const testInstanceKey = await (0, apiHelpers_1.createProcessInstance)(testFileProcessKey, authToken, 'saas', 'agentic_cluster', { taskVariableMarker });
26
38
  // Get the user task key created by the test instance (with retry logic)
27
39
  const testUserTaskKey = await (0, userTaskHelpers_1.getUserTaskKeyByProcessInstanceKey)(testInstanceKey, authToken, 'saas', 'agentic_cluster');
28
40
  console.log('Creating tools instance with variables:', {
@@ -36,6 +48,7 @@ _8_10_1.test.describe('Orchestration Cluster MCP Server - User Task Tools @taskl
36
48
  testFileProcessKey,
37
49
  testInstanceKey,
38
50
  testUserTaskKey,
51
+ taskVariableMarker,
39
52
  };
40
53
  };
41
54
  _8_10_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
@@ -101,8 +114,8 @@ _8_10_1.test.describe('Orchestration Cluster MCP Server - User Task Tools @taskl
101
114
  description: 'search response contains totalItems field',
102
115
  },
103
116
  {
104
- text: () => data.testUserTaskKey,
105
- description: 'search response contains the created user task',
117
+ text: () => data.taskVariableMarker,
118
+ description: 'search response contains the variable set on the task',
106
119
  },
107
120
  ],
108
121
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.1205",
3
+ "version": "0.0.1207",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",