@camunda/e2e-test-suite 0.0.795 → 0.0.797

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.
@@ -21,6 +21,7 @@ declare class ClusterPage {
21
21
  readonly connectorSecretsTab: Locator;
22
22
  readonly createAClusterButton: Locator;
23
23
  readonly clusterVersionOption: Locator;
24
+ readonly generationSearchInput: Locator;
24
25
  readonly g3DevClusterType: Locator;
25
26
  readonly alphaTab: Locator;
26
27
  readonly devTab: Locator;
@@ -26,6 +26,7 @@ class ClusterPage {
26
26
  connectorSecretsTab;
27
27
  createAClusterButton;
28
28
  clusterVersionOption;
29
+ generationSearchInput;
29
30
  g3DevClusterType;
30
31
  alphaTab;
31
32
  devTab;
@@ -85,6 +86,7 @@ class ClusterPage {
85
86
  name: 'Create a Cluster',
86
87
  });
87
88
  this.clusterVersionOption = page.getByText(`${process.env.CLUSTER_VERSION}`, { exact: true });
89
+ this.generationSearchInput = page.getByPlaceholder('Search generations');
88
90
  this.g3DevClusterType = page.locator('label').filter({
89
91
  hasText: this.defaultClusterType,
90
92
  });
@@ -304,14 +306,29 @@ class ClusterPage {
304
306
  this.clickStableTab,
305
307
  this.clickAlphaTab,
306
308
  ];
307
- for (const clickTab of tabs) {
308
- try {
309
- await clickTab.call(this);
310
- await this.clusterVersionOption.click({ timeout: 60000 });
311
- return;
312
- }
313
- catch (error) {
314
- console.error('Error clicking tab or cluster version option:', error);
309
+ // The channel tabs no longer list every generation — the list is filtered
310
+ // by a "Search generations" box, and switching tabs clears that box. So on
311
+ // each channel we must (re)type the generation name before its option
312
+ // renders. A generation created via the API moments earlier can also take
313
+ // time to surface, so cycle through every channel repeatedly within a
314
+ // bounded budget (maxCycles * tabs * perTabTimeout) rather than a single
315
+ // pass, giving a late-propagating generation multiple chances on any channel.
316
+ const maxCycles = 6;
317
+ const perTabTimeout = 12000;
318
+ for (let cycle = 0; cycle < maxCycles; cycle++) {
319
+ for (const clickTab of tabs) {
320
+ try {
321
+ await clickTab.call(this);
322
+ await (0, test_1.expect)(this.generationSearchInput).toBeVisible({
323
+ timeout: perTabTimeout,
324
+ });
325
+ await this.generationSearchInput.fill(`${process.env.CLUSTER_VERSION}`);
326
+ await this.clusterVersionOption.click({ timeout: perTabTimeout });
327
+ return;
328
+ }
329
+ catch (error) {
330
+ console.error(`Cycle ${cycle + 1}/${maxCycles}: cluster generation not found on this tab yet:`, error);
331
+ }
315
332
  }
316
333
  }
317
334
  throw new Error('Failed to find cluster generation');
@@ -20,6 +20,7 @@ declare class ClusterPage {
20
20
  readonly connectorSecretsTab: Locator;
21
21
  readonly createAClusterButton: Locator;
22
22
  readonly clusterVersionOption: Locator;
23
+ readonly generationSearchInput: Locator;
23
24
  readonly g3DevClusterType: Locator;
24
25
  readonly alphaTab: Locator;
25
26
  readonly devTab: Locator;
@@ -27,6 +27,7 @@ class ClusterPage {
27
27
  connectorSecretsTab;
28
28
  createAClusterButton;
29
29
  clusterVersionOption;
30
+ generationSearchInput;
30
31
  g3DevClusterType;
31
32
  alphaTab;
32
33
  devTab;
@@ -76,6 +77,7 @@ class ClusterPage {
76
77
  this.clusterVersionOption = page.getByText(process.env.CLUSTER_VERSION, {
77
78
  exact: true,
78
79
  });
80
+ this.generationSearchInput = page.getByPlaceholder('Search generations');
79
81
  this.g3DevClusterType = page.locator('label').filter({
80
82
  hasText: this.defaultClusterType,
81
83
  });
@@ -309,6 +311,12 @@ class ClusterPage {
309
311
  try {
310
312
  if (version === clusterVersions_1.ClusterVersion.EIGHT_SEVEN_SNAPSHOT) {
311
313
  await this.clickDevTab();
314
+ // The channel list is filtered by a "Search generations" box; type
315
+ // the generation name so its option renders before selecting it.
316
+ await (0, test_1.expect)(this.generationSearchInput).toBeVisible({
317
+ timeout: 60000,
318
+ });
319
+ await this.generationSearchInput.fill(version);
312
320
  await this.clusterVersionOption.scrollIntoViewIfNeeded();
313
321
  await (0, test_1.expect)(this.clusterVersionOption).toBeVisible({ timeout: 60000 });
314
322
  await this.clusterVersionOption.click({ timeout: 60000 });
@@ -318,6 +326,12 @@ class ClusterPage {
318
326
  for (const clickTab of tabs) {
319
327
  try {
320
328
  await clickTab.call(this);
329
+ // Switching channels clears the search box, so re-type the
330
+ // generation name each time to filter it into the truncated list.
331
+ await (0, test_1.expect)(this.generationSearchInput).toBeVisible({
332
+ timeout: 30000,
333
+ });
334
+ await this.generationSearchInput.fill(version);
321
335
  await this.clusterVersionOption.click({ timeout: 30000 });
322
336
  return;
323
337
  }
@@ -18,6 +18,7 @@ declare class ClusterPage {
18
18
  readonly connectorSecretsTab: Locator;
19
19
  readonly createAClusterButton: Locator;
20
20
  readonly clusterVersionOption: Locator;
21
+ readonly generationSearchInput: Locator;
21
22
  readonly g3DevClusterType: Locator;
22
23
  readonly belgiumRegion: Locator;
23
24
  readonly londonRegion: Locator;
@@ -25,6 +25,7 @@ class ClusterPage {
25
25
  connectorSecretsTab;
26
26
  createAClusterButton;
27
27
  clusterVersionOption;
28
+ generationSearchInput;
28
29
  g3DevClusterType;
29
30
  belgiumRegion;
30
31
  londonRegion;
@@ -79,6 +80,7 @@ class ClusterPage {
79
80
  name: 'Create a Cluster',
80
81
  });
81
82
  this.clusterVersionOption = page.getByText(`${process.env.CLUSTER_VERSION}`, { exact: true });
83
+ this.generationSearchInput = page.getByPlaceholder('Search generations');
82
84
  this.g3DevClusterType = page.locator('label').filter({
83
85
  hasText: this.defaultClusterType,
84
86
  });
@@ -329,6 +331,12 @@ class ClusterPage {
329
331
  try {
330
332
  if (version === clusterVersions_1.ClusterVersion.EIGHT_EIGHT_SNAPSHOT) {
331
333
  await this.clickDevTab();
334
+ // The channel list is filtered by a "Search generations" box; type
335
+ // the generation name so its option renders before selecting it.
336
+ await (0, test_1.expect)(this.generationSearchInput).toBeVisible({
337
+ timeout: 60000,
338
+ });
339
+ await this.generationSearchInput.fill(version);
332
340
  await this.clusterVersionOption.scrollIntoViewIfNeeded();
333
341
  await (0, test_1.expect)(this.clusterVersionOption).toBeVisible({ timeout: 60000 });
334
342
  await this.clusterVersionOption.click({ timeout: 60000 });
@@ -337,6 +345,12 @@ class ClusterPage {
337
345
  for (const clickTab of tabs) {
338
346
  try {
339
347
  await clickTab.call(this);
348
+ // Switching channels clears the search box, so re-type the
349
+ // generation name each time to filter it into the truncated list.
350
+ await (0, test_1.expect)(this.generationSearchInput).toBeVisible({
351
+ timeout: 30000,
352
+ });
353
+ await this.generationSearchInput.fill(version);
340
354
  await this.clusterVersionOption.click({ timeout: 30000 });
341
355
  return;
342
356
  }
@@ -21,6 +21,7 @@ declare class ClusterPage {
21
21
  readonly connectorSecretsTab: Locator;
22
22
  readonly createAClusterButton: Locator;
23
23
  readonly clusterVersionOption: Locator;
24
+ readonly generationSearchInput: Locator;
24
25
  readonly g3DevClusterType: Locator;
25
26
  readonly alphaTab: Locator;
26
27
  readonly devTab: Locator;
@@ -27,6 +27,7 @@ class ClusterPage {
27
27
  connectorSecretsTab;
28
28
  createAClusterButton;
29
29
  clusterVersionOption;
30
+ generationSearchInput;
30
31
  g3DevClusterType;
31
32
  alphaTab;
32
33
  devTab;
@@ -87,6 +88,7 @@ class ClusterPage {
87
88
  name: 'Create a Cluster',
88
89
  });
89
90
  this.clusterVersionOption = page.getByText(`${process.env.CLUSTER_VERSION}`, { exact: true });
91
+ this.generationSearchInput = page.getByPlaceholder('Search generations');
90
92
  this.g3DevClusterType = page.locator('label').filter({
91
93
  hasText: this.defaultClusterType,
92
94
  });
@@ -305,14 +307,29 @@ class ClusterPage {
305
307
  this.clickStableTab,
306
308
  this.clickAlphaTab,
307
309
  ];
308
- for (const clickTab of tabs) {
309
- try {
310
- await clickTab.call(this);
311
- await this.clusterVersionOption.click({ timeout: 60000 });
312
- return;
313
- }
314
- catch (error) {
315
- console.error('Error clicking tab or cluster version option:', error);
310
+ // The channel tabs no longer list every generation — the list is filtered
311
+ // by a "Search generations" box, and switching tabs clears that box. So on
312
+ // each channel we must (re)type the generation name before its option
313
+ // renders. A generation created via the API moments earlier can also take
314
+ // time to surface, so cycle through every channel repeatedly within a
315
+ // bounded budget (maxCycles * tabs * perTabTimeout) rather than a single
316
+ // pass, giving a late-propagating generation multiple chances on any channel.
317
+ const maxCycles = 6;
318
+ const perTabTimeout = 12000;
319
+ for (let cycle = 0; cycle < maxCycles; cycle++) {
320
+ for (const clickTab of tabs) {
321
+ try {
322
+ await clickTab.call(this);
323
+ await (0, test_1.expect)(this.generationSearchInput).toBeVisible({
324
+ timeout: perTabTimeout,
325
+ });
326
+ await this.generationSearchInput.fill(`${process.env.CLUSTER_VERSION}`);
327
+ await this.clusterVersionOption.click({ timeout: perTabTimeout });
328
+ return;
329
+ }
330
+ catch (error) {
331
+ console.error(`Cycle ${cycle + 1}/${maxCycles}: cluster generation not found on this tab yet:`, error);
332
+ }
316
333
  }
317
334
  }
318
335
  throw new Error('Failed to find cluster generation');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.795",
3
+ "version": "0.0.797",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",