@camunda/e2e-test-suite 0.0.270 → 0.0.272

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 (34) hide show
  1. package/dist/pages/8.10/ClusterDetailsPage.js +14 -3
  2. package/dist/pages/8.10/ClusterPage.d.ts +1 -0
  3. package/dist/pages/8.10/ClusterPage.js +12 -3
  4. package/dist/pages/8.10/ClusterSecretsPage.js +6 -4
  5. package/dist/pages/8.10/ConsoleOrganizationPage.js +13 -29
  6. package/dist/pages/8.10/ModelerCreatePage.js +1 -1
  7. package/dist/pages/8.6/ClusterDetailsPage.js +16 -4
  8. package/dist/pages/8.6/ClusterPage.d.ts +1 -0
  9. package/dist/pages/8.6/ClusterPage.js +9 -3
  10. package/dist/pages/8.6/ClusterSecretsPage.js +4 -2
  11. package/dist/pages/8.6/ConsoleOrganizationPage.js +13 -29
  12. package/dist/pages/8.6/ModelerCreatePage.js +1 -1
  13. package/dist/pages/8.7/ClusterDetailsPage.js +20 -5
  14. package/dist/pages/8.7/ClusterPage.d.ts +1 -0
  15. package/dist/pages/8.7/ClusterPage.js +12 -3
  16. package/dist/pages/8.7/ConsoleOrganizationPage.js +13 -29
  17. package/dist/pages/8.7/ModelerCreatePage.js +1 -1
  18. package/dist/pages/8.8/ClusterDetailsPage.js +4 -1
  19. package/dist/pages/8.8/ClusterPage.d.ts +1 -0
  20. package/dist/pages/8.8/ClusterPage.js +12 -3
  21. package/dist/pages/8.8/ClusterSecretsPage.js +6 -4
  22. package/dist/pages/8.8/ConsoleOrganizationPage.js +13 -29
  23. package/dist/pages/8.9/ClusterDetailsPage.js +13 -3
  24. package/dist/pages/8.9/ClusterPage.d.ts +1 -0
  25. package/dist/pages/8.9/ClusterPage.js +12 -3
  26. package/dist/pages/8.9/ClusterSecretsPage.js +6 -4
  27. package/dist/pages/8.9/ConsoleOrganizationPage.js +13 -29
  28. package/dist/tests/8.10/test-setup.spec.js +2 -4
  29. package/dist/tests/8.6/test-setup.spec.js +2 -4
  30. package/dist/tests/8.7/console-user-flows.spec.js +1 -1
  31. package/dist/tests/8.7/test-setup.spec.js +2 -4
  32. package/dist/tests/8.8/test-setup.spec.js +2 -4
  33. package/dist/tests/8.9/test-setup.spec.js +2 -4
  34. package/package.json +1 -1
@@ -51,12 +51,20 @@ class ClusterDetailsPage {
51
51
  name: 'Create your first Client',
52
52
  });
53
53
  this.clientNameTextbox = page.getByRole('textbox', { name: 'Client Name' });
54
- this.tasklistCheckbox = page.locator('label').filter({ hasText: 'Tasklist' });
54
+ this.tasklistCheckbox = page
55
+ .getByRole('dialog')
56
+ .locator('label')
57
+ .filter({ hasText: 'Tasklist' });
55
58
  this.optimizeCheckbox = page
59
+ .getByRole('dialog')
56
60
  .locator('label')
57
61
  .filter({ hasText: /^Optimize API$/ });
58
- this.operateCheckbox = page.locator('label').filter({ hasText: 'Operate' });
62
+ this.operateCheckbox = page
63
+ .getByRole('dialog')
64
+ .locator('label')
65
+ .filter({ hasText: 'Operate' });
59
66
  this.secretsCheckbox = page
67
+ .getByRole('dialog')
60
68
  .locator('label')
61
69
  .filter({ hasText: /^Administration API - Resource: Secrets$/ });
62
70
  this.createButton = page.getByRole('button', { name: 'Create', exact: true });
