@camunda/e2e-test-suite 0.0.771 → 0.0.773

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.
@@ -30,6 +30,7 @@ declare class ConnectorSettingsPage {
30
30
  fillResultVariableInput(variable: string): Promise<void>;
31
31
  clickBearerTokenInput(): Promise<void>;
32
32
  fillBearerTokenInput(token: string): Promise<void>;
33
+ private clickTabWithRetry;
33
34
  clickAuthenticationTab(): Promise<void>;
34
35
  clickOutputMappingTab(): Promise<void>;
35
36
  clickHTTPEndpointTab(): Promise<void>;
@@ -111,23 +111,43 @@ class ConnectorSettingsPage {
111
111
  await this.bearerTokenInput.fill(token);
112
112
  await (0, test_1.expect)(this.page.getByText('Bearer token must not be empty.')).not.toBeVisible({ timeout: 30000 });
113
113
  }
114
+ // Connector settings tabs can take several seconds to render on slower clusters
115
+ // after the element type is changed. Each clickXxxTab method retries with a
116
+ // reload-free wait so a single slow render doesn't cause a hard timeout failure.
117
+ async clickTabWithRetry(tab, tabName, maxAttempts = 3) {
118
+ let lastError;
119
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
120
+ try {
121
+ await (0, test_1.expect)(tab).toBeVisible({ timeout: 30000 });
122
+ await tab.click({ timeout: 30000 });
123
+ return;
124
+ }
125
+ catch (err) {
126
+ lastError = err;
127
+ console.warn(`clickTabWithRetry: "${tabName}" attempt ${attempt + 1}/${maxAttempts} failed: ${err instanceof Error ? err.message : err}`);
128
+ }
129
+ }
130
+ throw lastError instanceof Error
131
+ ? lastError
132
+ : new Error(`Tab "${tabName}" not clickable after ${maxAttempts} attempts`);
133
+ }
114
134
  async clickAuthenticationTab() {
115
- await this.authenticationTab.click({ timeout: 60000 });
135
+ await this.clickTabWithRetry(this.authenticationTab, 'Authentication');
116
136
  }
117
137
  async clickOutputMappingTab() {
118
- await this.outputMappingTab.click({ timeout: 60000 });
138
+ await this.clickTabWithRetry(this.outputMappingTab, 'Output mapping');
119
139
  }
120
140
  async clickHTTPEndpointTab() {
121
- await this.httpEndpointTab.click({ timeout: 60000 });
141
+ await this.clickTabWithRetry(this.httpEndpointTab, 'HTTP endpoint');
122
142
  }
123
143
  async clickCorrelationTab() {
124
- await this.correlationTab.click({ timeout: 60000 });
144
+ await this.clickTabWithRetry(this.correlationTab, 'Correlation');
125
145
  }
126
146
  async clickInputTab() {
127
- await this.inputTab.click({ timeout: 60000 });
147
+ await this.clickTabWithRetry(this.inputTab, 'Input');
128
148
  }
129
149
  async clickWebhookConfigurationTab() {
130
- await this.webhookConfigurationTab.click({ timeout: 60000 });
150
+ await this.clickTabWithRetry(this.webhookConfigurationTab, 'Webhook configuration');
131
151
  }
132
152
  }
133
153
  exports.ConnectorSettingsPage = ConnectorSettingsPage;
@@ -290,14 +290,14 @@ if (node_process_1.default.env.IS_RBA === 'true') {
290
290
  await ocIdentityAuthorizationsPage.deleteAuthorization(`${processName}1`, 'PROCESS_DEFINITION');
291
291
  await ocIdentityAuthorizationsPage.clickProcessDefinitionTab();
292
292
  await ocIdentityAuthorizationsPage.deleteAuthorization(`${processName}2`, 'PROCESS_DEFINITION');
293
- await (0, sleep_1.sleep)(10000);
293
+ await (0, sleep_1.sleep)(30000);
294
294
  });
295
295
  await SM_8_10_1.test.step('Navigate to Tasklist and Make Sure that the Two Deployed Processes Are Not Accessible', async () => {
296
296
  await navigationPage.goToTasklist(undefined, credentials);
297
297
  await taskPanelPage.clickProcessesTab();
298
298
  await taskProcessesPage.clickpopupContinueButton();
299
- await (0, UtilitiesPage_1.expectTextWithPagination)(page, processName + '1', false, 60000);
300
- await (0, UtilitiesPage_1.expectTextWithPagination)(page, processName + '2', false, 60000);
299
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, page.getByText(`${processName}1`), `${processName}1`, 30000, true);
300
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, page.getByText(`${processName}2`), `${processName}2`, 30000, true);
301
301
  });
302
302
  });
303
303
  (0, SM_8_10_1.test)('RBA On User Flow - Permission for One Process @tasklistV1', async ({ page, modelerHomePage, modelerCreatePage, taskPanelPage, taskProcessesPage, operateHomePage, navigationPage, managementIdentityPage, keycloakLoginPage, keycloakAdminPage, ocIdentityHomePage, ocIdentityMappingRulesPage, ocIdentityRolesPage, ocIdentityAuthorizationsPage, browser, }, testInfo) => {
@@ -584,8 +584,8 @@ if (node_process_1.default.env.IS_RBA === 'true') {
584
584
  await navigationPage.goToTasklist(undefined, credentials);
585
585
  await taskPanelPage.clickProcessesTab();
586
586
  await taskProcessesPage.clickpopupContinueButton();
587
- await (0, UtilitiesPage_1.expectTextWithPagination)(page, processName + '1', false, 60000);
588
- await (0, UtilitiesPage_1.expectTextWithPagination)(page, processName + '2', false, 60000);
587
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, page.getByText(`${processName}1`), `${processName}1`, 30000, true);
588
+ await (0, UtilitiesPage_1.assertLocatorVisibleWithRetry)(page, page.getByText(`${processName}2`), `${processName}2`, 30000, true);
589
589
  });
590
590
  });
591
591
  (0, SM_8_10_1.test)('RBA On User Flow - Permission for All Processes', async ({ page, modelerHomePage, modelerCreatePage, taskPanelPage, taskProcessesPage, operateHomePage, navigationPage, managementIdentityPage, keycloakLoginPage, keycloakAdminPage, ocIdentityHomePage, ocIdentityMappingRulesPage, ocIdentityRolesPage, ocIdentityAuthorizationsPage, browser, }, testInfo) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.771",
3
+ "version": "0.0.773",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",