@camunda/e2e-test-suite 0.0.404 → 0.0.406

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.
@@ -5,12 +5,14 @@ declare class ConnectorMarketplacePage {
5
5
  readonly downloadToProjectButton: Locator;
6
6
  readonly replaceResourceButton: Locator;
7
7
  readonly cancelButton: Locator;
8
+ readonly marketplaceErrorMessage: Locator;
8
9
  constructor(page: Page);
9
10
  clickSearchForConnectorTextbox(): Promise<void>;
10
11
  fillSearchForConnectorTextbox(connectorName: string): Promise<void>;
11
12
  clickDownloadToProjectButton(): Promise<void>;
12
13
  clickCancelButton(): Promise<void>;
13
14
  clickReplaceResourceButton(): Promise<void>;
15
+ waitForConnectorSearchResults(): Promise<void>;
14
16
  downloadConnectorToProject(): Promise<void>;
15
17
  }
16
18
  export { ConnectorMarketplacePage };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConnectorMarketplacePage = void 0;
4
+ const test_1 = require("@playwright/test");
4
5
  const sleep_1 = require("../../utils/sleep");
5
6
  class ConnectorMarketplacePage {
6
7
  page;
@@ -8,6 +9,7 @@ class ConnectorMarketplacePage {
8
9
  downloadToProjectButton;
9
10
  replaceResourceButton;
10
11
  cancelButton;
12
+ marketplaceErrorMessage;
11
13
  constructor(page) {
12
14
  this.page = page;
13
15
  this.searchForConnectorTextbox = page.getByPlaceholder('Search for a connector');
@@ -18,6 +20,7 @@ class ConnectorMarketplacePage {
18
20
  this.replaceResourceButton = page.getByRole('button', {
19
21
  name: 'Replace resource',
20
22
  });
23
+ this.marketplaceErrorMessage = page.getByText('an error occurred, please try again later');
21
24
  }
22
25
  async clickSearchForConnectorTextbox() {
23
26
  await this.searchForConnectorTextbox.click({ timeout: 60000 });
@@ -36,6 +39,24 @@ class ConnectorMarketplacePage {
36
39
  async clickReplaceResourceButton() {
37
40
  await this.replaceResourceButton.click({ timeout: 30000 });
38
41
  }
42
+ async waitForConnectorSearchResults() {
43
+ const MAX_RETRIES = 3;
44
+ for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
45
+ await (0, test_1.expect)(this.downloadToProjectButton.or(this.marketplaceErrorMessage)).toBeVisible({ timeout: 60000 });
46
+ if (await this.downloadToProjectButton.isVisible()) {
47
+ return;
48
+ }
49
+ console.log(`Marketplace search attempt ${attempt} of ${MAX_RETRIES} returned an error. Retrying search...`);
50
+ if (attempt < MAX_RETRIES) {
51
+ const searchText = await this.searchForConnectorTextbox.inputValue();
52
+ await this.searchForConnectorTextbox.clear();
53
+ await (0, sleep_1.sleep)(2000);
54
+ await this.searchForConnectorTextbox.fill(searchText);
55
+ await (0, sleep_1.sleep)(2000);
56
+ }
57
+ }
58
+ throw new Error('Marketplace connector search failed after retries due to persistent error');
59
+ }
39
60
  async downloadConnectorToProject() {
40
61
  await this.clickDownloadToProjectButton();
41
62
  try {
@@ -173,7 +173,7 @@ async function modelRestConnector(modelerCreatePage, connectorSettingsPage, conn
173
173
  await modelerCreatePage.clickMarketPlaceButton();
174
174
  await connectorMarketplacePage.clickSearchForConnectorTextbox();
175
175
  await connectorMarketplacePage.fillSearchForConnectorTextbox('REST Connector');
176
- await (0, sleep_1.sleep)(10000);
176
+ await connectorMarketplacePage.waitForConnectorSearchResults();
177
177
  await connectorMarketplacePage.downloadConnectorToProject();
178
178
  }
179
179
  await modelerCreatePage.clickRestConnectorOption();
@@ -16,6 +16,9 @@ _8_10_1.test.describe('Cluster Setup Tests', () => {
16
16
  if (process.env.IS_PROD === 'true') {
17
17
  _8_10_1.test.skip(true, 'Skipping test because not required on PROD test org');
18
18
  }
19
+ if (process.env.IS_AG === 'true') {
20
+ _8_10_1.test.skip(true, 'Skipping test because not required when IS_AG is true');
21
+ }
19
22
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
20
23
  await homePage.clickOrganization();
21
24
  await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, consoleOrganizationsPage.settingsTab, 'settings tab', 60000, false, 2);
@@ -16,6 +16,9 @@ _8_7_1.test.describe('Cluster Setup Tests', () => {
16
16
  if (process.env.IS_PROD === 'true') {
17
17
  _8_7_1.test.skip(true, 'Skipping test because not required on PROD test org');
18
18
  }
19
+ if (process.env.IS_AG === 'true') {
20
+ _8_7_1.test.skip(true, 'Skipping test because not required when IS_AG is true');
21
+ }
19
22
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
20
23
  await homePage.clickOrganization();
21
24
  await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, consoleOrganizationsPage.settingsTab, 'settings tab', 60000, 2);
@@ -17,6 +17,9 @@ _8_8_1.test.describe('Cluster Setup Tests', () => {
17
17
  if (process.env.IS_PROD === 'true') {
18
18
  _8_8_1.test.skip(true, 'Skipping test because not required on PROD test org');
19
19
  }
20
+ if (process.env.IS_AG === 'true') {
21
+ _8_8_1.test.skip(true, 'Skipping test because not required when IS_AG is true');
22
+ }
20
23
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
21
24
  await homePage.clickOrganization();
22
25
  await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, consoleOrganizationsPage.settingsTab, 'settings tab', 60000, false, 2);
@@ -17,6 +17,9 @@ _8_9_1.test.describe('Cluster Setup Tests', () => {
17
17
  if (process.env.IS_PROD === 'true') {
18
18
  _8_9_1.test.skip(true, 'Skipping test because not required on PROD test org');
19
19
  }
20
+ if (process.env.IS_AG === 'true') {
21
+ _8_9_1.test.skip(true, 'Skipping test because not required when IS_AG is true');
22
+ }
20
23
  await (0, UtilitiesPage_1.loginWithRetry)(page, loginPage, users_1.testUsers.mainUser, (testInfo.workerIndex + 1) * 1000);
21
24
  await homePage.clickOrganization();
22
25
  await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, consoleOrganizationsPage.settingsTab, 'settings tab', 60000, false, 2);
@@ -105,7 +105,7 @@ SM_8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
105
105
  await modelerCreatePage.clickMarketPlaceButton();
106
106
  await connectorMarketplacePage.clickSearchForConnectorTextbox();
107
107
  await connectorMarketplacePage.fillSearchForConnectorTextbox('Webhook Connector');
108
- await (0, sleep_1.sleep)(10000);
108
+ await connectorMarketplacePage.waitForConnectorSearchResults();
109
109
  await connectorMarketplacePage.downloadConnectorToProject();
110
110
  }
111
111
  await modelerCreatePage.clickWebhookMessageStartEventConnectorOption();
@@ -193,7 +193,7 @@ SM_8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
193
193
  await modelerCreatePage.clickMarketPlaceButton();
194
194
  await connectorMarketplacePage.clickSearchForConnectorTextbox();
195
195
  await connectorMarketplacePage.fillSearchForConnectorTextbox('Webhook Connector');
196
- await (0, sleep_1.sleep)(10000);
196
+ await connectorMarketplacePage.waitForConnectorSearchResults();
197
197
  await connectorMarketplacePage.downloadConnectorToProject();
198
198
  }
199
199
  await modelerCreatePage.clickIntermediateWebhookConnectorOption();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.404",
3
+ "version": "0.0.406",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",