@@ -111,7 +119,10 @@ class ClusterDetailsPage {
111
119
  this.envVarsTab = this.clientCredentialsDialog.getByRole('tab', {
112
120
  name: 'Env Vars',
113
121
  });
114
- this.zeebeCheckbox = page.locator('label').filter({ hasText: /^Zeebe$/ });
122
+ this.zeebeCheckbox = page
123
+ .getByRole('dialog')
124
+ .locator('label')
125
+ .filter({ hasText: /^Zeebe$/ });
115
126
  this.apiClientNameTextbox = page.getByRole('textbox', {
116
127
  name: 'Client Name',
117
128
  });
@@ -33,6 +33,7 @@ declare class ClusterPage {
33
33
  readonly cluster: (clusterName: string) => Locator;
34
34
  readonly clusterHealthiness: (clusterName: string) => Locator;
35
35
  readonly clusterLink: (clusterName: string) => Locator;
36
+ readonly dialog: Locator;
36
37
  constructor(page: Page, testInfo?: TestInfo);
37
38
  clickClusterBanner(): Promise<void>;
38
39
  deleteCluster(name: string): Promise<void>;
@@ -39,12 +39,17 @@ class ClusterPage {
39
39
  cluster;
40
40
  clusterHealthiness;
41
41
  clusterLink;
42
+ dialog;
42
43
  constructor(page, testInfo) {
43
44
  this.page = page;
44
45
  this.testInfo = testInfo;
45
- this.createNewClusterButton = page.getByRole('button', {
46
- name: 'Create new Cluster',
47
- });
46
+ this.createNewClusterButton = this.createNewClusterButton = page
47
+ .getByRole('button', {
48
+ name: 'Create new cluster',
49
+ })
50
+ .or(this.page.getByRole('button', {
51
+ name: 'Create cluster',
52
+ }));
48
53
  this.clusterNameInput = page.getByPlaceholder('Enter a name for the cluster');
49
54
  this.createClusterButton = page.getByRole('button', {
50
55
  name: 'Create cluster',
@@ -100,6 +105,7 @@ class ClusterPage {
100
105
  this.clusterLink = (clusterName) => this.cluster(clusterName).getByRole('link', {
101
106
  name: clusterName,
102
107
  });
108
+ this.dialog = page.getByRole('dialog');
103
109
  }
104
110
  async clickClusterBanner() {
105
111
  await this.page
@@ -129,6 +135,8 @@ class ClusterPage {
129
135
  await (0, test_1.expect)(deleteButton).toBeVisible({ timeout: 60000 });
130
136
  await deleteButton.click({ force: true, timeout: 60000 });
131
137
  }
138
+ await (0, test_1.expect)(this.dialog).toBeVisible({ timeout: 60000 });
139
+ await (0, test_1.expect)(this.confirmDeleteInput).toBeVisible({ timeout: 60000 });
132
140
  await this.confirmDeleteInput.click({ force: true, timeout: 60000 });
133
141
  await this.confirmDeleteInput.fill('DELETE', { timeout: 60000 });
134
142
  const dangerDeleteButtons = await this.dangerDeleteButton.all();
@@ -137,6 +145,7 @@ class ClusterPage {
137
145
  await (0, test_1.expect)(this.page.getByText('Deleting...')).not.toBeVisible({
138
146
  timeout: 60000,
139
147
  });
148
+ await (0, test_1.expect)(this.dialog).not.toBeVisible({ timeout: 60000 });
140
149
  // Refresh the list of delete buttons
141
150
  deleteButtons = this.cluster(name).getByRole('button', {
142
151
  name: 'Delete',
@@ -28,8 +28,10 @@ class ClusterSecretsPage {
28
28
  this.createNewSecretButton = page.getByRole('button', {
29
29
  name: 'Create new secret',
30
30
  });
31
- this.keyInput = page.getByLabel('Key');
32
- this.valueInput = page.getByLabel('Value', { exact: true });
31
+ this.keyInput = page.getByRole('dialog').getByLabel('Key');
32
+ this.valueInput = page
33
+ .getByRole('dialog')
34
+ .getByLabel('Value', { exact: true });
33
35
  this.createButton = page.getByRole('button', { name: 'Create', exact: true });
34
36
  this.optionsButton = page
35
37
  .getByRole('cell', { name: 'Options' })
@@ -44,7 +46,7 @@ class ClusterSecretsPage {
44
46
  this.dialog = page.getByRole('dialog');
45
47
  this.importButton = page.getByRole('button', { name: 'Import', exact: true });
46
48
  this.fromFileButton = page.getByText('from File', { exact: true });
47
- this.bulkImportTextArea = page.locator('[id="env-content-input-secrets-bulk-import"]');
49
+ this.bulkImportTextArea = page.locator('[id="bulk-import-content"]');
48
50
  this.dialogImportButton = this.page
49
51
  .getByRole('dialog')
50
52
  .getByRole('button', { name: 'Import', exact: true });
@@ -208,7 +210,7 @@ class ClusterSecretsPage {
208
210
  await this.bulkImportTextArea.click();
209
211
  await this.bulkImportTextArea.fill(mapped);
210
212
  await this.dialogImportButton.click();
211
- await (0, test_1.expect)(this.page.getByText('Importing secrets...')).not.toBeVisible({
213
+ await (0, test_1.expect)(this.dialog).not.toBeVisible({
212
214
  timeout: 60000,
213
215
  });
214
216
  await (0, test_1.expect)(this.createNewSecretButton).toBeVisible({
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConsoleOrganizationPage = void 0;
4
4
  const test_1 = require("@playwright/test");
5
5
  const sleep_1 = require("../../utils/sleep");
6
+ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
6
7
  class ConsoleOrganizationPage {
7
8
  page;
8
9
  usersTab;
@@ -59,7 +60,7 @@ class ConsoleOrganizationPage {
59
60
  this.confirmButton = page.getByRole('button', { name: 'Confirm' });
60
61
  this.settingsTab = page.getByRole('tab', { name: 'Settings' });
61
62
  this.optInButton = page.getByRole('button', { name: 'Opt-in', exact: true });
62
- this.optInCheckbox = page.getByLabel('I understand and agree to the');
63
+ this.optInCheckbox = page.getByLabel('I understand and agree to');
63
64
  this.newContextPadButton = page.getByRole('switch').last();
64
65
  this.newContextPadButtonText = page
65
66
  .locator('[class= "cds--toggle__text"]')
@@ -246,7 +247,7 @@ class ConsoleOrganizationPage {
246
247
  }
247
248
  //Opt-in The Alpha Feature
248
249
  const alphaFeatureOptInButton = alphaFeature.getByRole('button', {
249
- name: 'Opt-in to enable',
250
+ name: 'Opt in to enable',
250
251
  });
251
252
  if (await alphaFeatureOptInButton.isVisible({ timeout: 10000 })) {
252
253
  await alphaFeatureOptInButton.click({ timeout: 90000 });
@@ -273,33 +274,9 @@ class ConsoleOrganizationPage {
273
274
  await (0, test_1.expect)(alphaFeature.locator('[class= "cds--toggle__text"]')).toHaveText('Enabled');
274
275
  }
275
276
  async scrollToOptInCheckbox() {
276
- await this.page
277
- .getByText('Access and Use of the Camunda')
278
- .scrollIntoViewIfNeeded();
279
- await this.page
280
- .getByText('Pre-release. The Customer')
281
- .scrollIntoViewIfNeeded();
282
- await this.page
283
- .getByText('Confidential Information. The')
284
- .scrollIntoViewIfNeeded();
285
- await this.page
286
- .getByText('THESE TERMS DO NOT ENTITLE')
287
- .scrollIntoViewIfNeeded();
288
- await this.page
289
- .getByText('Rights and Obligations Upon')
290
- .scrollIntoViewIfNeeded();
291
- await this.page
292
- .getByText('NOTWITHSTANDING ANYTHING TO')
293
- .scrollIntoViewIfNeeded();
294
- await this.page
295
- .getByRole('heading', { name: 'General' })
296
- .scrollIntoViewIfNeeded();
297
- await this.page
298
- .getByText('Liability. Camunda is liable')
299
- .scrollIntoViewIfNeeded();
300
- await this.page
301
- .getByLabel('I understand and agree to the')
302
- .scrollIntoViewIfNeeded();
277
+ await this.page.locator('.ps-contract-scroll').evaluate((el) => {
278
+ el.scrollTop = el.scrollHeight;
279
+ });
303
280
  }
304
281
  async checkOptInCheckbox() {
305
282
  await this.optInCheckbox.check({ timeout: 90000 });
@@ -323,6 +300,13 @@ class ConsoleOrganizationPage {
323
300
  }
324
301
  }
325
302
  async optInToAlphaFeatures() {
303
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.rows.first(), {
304
+ visibilityTimeout: 60000,
305
+ totalTimeout: 140000,
306
+ postAction: async () => {
307
+ await this.page.reload();
308
+ },
309
+ });
326
310
  try {
327
311
  await (0, test_1.expect)(this.optInButton).toBeVisible({ timeout: 30000 });
328
312
  await this.clickOptInButton();
@@ -147,7 +147,7 @@ class ModelerCreatePage {
147
147
  this.diagramBreadcrumb = page.locator('[data-test="breadcrumb-diagram"]');
148
148
  this.renameDiagramNameButton = page.getByText('Rename');
149
149
  this.diagramNameInput = page.locator('[data-test="editable-input"]');
150
- this.variableInput = page.getByLabel('Variables');
150
+ this.variableInput = page.locator('textarea#variables-json');
151
151
  this.embedFormButton = page.getByRole('button', { name: 'Link form' });
152
152
  this.embedButton = page.locator('[data-test="confirm-move"]');
153
153
  this.newForm = page
@@ -48,10 +48,22 @@ class ClusterDetailsPage {
48
48
  name: 'Create your first Client',
49
49
  });
50
50
  this.clientNameTextbox = page.getByRole('textbox', { name: 'Client Name' });
51
- this.tasklistCheckbox = page.locator('label').filter({ hasText: 'Tasklist' });
52
- this.optimizeCheckbox = page.locator('label').filter({ hasText: 'Optimize' });
53
- this.operateCheckbox = page.locator('label').filter({ hasText: 'Operate' });
54
- this.secretsCheckbox = page.locator('label').filter({ hasText: /^Secrets$/ });
51
+ this.tasklistCheckbox = page
52
+ .getByRole('dialog')
53
+ .locator('label.cds--checkbox-label')
54
+ .filter({ hasText: /^Tasklist$/ });
55
+ this.optimizeCheckbox = page
56
+ .getByRole('dialog')
57
+ .locator('label.cds--checkbox-label')
58
+ .filter({ hasText: /^Optimize$/ });
59
+ this.operateCheckbox = page
60
+ .getByRole('dialog')
61
+ .locator('label.cds--checkbox-label')
62
+ .filter({ hasText: /^Operate$/ });
63
+ this.secretsCheckbox = page
64
+ .getByRole('dialog')
65
+ .locator('label')
66
+ .filter({ hasText: /^Secrets$/ });
55
67
  this.createButton = page.getByRole('button', { name: 'Create', exact: true });
56
68
  this.closeModalButton = page
57
69
  .getByRole('dialog', { name: 'Client credentials', exact: true })
@@ -30,6 +30,7 @@ declare class ClusterPage {
30
30
  readonly clusterHealthiness: (clusterName: string) => Locator;
31
31
  readonly clusterLink: (clusterName: string) => Locator;
32
32
  readonly clusterDeleteButton: (clusterName: string) => Locator;
33
+ readonly dialog: Locator;
33
34
  constructor(page: Page);
34
35
  clickClusterBanner(): Promise<void>;
35
36
  deleteCluster(name: string): Promise<void>;
@@ -36,11 +36,17 @@ class ClusterPage {
36
36
  clusterHealthiness;
37
37
  clusterLink;
38
38
  clusterDeleteButton;
39
+ dialog;
39
40
  constructor(page) {
40
41
  this.page = page;
41
- this.createNewClusterButton = page.getByRole('button', {
42
- name: 'Create new Cluster',
43
- });
42
+ this.dialog = page.getByRole('dialog');
43
+ this.createNewClusterButton = this.createNewClusterButton = page
44
+ .getByRole('button', {
45
+ name: 'Create new cluster',
46
+ })
47
+ .or(this.page.getByRole('button', {
48
+ name: 'Create cluster',
49
+ }));
44
50
  this.clusterNameInput = page.getByPlaceholder('Enter a name for the cluster');
45
51
  this.createClusterButton = page.getByRole('button', {
46
52
  name: 'Create cluster',
@@ -21,8 +21,10 @@ class ClusterSecretsPage {
21
21
  this.createNewSecretButton = page.getByRole('button', {
22
22
  name: 'Create new secret',
23
23
  });
24
- this.keyInput = page.getByLabel('Key');
25
- this.valueInput = page.getByLabel('Value', { exact: true });
24
+ this.keyInput = page.getByRole('dialog').getByLabel('Key');
25
+ this.valueInput = page
26
+ .getByRole('dialog')
27
+ .getByLabel('Value', { exact: true });
26
28
  this.createButton = page.getByRole('button', { name: 'Create', exact: true });
27
29
  this.optionsButton = page
28
30
  .getByRole('cell', { name: 'Options' })
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConsoleOrganizationPage = void 0;
4
4
  const test_1 = require("@playwright/test");
5
5
  const sleep_1 = require("../../utils/sleep");
6
+ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
6
7
  class ConsoleOrganizationPage {
7
8
  page;
8
9
  usersTab;
@@ -67,7 +68,7 @@ class ConsoleOrganizationPage {
67
68
  this.confirmButton = page.getByRole('button', { name: 'Confirm' });
68
69
  this.settingsTab = page.getByRole('tab', { name: 'Settings' });
69
70
  this.optInButton = page.getByRole('button', { name: 'Opt-in', exact: true });
70
- this.optInCheckbox = page.getByLabel('I understand and agree to the');
71
+ this.optInCheckbox = page.getByLabel('I understand and agree to');
71
72
  this.optInAICheckbox = page.getByLabel('I understand and agree to Terms for AI Usage');
72
73
  this.newContextPadButton = page.getByRole('switch').last();
73
74
  this.newContextPadButtonText = page
@@ -281,33 +282,9 @@ class ConsoleOrganizationPage {
281
282
  await this.optInButton.click({ timeout: 60000 });
282
283
  }
283
284
  async scrollToOptInCheckbox() {
284
- await this.page
285
- .getByText('Access and Use of the Camunda')
286
- .scrollIntoViewIfNeeded();
287
- await this.page
288
- .getByText('Pre-release. The Customer')
289
- .scrollIntoViewIfNeeded();
290
- await this.page
291
- .getByText('Confidential Information. The')
292
- .scrollIntoViewIfNeeded();
293
- await this.page
294
- .getByText('THESE TERMS DO NOT ENTITLE')
295
- .scrollIntoViewIfNeeded();
296
- await this.page
297
- .getByText('Rights and Obligations Upon')
298
- .scrollIntoViewIfNeeded();
299
- await this.page
300
- .getByText('NOTWITHSTANDING ANYTHING TO')
301
- .scrollIntoViewIfNeeded();
302
- await this.page
303
- .getByRole('heading', { name: 'General' })
304
- .scrollIntoViewIfNeeded();
305
- await this.page
306
- .getByText('Liability. Camunda is liable')
307
- .scrollIntoViewIfNeeded();
308
- await this.page
309
- .getByLabel('I understand and agree to the')
310
- .scrollIntoViewIfNeeded();
285
+ await this.page.locator('.ps-contract-scroll').evaluate((el) => {
286
+ el.scrollTop = el.scrollHeight;
287
+ });
311
288
  }
312
289
  async checkOptInCheckbox() {
313
290
  await this.optInCheckbox.check({ timeout: 90000 });
@@ -335,7 +312,7 @@ class ConsoleOrganizationPage {
335
312
  }
336
313
  //Opt-in The Alpha Feature
337
314
  const alphaFeatureOptInButton = alphaFeature.getByRole('button', {
338
- name: 'Opt-in to enable',
315
+ name: 'Opt in to enable',
339
316
  });
340
317
  if (await alphaFeatureOptInButton.isVisible({ timeout: 10000 })) {
341
318
  await alphaFeatureOptInButton.click({ timeout: 60000 });
@@ -395,6 +372,13 @@ class ConsoleOrganizationPage {
395
372
  }
396
373
  }
397
374
  async optInToAlphaFeatures() {
375
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.rows.first(), {
376
+ visibilityTimeout: 60000,
377
+ totalTimeout: 140000,
378
+ postAction: async () => {
379
+ await this.page.reload();
380
+ },
381
+ });
398
382
  try {
399
383
  await (0, test_1.expect)(this.optInButton).toBeVisible({ timeout: 30000 });
400
384
  await this.clickOptInButton();
@@ -137,7 +137,7 @@ class ModelerCreatePage {
137
137
  this.diagramBreadcrumb = page.locator('[data-test="breadcrumb-diagram"]');
138
138
  this.renameDiagramNameButton = page.getByText('Rename');
139
139
  this.diagramNameInput = page.locator('[data-test="editable-input"]');
140
- this.variableInput = page.getByLabel('Variables');
140
+ this.variableInput = page.locator('textarea#variables-json');
141
141
  this.embedFormButton = page.getByRole('button', { name: 'Link form' });
142
142
  this.embedButton = page.locator('[data-test="confirm-move"]');
143
143
  this.newForm = page
@@ -55,10 +55,22 @@ class ClusterDetailsPage {
55
55
  name: 'Create your first Client',
56
56
  });
57
57
  this.clientNameTextbox = page.getByRole('textbox', { name: 'Client Name' });
58
- this.tasklistCheckbox = page.locator('label').filter({ hasText: 'Tasklist' });
59
- this.optimizeCheckbox = page.locator('label').filter({ hasText: 'Optimize' });
60
- this.operateCheckbox = page.locator('label').filter({ hasText: 'Operate' });
61
- this.secretsCheckbox = page.locator('label').filter({ hasText: /^Secrets$/ });
58
+ this.tasklistCheckbox = page
59
+ .getByRole('dialog')
60
+ .locator('label')
61
+ .filter({ hasText: 'Tasklist' });
62
+ this.optimizeCheckbox = page
63
+ .getByRole('dialog')
64
+ .locator('label')
65
+ .filter({ hasText: 'Optimize' });
66
+ this.operateCheckbox = page
67
+ .getByRole('dialog')
68
+ .locator('label')
69
+ .filter({ hasText: 'Operate' });
70
+ this.secretsCheckbox = page
71
+ .getByRole('dialog')
72
+ .locator('label')
73
+ .filter({ hasText: /^Secrets$/ });
62
74
  this.createButton = page.getByRole('button', { name: 'Create', exact: true });
63
75
  this.closeModalButton = page
64
76
  .getByRole('dialog', { name: 'Client credentials', exact: true })
@@ -125,7 +137,10 @@ class ClusterDetailsPage {
125
137
  this.envVarsTab = this.clientCredentialsDialog.getByRole('tab', {
126
138
  name: 'Env Vars',
127
139
  });
128
- this.zeebeCheckbox = page.locator('label').filter({ hasText: /^Zeebe$/ });
140
+ this.zeebeCheckbox = page
141
+ .getByRole('dialog')
142
+ .locator('label')
143
+ .filter({ hasText: /^Zeebe$/ });
129
144
  this.apiClientNameTextbox = page.getByRole('textbox', {
130
145
  name: 'Client Name',
131
146
  });
@@ -30,6 +30,7 @@ declare class ClusterPage {
30
30
  readonly cluster: (clusterName: string) => Locator;
31
31
  readonly clusterHealthiness: (clusterName: string) => Locator;
32
32
  readonly clusterLink: (clusterName: string) => Locator;
33
+ readonly dialog: Locator;
33
34
  constructor(page: Page);
34
35
  clickClusterBanner(): Promise<void>;
35
36
  deleteCluster(name: string): Promise<void>;
@@ -37,11 +37,17 @@ class ClusterPage {
37
37
  cluster;
38
38
  clusterHealthiness;
39
39
  clusterLink;
40
+ dialog;
40
41
  constructor(page) {
41
42
  this.page = page;
42
- this.createNewClusterButton = page.getByRole('button', {
43
- name: 'Create new Cluster',
44
- });
43
+ this.dialog = page.getByRole('dialog');
44
+ this.createNewClusterButton = this.createNewClusterButton = page
45
+ .getByRole('button', {
46
+ name: 'Create new cluster',
47
+ })
48
+ .or(this.page.getByRole('button', {
49
+ name: 'Create cluster',
50
+ }));
45
51
  this.clusterNameInput = page.getByPlaceholder('Enter a name for the cluster');
46
52
  this.createClusterButton = page.getByRole('button', {
47
53
  name: 'Create cluster',
@@ -125,6 +131,8 @@ class ClusterPage {
125
131
  await (0, test_1.expect)(deleteButton).toBeVisible({ timeout: 60000 });
126
132
  await deleteButton.click({ force: true, timeout: 60000 });
127
133
  }
134
+ await (0, test_1.expect)(this.dialog).toBeVisible({ timeout: 60000 });
135
+ await (0, test_1.expect)(this.confirmDeleteInput).toBeVisible({ timeout: 60000 });
128
136
  await this.confirmDeleteInput.click({ force: true, timeout: 60000 });
129
137
  await this.confirmDeleteInput.fill('DELETE', { timeout: 60000 });
130
138
  const dangerDeleteButtons = await this.dangerDeleteButton.all();
@@ -133,6 +141,7 @@ class ClusterPage {
133
141
  await (0, test_1.expect)(this.page.getByText('Deleting...')).not.toBeVisible({
134
142
  timeout: 60000,
135
143
  });
144
+ await (0, test_1.expect)(this.dialog).not.toBeVisible({ timeout: 60000 });
136
145
  // Refresh the list of delete buttons
137
146
  deleteButtons = this.cluster(name).getByRole('button', {
138
147
  name: 'Delete',
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConsoleOrganizationPage = void 0;
4
4
  const test_1 = require("@playwright/test");
5
5
  const sleep_1 = require("../../utils/sleep");
6
+ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
6
7
  class ConsoleOrganizationPage {
7
8
  page;
8
9
  usersTab;
@@ -67,7 +68,7 @@ class ConsoleOrganizationPage {
67
68
  this.confirmButton = page.getByRole('button', { name: 'Confirm' });
68
69
  this.settingsTab = page.getByRole('tab', { name: 'Settings' });
69
70
  this.optInButton = page.getByRole('button', { name: 'Opt-in', exact: true });
70
- this.optInCheckbox = page.getByLabel('I understand and agree to the');
71
+ this.optInCheckbox = page.getByLabel('I understand and agree to');
71
72
  this.newContextPadButton = page.getByRole('switch').last();
72
73
  this.newContextPadButtonText = page
73
74
  .locator('[class= "cds--toggle__text"]')
@@ -250,7 +251,7 @@ class ConsoleOrganizationPage {
250
251
  }
251
252
  //Opt-in The Alpha Feature
252
253
  const alphaFeatureOptInButton = alphaFeature.getByRole('button', {
253
- name: 'Opt-in to enable',
254
+ name: 'Opt in to enable',
254
255
  });
255
256
  if (await alphaFeatureOptInButton.isVisible({ timeout: 10000 })) {
256
257
  await alphaFeatureOptInButton.click();
@@ -277,33 +278,9 @@ class ConsoleOrganizationPage {
277
278
  await (0, test_1.expect)(alphaFeature.locator('[class= "cds--toggle__text"]')).toHaveText('Enabled');
278
279
  }
279
280
  async scrollToOptInCheckbox() {
280
- await this.page
281
- .getByText('Access and Use of the Camunda')
282
- .scrollIntoViewIfNeeded();
283
- await this.page
284
- .getByText('Pre-release. The Customer')
285
- .scrollIntoViewIfNeeded();
286
- await this.page
287
- .getByText('Confidential Information. The')
288
- .scrollIntoViewIfNeeded();
289
- await this.page
290
- .getByText('THESE TERMS DO NOT ENTITLE')
291
- .scrollIntoViewIfNeeded();
292
- await this.page
293
- .getByText('Rights and Obligations Upon')
294
- .scrollIntoViewIfNeeded();
295
- await this.page
296
- .getByText('NOTWITHSTANDING ANYTHING TO')
297
- .scrollIntoViewIfNeeded();
298
- await this.page
299
- .getByRole('heading', { name: 'General' })
300
- .scrollIntoViewIfNeeded();
301
- await this.page
302
- .getByText('Liability. Camunda is liable')
303
- .scrollIntoViewIfNeeded();
304
- await this.page
305
- .getByLabel('I understand and agree to the')
306
- .scrollIntoViewIfNeeded();
281
+ await this.page.locator('.ps-contract-scroll').evaluate((el) => {
282
+ el.scrollTop = el.scrollHeight;
283
+ });
307
284
  }
308
285
  async checkOptInCheckbox() {
309
286
  await this.optInCheckbox.check({ timeout: 90000 });
@@ -351,6 +328,13 @@ class ConsoleOrganizationPage {
351
328
  }
352
329
  }
353
330
  async optInToAlphaFeatures() {
331
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.rows.first(), {
332
+ visibilityTimeout: 60000,
333
+ totalTimeout: 140000,
334
+ postAction: async () => {
335
+ await this.page.reload();
336
+ },
337
+ });
354
338
  try {
355
339
  await (0, test_1.expect)(this.optInButton).toBeVisible({ timeout: 30000 });
356
340
  await this.clickOptInButton();
@@ -139,7 +139,7 @@ class ModelerCreatePage {
139
139
  this.diagramBreadcrumb = page.locator('[data-test="breadcrumb-diagram"]');
140
140
  this.renameDiagramNameButton = page.getByText('Rename');
141
141
  this.diagramNameInput = page.locator('[data-test="editable-input"]');
142
- this.variableInput = page.getByLabel('Variables');
142
+ this.variableInput = page.locator('textarea#variables-json');
143
143
  this.embedFormButton = page.getByRole('button', { name: 'Link form' });
144
144
  this.embedButton = page.locator('[data-test="confirm-move"]');
145
145
  this.deployMainButton = page.locator('[data-test="deploy-button"]');
@@ -113,7 +113,10 @@ class ClusterDetailsPage {
113
113
  this.envVarsTab = this.clientCredentialsDialog.getByRole('tab', {
114
114
  name: 'Env Vars',
115
115
  });
116
- this.zeebeCheckbox = page.locator('label').filter({ hasText: /^Zeebe$/ });
116
+ this.zeebeCheckbox = page
117
+ .getByRole('dialog')
118
+ .locator('label')
119
+ .filter({ hasText: /^Zeebe$/ });
117
120
  this.apiClientNameTextbox = page.getByRole('textbox', {
118
121
  name: 'Client Name',
119
122
  });
@@ -33,6 +33,7 @@ declare class ClusterPage {
33
33
  readonly cluster: (clusterName: string) => Locator;
34
34
  readonly clusterHealthiness: (clusterName: string) => Locator;
35
35
  readonly clusterLink: (clusterName: string) => Locator;
36
+ readonly dialog: Locator;
36
37
  constructor(page: Page, testInfo?: TestInfo);
37
38
  clickClusterBanner(): Promise<void>;
38
39
  deleteCluster(name: string): Promise<void>;
@@ -40,12 +40,18 @@ class ClusterPage {
40
40
  cluster;
41
41
  clusterHealthiness;
42
42
  clusterLink;
43
+ dialog;
43
44
  constructor(page, testInfo) {
44
45
  this.page = page;
45
46
  this.testInfo = testInfo;
46
- this.createNewClusterButton = page.getByRole('button', {
47
- name: 'Create new Cluster',
48
- });
47
+ this.dialog = page.getByRole('dialog');
48
+ this.createNewClusterButton = this.createNewClusterButton = page
49
+ .getByRole('button', {
50
+ name: 'Create new cluster',
51
+ })
52
+ .or(this.page.getByRole('button', {
53
+ name: 'Create cluster',
54
+ }));
49
55
  this.clusterNameInput = page.getByPlaceholder('Enter a name for the cluster');
50
56
  this.createClusterButton = page.getByRole('button', {
51
57
  name: 'Create cluster',
@@ -130,6 +136,8 @@ class ClusterPage {
130
136
  await (0, test_1.expect)(deleteButton).toBeVisible({ timeout: 60000 });
131
137
  await deleteButton.click({ force: true, timeout: 60000 });
132
138
  }
139
+ await (0, test_1.expect)(this.dialog).toBeVisible({ timeout: 60000 });
140
+ await (0, test_1.expect)(this.confirmDeleteInput).toBeVisible({ timeout: 60000 });
133
141
  await this.confirmDeleteInput.click({ force: true, timeout: 60000 });
134
142
  await this.confirmDeleteInput.fill('DELETE', { timeout: 60000 });
135
143
  const dangerDeleteButtons = await this.dangerDeleteButton.all();
@@ -138,6 +146,7 @@ class ClusterPage {
138
146
  await (0, test_1.expect)(this.page.getByText('Deleting...')).not.toBeVisible({
139
147
  timeout: 60000,
140
148
  });
149
+ await (0, test_1.expect)(this.dialog).not.toBeVisible({ timeout: 60000 });
141
150
  // Refresh the list of delete buttons
142
151
  deleteButtons = this.cluster(name).getByRole('button', {
143
152
  name: 'Delete',
@@ -28,8 +28,10 @@ class ClusterSecretsPage {
28
28
  this.createNewSecretButton = page.getByRole('button', {
29
29
  name: 'Create new secret',
30
30
  });
31
- this.keyInput = page.getByLabel('Key');
32
- this.valueInput = page.getByLabel('Value', { exact: true });
31
+ this.keyInput = page.getByRole('dialog').getByLabel('Key');
32
+ this.valueInput = page
33
+ .getByRole('dialog')
34
+ .getByLabel('Value', { exact: true });
33
35
  this.createButton = page.getByRole('button', { name: 'Create', exact: true });
34
36
  this.optionsButton = page
35
37
  .getByRole('cell', { name: 'Options' })
@@ -44,7 +46,7 @@ class ClusterSecretsPage {
44
46
  this.dialog = page.getByRole('dialog');
45
47
  this.importButton = page.getByRole('button', { name: 'Import', exact: true });
46
48
  this.fromFileButton = page.getByText('from File', { exact: true });
47
- this.bulkImportTextArea = page.locator('[id="env-content-input-secrets-bulk-import"]');
49
+ this.bulkImportTextArea = page.locator('[id="bulk-import-content"]');
48
50
  this.dialogImportButton = this.page
49
51
  .getByRole('dialog')
50
52
  .getByRole('button', { name: 'Import', exact: true });
@@ -208,7 +210,7 @@ class ClusterSecretsPage {
208
210
  await this.bulkImportTextArea.click();
209
211
  await this.bulkImportTextArea.fill(mapped);
210
212
  await this.dialogImportButton.click();
211
- await (0, test_1.expect)(this.page.getByText('Importing secrets...')).not.toBeVisible({
213
+ await (0, test_1.expect)(this.dialog).not.toBeVisible({
212
214
  timeout: 60000,
213
215
  });
214
216
  await (0, test_1.expect)(this.createNewSecretButton).toBeVisible({
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConsoleOrganizationPage = void 0;
4
4
  const test_1 = require("@playwright/test");
5
5
  const sleep_1 = require("../../utils/sleep");
6
+ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
6
7
  class ConsoleOrganizationPage {
7
8
  page;
8
9
  usersTab;
@@ -59,7 +60,7 @@ class ConsoleOrganizationPage {
59
60
  this.confirmButton = page.getByRole('button', { name: 'Confirm' });
60
61
  this.settingsTab = page.getByRole('tab', { name: 'Settings' });
61
62
  this.optInButton = page.getByRole('button', { name: 'Opt-in', exact: true });
62
- this.optInCheckbox = page.getByLabel('I understand and agree to the');
63
+ this.optInCheckbox = page.getByLabel('I understand and agree to');
63
64
  this.newContextPadButton = page.getByRole('switch').last();
64
65
  this.newContextPadButtonText = page
65
66
  .locator('[class= "cds--toggle__text"]')
@@ -246,7 +247,7 @@ class ConsoleOrganizationPage {
246
247
  }
247
248
  //Opt-in The Alpha Feature
248
249
  const alphaFeatureOptInButton = alphaFeature.getByRole('button', {
249
- name: 'Opt-in to enable',
250
+ name: 'Opt in to enable',
250
251
  });
251
252
  if (await alphaFeatureOptInButton.isVisible({ timeout: 10000 })) {
252
253
  await alphaFeatureOptInButton.click({ timeout: 90000 });
@@ -273,33 +274,9 @@ class ConsoleOrganizationPage {
273
274
  await (0, test_1.expect)(alphaFeature.locator('[class= "cds--toggle__text"]')).toHaveText('Enabled');
274
275
  }
275
276
  async scrollToOptInCheckbox() {
276
- await this.page
277
- .getByText('Access and Use of the Camunda')
278
- .scrollIntoViewIfNeeded();
279
- await this.page
280
- .getByText('Pre-release. The Customer')
281
- .scrollIntoViewIfNeeded();
282
- await this.page
283
- .getByText('Confidential Information. The')
284
- .scrollIntoViewIfNeeded();
285
- await this.page
286
- .getByText('THESE TERMS DO NOT ENTITLE')
287
- .scrollIntoViewIfNeeded();
288
- await this.page
289
- .getByText('Rights and Obligations Upon')
290
- .scrollIntoViewIfNeeded();
291
- await this.page
292
- .getByText('NOTWITHSTANDING ANYTHING TO')
293
- .scrollIntoViewIfNeeded();
294
- await this.page
295
- .getByRole('heading', { name: 'General' })
296
- .scrollIntoViewIfNeeded();
297
- await this.page
298
- .getByText('Liability. Camunda is liable')
299
- .scrollIntoViewIfNeeded();
300
- await this.page
301
- .getByLabel('I understand and agree to the')
302
- .scrollIntoViewIfNeeded();
277
+ await this.page.locator('.ps-contract-scroll').evaluate((el) => {
278
+ el.scrollTop = el.scrollHeight;
279
+ });
303
280
  }
304
281
  async checkOptInCheckbox() {
305
282
  await this.optInCheckbox.check({ timeout: 90000 });
@@ -323,6 +300,13 @@ class ConsoleOrganizationPage {
323
300
  }
324
301
  }
325
302
  async optInToAlphaFeatures() {
303
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.rows.first(), {
304
+ visibilityTimeout: 60000,
305
+ totalTimeout: 140000,
306
+ postAction: async () => {
307
+ await this.page.reload();
308
+ },
309
+ });
326
310
  try {
327
311
  await (0, test_1.expect)(this.optInButton).toBeVisible({ timeout: 30000 });
328
312
  await this.clickOptInButton();
@@ -56,11 +56,18 @@ class ClusterDetailsPage {
56
56
  name: 'Create your first Client',
57
57
  });
58
58
  this.clientNameTextbox = page.getByRole('textbox', { name: 'Client Name' });
59
- this.tasklistCheckbox = page.locator('label').filter({ hasText: 'Tasklist' });
59
+ this.tasklistCheckbox = page
60
+ .getByRole('dialog')
61
+ .locator('label')
62
+ .filter({ hasText: 'Tasklist' });
60
63
  this.optimizeCheckbox = page
64
+ .getByRole('dialog')
61
65
  .locator('label')
62
66
  .filter({ hasText: /^Optimize API$/ });
63
- this.operateCheckbox = page.locator('label').filter({ hasText: 'Operate' });
67
+ this.operateCheckbox = page
68
+ .getByRole('dialog')
69
+ .locator('label')
70
+ .filter({ hasText: 'Operate' });
64
71
  this.secretsCheckbox = page
65
72
  .locator('label')
66
73
  .filter({ hasText: /^Administration API - Resource: Secrets$/ });
@@ -116,7 +123,10 @@ class ClusterDetailsPage {
116
123
  this.envVarsTab = this.clientCredentialsDialog.getByRole('tab', {
117
124
  name: 'Env Vars',
118
125
  });
119
- this.zeebeCheckbox = page.locator('label').filter({ hasText: /^Zeebe$/ });
126
+ this.zeebeCheckbox = page
127
+ .getByRole('dialog')
128
+ .locator('label')
129
+ .filter({ hasText: /^Zeebe$/ });
120
130
  this.apiClientNameTextbox = page.getByRole('textbox', {
121
131
  name: 'Client Name',
122
132
  });
@@ -33,6 +33,7 @@ declare class ClusterPage {
33
33
  readonly cluster: (clusterName: string) => Locator;
34
34
  readonly clusterHealthiness: (clusterName: string) => Locator;
35
35
  readonly clusterLink: (clusterName: string) => Locator;
36
+ readonly dialog: Locator;
36
37
  constructor(page: Page, testInfo?: TestInfo);
37
38
  clickClusterBanner(): Promise<void>;
38
39
  deleteCluster(name: string): Promise<void>;
@@ -39,12 +39,18 @@ class ClusterPage {
39
39
  cluster;
40
40
  clusterHealthiness;
41
41
  clusterLink;
42
+ dialog;
42
43
  constructor(page, testInfo) {
43
44
  this.page = page;
44
45
  this.testInfo = testInfo;
45
- this.createNewClusterButton = page.getByRole('button', {
46
- name: 'Create new Cluster',
47
- });
46
+ this.dialog = page.getByRole('dialog');
47
+ this.createNewClusterButton = this.createNewClusterButton = page
48
+ .getByRole('button', {
49
+ name: 'Create new cluster',
50
+ })
51
+ .or(this.page.getByRole('button', {
52
+ name: 'Create cluster',
53
+ }));
48
54
  this.clusterNameInput = page.getByPlaceholder('Enter a name for the cluster');
49
55
  this.createClusterButton = page.getByRole('button', {
50
56
  name: 'Create cluster',
@@ -129,6 +135,8 @@ class ClusterPage {
129
135
  await (0, test_1.expect)(deleteButton).toBeVisible({ timeout: 60000 });
130
136
  await deleteButton.click({ force: true, timeout: 60000 });
131
137
  }
138
+ await (0, test_1.expect)(this.dialog).toBeVisible({ timeout: 60000 });
139
+ await (0, test_1.expect)(this.confirmDeleteInput).toBeVisible({ timeout: 60000 });
132
140
  await this.confirmDeleteInput.click({ force: true, timeout: 60000 });
133
141
  await this.confirmDeleteInput.fill('DELETE', { timeout: 60000 });
134
142
  const dangerDeleteButtons = await this.dangerDeleteButton.all();
@@ -137,6 +145,7 @@ class ClusterPage {
137
145
  await (0, test_1.expect)(this.page.getByText('Deleting...')).not.toBeVisible({
138
146
  timeout: 60000,
139
147
  });
148
+ await (0, test_1.expect)(this.dialog).not.toBeVisible({ timeout: 60000 });
140
149
  // Refresh the list of delete buttons
141
150
  deleteButtons = this.cluster(name).getByRole('button', {
142
151
  name: 'Delete',
@@ -28,8 +28,10 @@ class ClusterSecretsPage {
28
28
  this.createNewSecretButton = page.getByRole('button', {
29
29
  name: 'Create new secret',
30
30
  });
31
- this.keyInput = page.getByLabel('Key');
32
- this.valueInput = page.getByLabel('Value', { exact: true });
31
+ this.keyInput = page.getByRole('dialog').getByLabel('Key');
32
+ this.valueInput = page
33
+ .getByRole('dialog')
34
+ .getByLabel('Value', { exact: true });
33
35
  this.createButton = page.getByRole('button', { name: 'Create', exact: true });
34
36
  this.optionsButton = page
35
37
  .getByRole('cell', { name: 'Options' })
@@ -44,7 +46,7 @@ class ClusterSecretsPage {
44
46
  this.dialog = page.getByRole('dialog');
45
47
  this.importButton = page.getByRole('button', { name: 'Import', exact: true });
46
48
  this.fromFileButton = page.getByText('from File', { exact: true });
47
- this.bulkImportTextArea = page.locator('[id="env-content-input-secrets-bulk-import"]');
49
+ this.bulkImportTextArea = page.locator('[id="bulk-import-content"]');
48
50
  this.dialogImportButton = this.page
49
51
  .getByRole('dialog')
50
52
  .getByRole('button', { name: 'Import', exact: true });
@@ -208,7 +210,7 @@ class ClusterSecretsPage {
208
210
  await this.bulkImportTextArea.click();
209
211
  await this.bulkImportTextArea.fill(mapped);
210
212
  await this.dialogImportButton.click();
211
- await (0, test_1.expect)(this.page.getByText('Importing secrets...')).not.toBeVisible({
213
+ await (0, test_1.expect)(this.dialog).not.toBeVisible({
212
214
  timeout: 60000,
213
215
  });
214
216
  await (0, test_1.expect)(this.createNewSecretButton).toBeVisible({
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConsoleOrganizationPage = void 0;
4
4
  const test_1 = require("@playwright/test");
5
5
  const sleep_1 = require("../../utils/sleep");
6
+ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
6
7
  class ConsoleOrganizationPage {
7
8
  page;
8
9
  usersTab;
@@ -59,7 +60,7 @@ class ConsoleOrganizationPage {
59
60
  this.confirmButton = page.getByRole('button', { name: 'Confirm' });
60
61
  this.settingsTab = page.getByRole('tab', { name: 'Settings' });
61
62
  this.optInButton = page.getByRole('button', { name: 'Opt-in', exact: true });
62
- this.optInCheckbox = page.getByLabel('I understand and agree to the');
63
+ this.optInCheckbox = page.getByLabel('I understand and agree to');
63
64
  this.newContextPadButton = page.getByRole('switch').last();
64
65
  this.newContextPadButtonText = page
65
66
  .locator('[class= "cds--toggle__text"]')
@@ -246,7 +247,7 @@ class ConsoleOrganizationPage {
246
247
  }
247
248
  //Opt-in The Alpha Feature
248
249
  const alphaFeatureOptInButton = alphaFeature.getByRole('button', {
249
- name: 'Opt-in to enable',
250
+ name: 'Opt in to enable',
250
251
  });
251
252
  if (await alphaFeatureOptInButton.isVisible({ timeout: 10000 })) {
252
253
  await alphaFeatureOptInButton.click({ timeout: 90000 });
@@ -273,33 +274,9 @@ class ConsoleOrganizationPage {
273
274
  await (0, test_1.expect)(alphaFeature.locator('[class= "cds--toggle__text"]')).toHaveText('Enabled');
274
275
  }
275
276
  async scrollToOptInCheckbox() {
276
- await this.page
277
- .getByText('Access and Use of the Camunda')
278
- .scrollIntoViewIfNeeded();
279
- await this.page
280
- .getByText('Pre-release. The Customer')
281
- .scrollIntoViewIfNeeded();
282
- await this.page
283
- .getByText('Confidential Information. The')
284
- .scrollIntoViewIfNeeded();
285
- await this.page
286
- .getByText('THESE TERMS DO NOT ENTITLE')
287
- .scrollIntoViewIfNeeded();
288
- await this.page
289
- .getByText('Rights and Obligations Upon')
290
- .scrollIntoViewIfNeeded();
291
- await this.page
292
- .getByText('NOTWITHSTANDING ANYTHING TO')
293
- .scrollIntoViewIfNeeded();
294
- await this.page
295
- .getByRole('heading', { name: 'General' })
296
- .scrollIntoViewIfNeeded();
297
- await this.page
298
- .getByText('Liability. Camunda is liable')
299
- .scrollIntoViewIfNeeded();
300
- await this.page
301
- .getByLabel('I understand and agree to the')
302
- .scrollIntoViewIfNeeded();
277
+ await this.page.locator('.ps-contract-scroll').evaluate((el) => {
278
+ el.scrollTop = el.scrollHeight;
279
+ });
303
280
  }
304
281
  async checkOptInCheckbox() {
305
282
  await this.optInCheckbox.check({ timeout: 90000 });
@@ -323,6 +300,13 @@ class ConsoleOrganizationPage {
323
300
  }
324
301
  }
325
302
  async optInToAlphaFeatures() {
303
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.rows.first(), {
304
+ visibilityTimeout: 60000,
305
+ totalTimeout: 140000,
306
+ postAction: async () => {
307
+ await this.page.reload();
308
+ },
309
+ });
326
310
  try {
327
311
  await (0, test_1.expect)(this.optInButton).toBeVisible({ timeout: 30000 });
328
312
  await this.clickOptInButton();
@@ -14,15 +14,13 @@ _8_10_1.test.describe('Cluster Setup Tests', () => {
14
14
  await (0, _setup_1.captureScreenshot)(page, testInfo);
15
15
  await (0, _setup_1.captureFailureVideo)(page, testInfo);
16
16
  });
17
- (0, _8_10_1.test)('Enable Alpha Features', async ({ page, homePage, loginPage, consoleOrganizationsPage, }, testInfo) => {
17
+ (0, _8_10_1.test)('Enable Alpha Features', async ({ page, loginPage, consoleOrganizationsPage, homePage, }, testInfo) => {
18
18
  if (process.env.IS_PROD === 'true') {
19
19
  _8_10_1.test.skip(true, 'Skipping test because not required on PROD test org');
20
20
  }
21
21
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
22
22
  await homePage.clickOrganization();
23
- await (0, test_1.expect)(consoleOrganizationsPage.settingsTab).toBeVisible({
24
- timeout: 60000,
25
- });
23
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, consoleOrganizationsPage.settingsTab, 'settings tab', 60000, false, 2);
26
24
  await consoleOrganizationsPage.clickSettingsTab();
27
25
  await consoleOrganizationsPage.optInToAlphaFeatures();
28
26
  await (0, sleep_1.sleep)(30000);
@@ -13,15 +13,13 @@ _8_6_1.test.describe('Cluster Setup Tests', () => {
13
13
  await (0, _setup_1.captureScreenshot)(page, testInfo);
14
14
  await (0, _setup_1.captureFailureVideo)(page, testInfo);
15
15
  });
16
- (0, _8_6_1.test)('Enable Alpha Features', async ({ page, homePage, loginPage, consoleOrganizationsPage, }, testInfo) => {
16
+ (0, _8_6_1.test)('Enable Alpha Features', async ({ page, loginPage, consoleOrganizationsPage, homePage, }, testInfo) => {
17
17
  if (process.env.IS_PROD === 'true') {
18
18
  _8_6_1.test.skip(true, 'Skipping test because not required on PROD test org');
19
19
  }
20
20
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
21
21
  await homePage.clickOrganization();
22
- await (0, test_1.expect)(consoleOrganizationsPage.settingsTab).toBeVisible({
23
- timeout: 60000,
24
- });
22
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, consoleOrganizationsPage.settingsTab, 'settings tab', 60000, 2);
25
23
  await consoleOrganizationsPage.clickSettingsTab();
26
24
  await consoleOrganizationsPage.optInToAlphaFeatures();
27
25
  await (0, sleep_1.sleep)(30000);
@@ -179,7 +179,7 @@ _8_7_1.test.describe('Console User Flow Tests', () => {
179
179
  const operateTabPromise = page.waitForEvent('popup', { timeout: 60000 });
180
180
  const operateTab = await operateTabPromise;
181
181
  const operateTabProcessInstancePage = new OperateProcessInstancePage_1.OperateProcessInstancePage(operateTab);
182
- await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTabProcessInstancePage, operateTabProcessInstancePage.completedIcon, 'completed icon in Operate', 60000);
182
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(operateTabProcessInstancePage, operateTabProcessInstancePage.completedIcon, 'completed icon in Operate', 60000, 2);
183
183
  });
184
184
  });
185
185
  });
@@ -13,15 +13,13 @@ _8_7_1.test.describe('Cluster Setup Tests', () => {
13
13
  await (0, _setup_1.captureScreenshot)(page, testInfo);
14
14
  await (0, _setup_1.captureFailureVideo)(page, testInfo);
15
15
  });
16
- (0, _8_7_1.test)('Enable Alpha Features', async ({ page, homePage, loginPage, consoleOrganizationsPage, }, testInfo) => {
16
+ (0, _8_7_1.test)('Enable Alpha Features', async ({ page, loginPage, consoleOrganizationsPage, homePage, }, testInfo) => {
17
17
  if (process.env.IS_PROD === 'true') {
18
18
  _8_7_1.test.skip(true, 'Skipping test because not required on PROD test org');
19
19
  }
20
20
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
21
21
  await homePage.clickOrganization();
22
- await (0, test_1.expect)(consoleOrganizationsPage.settingsTab).toBeVisible({
23
- timeout: 60000,
24
- });
22
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, consoleOrganizationsPage.settingsTab, 'settings tab', 60000, 2);
25
23
  await consoleOrganizationsPage.clickSettingsTab();
26
24
  await consoleOrganizationsPage.optInToAlphaFeatures();
27
25
  await (0, sleep_1.sleep)(30000);
@@ -14,15 +14,13 @@ _8_8_1.test.describe('Cluster Setup Tests', () => {
14
14
  await (0, _setup_1.captureScreenshot)(page, testInfo);
15
15
  await (0, _setup_1.captureFailureVideo)(page, testInfo);
16
16
  });
17
- (0, _8_8_1.test)('Enable Alpha Features', async ({ page, homePage, loginPage, consoleOrganizationsPage, }, testInfo) => {
17
+ (0, _8_8_1.test)('Enable Alpha Features', async ({ page, loginPage, consoleOrganizationsPage, homePage, }, testInfo) => {
18
18
  if (process.env.IS_PROD === 'true') {
19
19
  _8_8_1.test.skip(true, 'Skipping test because not required on PROD test org');
20
20
  }
21
21
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
22
22
  await homePage.clickOrganization();
23
- await (0, test_1.expect)(consoleOrganizationsPage.settingsTab).toBeVisible({
24
- timeout: 60000,
25
- });
23
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, consoleOrganizationsPage.settingsTab, 'settings tab', 60000, false, 2);
26
24
  await consoleOrganizationsPage.clickSettingsTab();
27
25
  await consoleOrganizationsPage.optInToAlphaFeatures();
28
26
  await (0, sleep_1.sleep)(30000);
@@ -15,15 +15,13 @@ _8_9_1.test.describe('Cluster Setup Tests', () => {
15
15
  await (0, _setup_1.captureScreenshot)(page, testInfo);
16
16
  await (0, _setup_1.captureFailureVideo)(page, testInfo);
17
17
  });
18
- (0, _8_9_1.test)('Enable Alpha Features', async ({ page, homePage, loginPage, consoleOrganizationsPage, }, testInfo) => {
18
+ (0, _8_9_1.test)('Enable Alpha Features', async ({ page, loginPage, consoleOrganizationsPage, homePage, }, testInfo) => {
19
19
  if (process.env.IS_PROD === 'true') {
20
20
  _8_9_1.test.skip(true, 'Skipping test because not required on PROD test org');
21
21
  }
22
22
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
23
23
  await homePage.clickOrganization();
24
- await (0, test_1.expect)(consoleOrganizationsPage.settingsTab).toBeVisible({
25
- timeout: 60000,
26
- });
24
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, consoleOrganizationsPage.settingsTab, 'settings tab', 60000, false, 2);
27
25
  await consoleOrganizationsPage.clickSettingsTab();
28
26
  await consoleOrganizationsPage.optInToAlphaFeatures();
29
27
  await (0, sleep_1.sleep)(30000);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.270",
3
+ "version": "0.0.272",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",