@camunda/e2e-test-suite 0.0.748 → 0.0.750

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.
@@ -29,6 +29,7 @@ declare class ModelerCreatePage {
29
29
  readonly deploySubButton: Locator;
30
30
  readonly cancelButton: Locator;
31
31
  readonly restConnectorOption: Locator;
32
+ readonly changeElementSearchInput: Locator;
32
33
  readonly marketPlaceButton: Locator;
33
34
  readonly clientIdTextbox: Locator;
34
35
  readonly clientSecretTextbox: Locator;
@@ -34,6 +34,7 @@ class ModelerCreatePage {
34
34
  deploySubButton;
35
35
  cancelButton;
36
36
  restConnectorOption;
37
+ changeElementSearchInput;
37
38
  marketPlaceButton;
38
39
  clientIdTextbox;
39
40
  clientSecretTextbox;
@@ -149,6 +150,7 @@ class ModelerCreatePage {
149
150
  this.restConnectorOption = page.getByRole('listitem', {
150
151
  name: 'REST Outbound Connector',
151
152
  });
153
+ this.changeElementSearchInput = page.locator('.djs-popup-search input');
152
154
  this.marketPlaceButton = page.getByTitle('Browse Marketplace for more Connectors');
153
155
  this.clientIdTextbox = page.getByLabel('Client ID');
154
156
  this.clientSecretTextbox = page.getByLabel('Client secret');
@@ -451,22 +453,38 @@ class ModelerCreatePage {
451
453
  await this.appendGatewayButton.click({ timeout: 90000 });
452
454
  }
453
455
  async setEngineVersion(version) {
454
- await this.page
455
- .locator('[data-test="version-selector"]')
456
- .click({ timeout: 10000 });
456
+ const escapedVersion = version.replace(/\./g, '\\.');
457
+ const versionSelector = this.page.locator('[data-test="version-selector"]');
457
458
  // The dropdown renders each version as an outer <label> (Styled.Label)
458
459
  // wrapping a radio input and a separate text span ("Camunda X.Y").
459
460
  // The radio's accessible name is empty (no label prop passed), so
460
461
  // getByRole('radio') won't resolve to the right item by text.
461
462
  // Clicking the outer <label> containing the version string triggers
462
463
  // the enclosed radio input's onChange via event propagation.
463
- const escapedVersion = version.replace(/\./g, '\\.');
464
- await this.page
464
+ const versionOption = this.page
465
465
  .getByRole('radiogroup', { name: 'Camunda versions' })
466
466
  .locator('label')
467
467
  .filter({ hasText: new RegExp(`Camunda\\s+${escapedVersion}`) })
468
- .first()
469
- .click({ timeout: 5000 });
468
+ .first();
469
+ // Retry the open-select cycle and confirm via the selector label ("Check
470
+ // problems against: Camunda X.Y"). A label click dropped while the dropdown
471
+ // is still animating silently leaves the diagram on the default (older)
472
+ // version, which greys out the version-gated REST connector downstream.
473
+ for (let attempt = 0; attempt < 3; attempt++) {
474
+ if (await versionSelector.filter({ hasText: version }).isVisible()) {
475
+ return;
476
+ }
477
+ await versionSelector.click({ timeout: 10000 });
478
+ await versionOption.click({ timeout: 5000 });
479
+ const committed = await versionSelector
480
+ .filter({ hasText: version })
481
+ .waitFor({ state: 'visible', timeout: 10000 })
482
+ .then(() => true)
483
+ .catch(() => false);
484
+ if (committed) {
485
+ return;
486
+ }
487
+ }
470
488
  }
471
489
  async clickChangeTypeButton() {
472
490
  try {
@@ -169,6 +169,20 @@ async function modelRestConnector(modelerCreatePage, connectorSettingsPage, conn
169
169
  await modelerCreatePage.setEngineVersion('8.10');
170
170
  await modelerCreatePage.clickChangeTypeButton();
171
171
  try {
172
+ // The change-element popup virtualizes its list: connector templates render
173
+ // below the built-in BPMN tasks and are not in the queryable DOM slice until
174
+ // the list is filtered. Type "REST Outbound" into the popup search box so the
175
+ // bundled REST Outbound Connector (compatible with the 8.10 engine set above)
176
+ // renders and is selected directly. Without this filter the off-screen entry
177
+ // is missed and the flow falls back to the marketplace unnecessarily,
178
+ // exposing it to transient marketplace-API errors even though the connector
179
+ // is already bundled in the modeler.
180
+ await (0, test_1.expect)(modelerCreatePage.changeElementSearchInput).toBeVisible({
181
+ timeout: 30000,
182
+ });
183
+ await modelerCreatePage.changeElementSearchInput.click();
184
+ await modelerCreatePage.changeElementSearchInput.fill('');
185
+ await modelerCreatePage.changeElementSearchInput.pressSequentially('REST Outbound', { delay: 50 });
172
186
  await (0, test_1.expect)(modelerCreatePage.restConnectorOption).toBeVisible({
173
187
  timeout: 15000,
174
188
  });
@@ -126,7 +126,8 @@ if (process.env.IS_MT === 'true') {
126
126
  }
127
127
  });
128
128
  });
129
- (0, SM_8_9_1.test)('Main User Can Create & Access Tenant - Connectors Flow @tasklistV2', async ({ page, modelerHomePage, modelerCreatePage, operateProcessInstancePage, operateProcessesPage, operateHomePage, navigationPage, managementIdentityTenantPage, connectorSettingsPage, connectorMarketplacePage, optimizeHomePage, optimizeDashboardPage, ocIdentityHomePage, ocTenantPage, }) => {
129
+ // Skipped due to bug #7716: https://github.com/camunda/connectors/issues/7716
130
+ SM_8_9_1.test.skip('Main User Can Create & Access Tenant - Connectors Flow @tasklistV2', async ({ page, modelerHomePage, modelerCreatePage, operateProcessInstancePage, operateProcessesPage, operateHomePage, navigationPage, managementIdentityTenantPage, connectorSettingsPage, connectorMarketplacePage, optimizeHomePage, optimizeDashboardPage, ocIdentityHomePage, ocTenantPage, }) => {
130
131
  SM_8_9_1.test.slow();
131
132
  const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
132
133
  const processName = 'Main_User_Connectors_Flow_' + randomString;
@@ -256,7 +257,8 @@ if (process.env.IS_MT === 'true') {
256
257
  });
257
258
  }
258
259
  });
259
- (0, SM_8_9_1.test)('Second User Can Access Tenant Created By Main User - Connectors Flow @tasklistV2', async ({ page, modelerHomePage, modelerCreatePage, operateProcessInstancePage, operateProcessesPage, operateHomePage, navigationPage, managementIdentityTenantPage, connectorSettingsPage, connectorMarketplacePage, optimizeHomePage, optimizeDashboardPage, ocIdentityHomePage, ocTenantPage, managementIdentityPage, keycloakAdminPage, keycloakLoginPage, ocIdentityRolesPage, ocIdentityMappingRulesPage, browser, }) => {
260
+ // Skipped due to bug #320: https://github.com/camunda/marketplace-api/issues/320
261
+ SM_8_9_1.test.skip('Second User Can Access Tenant Created By Main User - Connectors Flow @tasklistV2', async ({ page, modelerHomePage, modelerCreatePage, operateProcessInstancePage, operateProcessesPage, operateHomePage, navigationPage, managementIdentityTenantPage, connectorSettingsPage, connectorMarketplacePage, optimizeHomePage, optimizeDashboardPage, ocIdentityHomePage, ocTenantPage, managementIdentityPage, keycloakAdminPage, keycloakLoginPage, ocIdentityRolesPage, ocIdentityMappingRulesPage, browser, }) => {
260
262
  SM_8_9_1.test.slow();
261
263
  const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
262
264
  const processName = 'Second_User_Connectors_Flow_' + randomString;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.748",
3
+ "version": "0.0.750",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",