@camunda/e2e-test-suite 0.0.224 → 0.0.226

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.
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HomePage = void 0;
4
4
  const test_1 = require("@playwright/test");
5
+ const sleep_1 = require("../../utils/sleep");
5
6
  class HomePage {
6
7
  page;
7
8
  dashboardTab;
@@ -81,6 +82,7 @@ class HomePage {
81
82
  });
82
83
  await this.buttonSkipCustomization.click({ timeout: 60000 });
83
84
  await this.closeInformationDialog();
85
+ await (0, sleep_1.sleep)(1000);
84
86
  return;
85
87
  }
86
88
  catch (error) {
@@ -91,6 +91,7 @@ declare class ModelerCreatePage {
91
91
  readonly copyPublicLinkButton: Locator;
92
92
  readonly formLinkedSuccessMessage: Locator;
93
93
  readonly diagramNameBreadcrumb: (diagramName: string) => Locator;
94
+ readonly dialog: Locator;
94
95
  constructor(page: Page);
95
96
  modelJobWorkerDiagram(processName: string, embedFrom?: boolean): Promise<void>;
96
97
  assertProcessInstanceLinkWithRetry(clusterName: string): Promise<void>;
@@ -185,7 +186,8 @@ declare class ModelerCreatePage {
185
186
  clickJobTypeInput(): Promise<void>;
186
187
  fillJobTypeInput(name: string): Promise<void>;
187
188
  switchToPlay(): Promise<void>;
188
- completePlayConfiguration(): Promise<void>;
189
+ completePlayConfiguration(clusterName: string): Promise<void>;
190
+ selectCluster(clusterName: string): Promise<void>;
189
191
  clickCandidateGroupsInput(): Promise<void>;
190
192
  fillCandidateGroupsInput(name: string): Promise<void>;
191
193
  clickTimerEventOption(): Promise<void>;
@@ -97,6 +97,7 @@ class ModelerCreatePage {
97
97
  copyPublicLinkButton;
98
98
  formLinkedSuccessMessage;
99
99
  diagramNameBreadcrumb;
100
+ dialog;
100
101
  constructor(page) {
101
102
  this.page = page;
102
103
  this.generalPanel = page.locator('[data-group-id="group-general"]');
@@ -270,6 +271,7 @@ class ModelerCreatePage {
270
271
  this.diagramNameBreadcrumb = (diagramName) => page.locator('button[data-test="breadcrumb-diagram"]', {
271
272
  hasText: diagramName,
272
273
  });
274
+ this.dialog = page.getByRole('dialog');
273
275
  }
274
276
  async modelJobWorkerDiagram(processName, embedFrom = false) {
275
277
  await (0, test_1.expect)(this.generalPanel).toBeVisible({
@@ -316,6 +318,7 @@ class ModelerCreatePage {
316
318
  await (0, test_1.expect)(this.generalPanel).toBeVisible({
317
319
  timeout: 180000,
318
320
  });
321
+ await (0, sleep_1.sleep)(1000);
319
322
  await this.enterDiagramName(processName);
320
323
  await (0, sleep_1.sleep)(10000);
321
324
  if (processId.length > 0) {
@@ -323,6 +326,8 @@ class ModelerCreatePage {
323
326
  await this.clickGeneralPropertiesPanel();
324
327
  await this.clickIdInput();
325
328
  await this.fillIdInput(processId);
329
+ await this.clickNameInput();
330
+ await this.fillNameInput(processName);
326
331
  await this.clickStartEventElement();
327
332
  }
328
333
  await this.clickAppendElementButton();
@@ -985,7 +990,7 @@ class ModelerCreatePage {
985
990
  async switchToPlay() {
986
991
  await this.playTab.click();
987
992
  }
988
- async completePlayConfiguration() {
993
+ async completePlayConfiguration(clusterName) {
989
994
  const timeout = 30000;
990
995
  let attempts = 0;
991
996
  const maxRetries = 2;
@@ -993,6 +998,7 @@ class ModelerCreatePage {
993
998
  try {
994
999
  if (attempts > 0)
995
1000
  await this.switchToPlay(); // Call switchToPlay on subsequent attempts
1001
+ await this.selectCluster(clusterName);
996
1002
  await this.continueToPlayButton.click({ timeout });
997
1003
  await (0, test_1.expect)(this.page.getByText('Play environment is ready')).toBeVisible({ timeout: 90000 });
998
1004
  return; // Exit if successful
@@ -1005,6 +1011,21 @@ class ModelerCreatePage {
1005
1011
  }
1006
1012
  }
1007
1013
  }
1014
+ async selectCluster(clusterName) {
1015
+ await (0, test_1.expect)(this.dialog).toBeVisible({ timeout: 30000 });
1016
+ const healthCheckTimeout = 30000;
1017
+ const healthyRegex = new RegExp(`${clusterName}.*?HealthydevManage`);
1018
+ const cluster = this.dialog.getByText(clusterName);
1019
+ await (0, test_1.expect)(cluster).toBeVisible({ timeout: 30000 });
1020
+ await cluster.click();
1021
+ await (0, test_1.expect)(this.dialog
1022
+ .locator('label')
1023
+ .filter({ hasText: clusterName })
1024
+ .getByRole('switch')).toBeChecked({ timeout: 30000 });
1025
+ await (0, test_1.expect)(this.dialog).toHaveText(healthyRegex, {
1026
+ timeout: healthCheckTimeout,
1027
+ });
1028
+ }
1008
1029
  async clickCandidateGroupsInput() {
1009
1030
  await this.candidateGroupsInput.click({ timeout: 60000 });
1010
1031
  }
@@ -21,6 +21,7 @@ declare class ModelerHomePage {
21
21
  readonly closeButton: Locator;
22
22
  readonly cancelButton: Locator;
23
23
  readonly optionsButton: Locator;
24
+ readonly dialog: Locator;
24
25
  readonly formNameBreadcrumb: (formName: string) => Locator;
25
26
  constructor(page: Page);
26
27
  clickCreateNewProjectButton(): Promise<void>;
@@ -26,6 +26,7 @@ class ModelerHomePage {
26
26
  closeButton;
27
27
  cancelButton;
28
28
  optionsButton;
29
+ dialog;
29
30
  formNameBreadcrumb;
30
31
  constructor(page) {
31
32
  this.page = page;
@@ -62,6 +63,7 @@ class ModelerHomePage {
62
63
  this.closeButton = page.getByRole('button', { name: 'Got it - Dismiss' });
63
64
  this.cancelButton = page.getByRole('button', { name: 'Cancel' });
64
65
  this.optionsButton = page.getByRole('button', { name: 'Options' });
66
+ this.dialog = page.getByRole('dialog');
65
67
  this.formNameBreadcrumb = (formName) => page.locator('button[data-test="breadcrumb-form"]', {
66
68
  hasText: formName,
67
69
  });
@@ -174,6 +176,7 @@ class ModelerHomePage {
174
176
  .first();
175
177
  await (0, test_1.expect)(button).toBeVisible({ timeout: 15000 });
176
178
  await button.click();
179
+ await (0, test_1.expect)(this.dialog).not.toBeVisible();
177
180
  }
178
181
  catch {
179
182
  console.log('No banner or close button found to click');
@@ -25,8 +25,7 @@ _8_10_1.test.describe('Optimize User Flow Tests', () => {
25
25
  await (0, _setup_1.captureScreenshot)(page, testInfo);
26
26
  await (0, _setup_1.captureFailureVideo)(page, testInfo);
27
27
  });
28
- //Skipped due to bug 46344: https://github.com/camunda/camunda/issues/46344
29
- _8_10_1.test.skip('Job Worker User Task User Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, }) => {
28
+ (0, _8_10_1.test)('Job Worker User Task User Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, }) => {
30
29
  _8_10_1.test.slow();
31
30
  const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
32
31
  const processName = 'Optimize Job Worker User Task Diagram' + reportName;
@@ -126,8 +125,7 @@ _8_10_1.test.describe('Optimize User Flow Tests', () => {
126
125
  await (0, test_1.expect)(newOptimizeTabOptimizeReportPage.oneUserTaskInstance).not.toBeVisible();
127
126
  });
128
127
  });
129
- //Skipped due to bug 46344: https://github.com/camunda/camunda/issues/46344
130
- _8_10_1.test.skip('New Instances Updated Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, optimizeCollectionsPage, optimizeReportPage, optimizeHomePage, }) => {
128
+ (0, _8_10_1.test)('New Instances Updated Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, optimizeCollectionsPage, optimizeReportPage, optimizeHomePage, }) => {
131
129
  _8_10_1.test.slow();
132
130
  const reportName = await (0, _setup_1.generateRandomStringAsync)(5);
133
131
  const processName = 'Optimize Job Worker New Instances Updated Flow' + reportName;
@@ -209,8 +207,7 @@ _8_10_1.test.describe('Optimize User Flow Tests', () => {
209
207
  await (0, test_1.expect)(newOperateTab.getByText('Displaying data from 1 instance.')).toBeVisible({ timeout: 90000 });
210
208
  });
211
209
  });
212
- //Skipped due to bug 46344: https://github.com/camunda/camunda/issues/46344
213
- _8_10_1.test.skip('Process Import Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, }) => {
210
+ (0, _8_10_1.test)('Process Import Flow @tasklistV1', async ({ page, homePage, modelerHomePage, appsPage, modelerCreatePage, }) => {
214
211
  _8_10_1.test.slow();
215
212
  const processName = 'Process Import Flow' + (await (0, _setup_1.generateRandomStringAsync)(6));
216
213
  await _8_10_1.test.step('Navigate to Web Modeler', async () => {
@@ -9,6 +9,7 @@ const users_1 = require("../../utils/users");
9
9
  const testUser = (0, users_1.getTestUser)('twentyFourthUser');
10
10
  _8_6_1.test.describe.configure({ mode: 'parallel' });
11
11
  _8_6_1.test.describe('Deploy and run a process in Play', () => {
12
+ const clusterName = 'Test Cluster';
12
13
  _8_6_1.test.beforeEach(async ({ page, loginPage }, testInfo) => {
13
14
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, testUser, (testInfo.workerIndex + 1) * 1000);
14
15
  });
@@ -72,7 +73,7 @@ _8_6_1.test.describe('Deploy and run a process in Play', () => {
72
73
  });
73
74
  await _8_6_1.test.step('Open Play', async () => {
74
75
  await modelerCreatePage.switchToPlay();
75
- await modelerCreatePage.completePlayConfiguration();
76
+ await modelerCreatePage.completePlayConfiguration(clusterName);
76
77
  });
77
78
  await _8_6_1.test.step('Start and complete the process instance in Play', async () => {
78
79
  await playPage.dismissStartModal();
@@ -147,7 +147,7 @@ _8_6_1.test.describe('Smoke Tests', () => {
147
147
  await appsPage.clickCamundaApps();
148
148
  await appsPage.clickModeler();
149
149
  await (0, test_1.expect)(modelerHomePage.modelerPageBanner).toBeVisible({
150
- timeout: 10000,
150
+ timeout: 30000,
151
151
  });
152
152
  });
153
153
  await _8_6_1.test.step('Open Cross Component Test Project and Create a BPMN Diagram Template', async () => {
@@ -14,6 +14,7 @@ const mailSlurpClient_1 = require("../../utils/mailSlurpClient");
14
14
  const resetSession_1 = require("../../utils/resetSession");
15
15
  const users_1 = require("../../utils/users");
16
16
  const node_crypto_1 = require("node:crypto");
17
+ const expectLocatorWithRetry_1 = require("../../utils/assertionHelpers/expectLocatorWithRetry");
17
18
  const testUser = (0, users_1.getTestUser)('eleventhUser');
18
19
  _8_6_1.test.describe.configure({ mode: 'parallel' });
19
20
  _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
@@ -655,8 +656,10 @@ _8_6_1.test.describe('Web Modeler User Flow Tests', () => {
655
656
  await _8_6_1.test.step('Access Public Form After Session Reset and Submit the Form', async () => {
656
657
  console.log('Navigating to public form:', publicFormLink);
657
658
  await page.goto(publicFormLink);
658
- await (0, test_1.expect)(taskDetailsPage.textInput).toBeVisible({
659
- timeout: 60000,
659
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(page, taskDetailsPage.textInput, {
660
+ postAction: async () => {
661
+ await page.goto(publicFormLink);
662
+ },
660
663
  });
661
664
  await taskDetailsPage.fillTextInput('Public Form Test Value');
662
665
  await taskDetailsPage.clickSubmitButton();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.224",
3
+ "version": "0.0.226",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",