@camunda/e2e-test-suite 0.0.959 → 0.0.960

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.
@@ -806,7 +806,10 @@ class ModelerCreatePage {
806
806
  await (0, test_1.expect)(this.changeElementSearchInput).toBeVisible({ timeout: 30000 });
807
807
  await this.changeElementSearchInput.click();
808
808
  await this.changeElementSearchInput.fill('');
809
- await this.changeElementSearchInput.pressSequentially('REST Outbound', {
809
+ // 'Send REST Request' is the template's current name -- connectors #7917
810
+ // renamed it from 'REST Outbound Connector' on 2026-07-15, and "Outbound"
811
+ // now appears in no searchable field, so the old filter matched nothing.
812
+ await this.changeElementSearchInput.pressSequentially('Send REST Request', {
810
813
  delay: 50,
811
814
  });
812
815
  await (0, test_1.expect)(this.restConnectorOption).toBeVisible({ timeout: 90000 });
@@ -215,10 +215,13 @@ class ModelerHomePage {
215
215
  }
216
216
  async clickHomeBreadcrumb() {
217
217
  try {
218
- await this.homeBreadcrumb.click();
218
+ await this.homeBreadcrumb.click({ timeout: 60000 });
219
219
  }
220
220
  catch (error) {
221
- await this.page.getByText('Home', { exact: true }).first().click();
221
+ await this.page
222
+ .getByText('Home', { exact: true })
223
+ .first()
224
+ .click({ timeout: 60000 });
222
225
  }
223
226
  }
224
227
  async clickChooseBpmnTemplateButton() {
@@ -100,9 +100,21 @@ class OperateHomePage {
100
100
  await this.page
101
101
  .getByLabel('Edit Variable "testVariable"')
102
102
  .getByText('"testValue"')
103
- .dblclick();
104
- await this.page.keyboard.press('Backspace');
105
- await this.page.keyboard.type(newValue);
103
+ .click();
104
+ // Replace the whole JSON document in one shot. Typing it per-character
105
+ // raced the editor's re-render: after a couple of keystrokes the caret
106
+ // jumped outside the closing quote, leaving invalid JSON such as
107
+ // `"up"datedValue`. Apply then rejects it silently, the modal stays open
108
+ // and the old value is still on screen, so the caller's
109
+ // `not.toBeVisible('"testValue"')` assertion times out. insertText emits a
110
+ // single input event, so there is no intermediate state to race.
111
+ //
112
+ // Pass only the OPENING quote: Monaco auto-closes it. Supplying both ends
113
+ // yields `"updatedValue""` -- invalid JSON, and Apply rejects it exactly
114
+ // like the per-character version did. Same recipe as
115
+ // pages/c8Run-8.10/OperateHomePage.ts.
116
+ await this.page.keyboard.press('ControlOrMeta+A');
117
+ await this.page.keyboard.insertText(`"${newValue}`);
106
118
  }
107
119
  async clickSaveVariableButton() {
108
120
  await this.applyButton.click();
@@ -223,6 +223,17 @@ class PlayPage {
223
223
  await this.scenarioDetailNameInput.press('Tab');
224
224
  }
225
225
  async clickViewAllScenariosButton() {
226
+ // This method's job is to reach the scenario LIST. Saving can already leave
227
+ // Play there (see assertSavedScenarioNameInPanel), and the "Back to test
228
+ // cases" control exists only inside a scenario's detail view -- so on the
229
+ // list it never renders and waiting for it just burns the retry budget.
230
+ // "Run all test cases" lives on the list and is what the caller needs next,
231
+ // so treat it as proof the destination is already reached.
232
+ if (await this.runAllScenariosButton
233
+ .isVisible({ timeout: 3000 })
234
+ .catch(() => false)) {
235
+ return;
236
+ }
226
237
  await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.viewAllScenariosButton);
227
238
  await this.viewAllScenariosButton.click();
228
239
  }
@@ -252,6 +263,20 @@ class PlayPage {
252
263
  if (await heading.isVisible({ timeout: 3000 }).catch(() => false)) {
253
264
  return;
254
265
  }
266
+ // Updating an existing test case does NOT always leave the detail view
267
+ // open: Play can close it and fall back to the "Test cases" list, which is
268
+ // what it did in run 32105225796 -- the screenshot shows the list with the
269
+ // updated name present while neither the heading nor the Name field
270
+ // existed, so the old two-surface check failed on a save that had actually
271
+ // succeeded (the "Scenario saved" toast had already been asserted). The row
272
+ // carrying the exact name is the same proof, on the surface Play chose.
273
+ const listRow = this.page
274
+ .locator('tr')
275
+ .filter({ has: this.page.getByText(scenarioName, { exact: true }) })
276
+ .first();
277
+ if (await listRow.isVisible({ timeout: 3000 }).catch(() => false)) {
278
+ return;
279
+ }
255
280
  await (0, test_1.expect)(this.scenarioDetailNameInput).toHaveValue(scenarioName, {
256
281
  timeout: 30000,
257
282
  });
@@ -198,8 +198,8 @@ async function modelRestConnector(modelerCreatePage, connectorSettingsPage, conn
198
198
  try {
199
199
  // The change-element popup virtualizes its list: connector templates render
200
200
  // below the built-in BPMN tasks and are not in the queryable DOM slice until
201
- // the list is filtered. Type "REST Outbound" into the popup search box so the
202
- // bundled REST Outbound Connector (compatible with the 8.10 engine set above)
201
+ // the list is filtered. Type the template name into the popup search box so
202
+ // the bundled REST template (compatible with the 8.10 engine set above)
203
203
  // renders and is selected directly. Without this filter the off-screen entry
204
204
  // is missed and the flow falls back to the marketplace unnecessarily,
205
205
  // exposing it to transient marketplace-API errors even though the connector
@@ -209,7 +209,7 @@ async function modelRestConnector(modelerCreatePage, connectorSettingsPage, conn
209
209
  });
210
210
  await modelerCreatePage.changeElementSearchInput.click();
211
211
  await modelerCreatePage.changeElementSearchInput.fill('');
212
- await modelerCreatePage.changeElementSearchInput.pressSequentially('REST Outbound', { delay: 50 });
212
+ await modelerCreatePage.changeElementSearchInput.pressSequentially('Send REST Request', { delay: 50 });
213
213
  await (0, test_1.expect)(modelerCreatePage.restConnectorOption).toBeVisible({
214
214
  timeout: 15000,
215
215
  });
@@ -44,8 +44,7 @@ SM_8_10_1.test.describe('Connectors User Flow Tests @tasklistV2', () => {
44
44
  });
45
45
  });
46
46
  });
47
- // Skipped due to bug #8162: https://github.com/camunda/connectors/issues/8162
48
- SM_8_10_1.test.skip('REST Connector Bearer Token Auth User Flow', async ({ page, operateHomePage, modelerHomePage, modelerCreatePage, connectorSettingsPage, navigationPage, operateProcessInstancePage, operateProcessesPage, connectorMarketplacePage, }) => {
47
+ (0, SM_8_10_1.test)('REST Connector Bearer Token Auth User Flow', async ({ page, operateHomePage, modelerHomePage, modelerCreatePage, connectorSettingsPage, navigationPage, operateProcessInstancePage, operateProcessesPage, connectorMarketplacePage, }) => {
49
48
  SM_8_10_1.test.slow();
50
49
  const processName = 'REST_Connector_Bearer_Auth_Process' +
51
50
  (await (0, _setup_1.generateRandomStringAsync)(3));
@@ -116,8 +116,7 @@ if (process.env.IS_DS === 'true') {
116
116
  await operateProcessInstancePage.assertProcessVariableContainsText('Upload_Files', 'aws');
117
117
  });
118
118
  });
119
- // Skipped due to bug #8162: https://github.com/camunda/connectors/issues/8162
120
- SM_8_10_1.test.skip('Document Handling Connectors User Flow - AWS @tasklistV2', async ({ page, navigationPage, modelerHomePage, modelerCreatePage, operateHomePage, operateProcessesPage, connectorMarketplacePage, operateProcessInstancePage, ocIdentityHomePage, ocIdentityRolesPage, }) => {
119
+ (0, SM_8_10_1.test)('Document Handling Connectors User Flow - AWS @tasklistV2', async ({ page, navigationPage, modelerHomePage, modelerCreatePage, operateHomePage, operateProcessesPage, connectorMarketplacePage, operateProcessInstancePage, ocIdentityHomePage, ocIdentityRolesPage, }) => {
121
120
  const processName = 'Document_Handling_Connectors_User_Flow_AWS_Process' +
122
121
  (await (0, _setup_1.generateRandomStringAsync)(3));
123
122
  const baseURL = process.env.PLAYWRIGHT_BASE_URL ||
@@ -127,8 +127,7 @@ if (process.env.IS_MT === 'true') {
127
127
  }
128
128
  });
129
129
  });
130
- // Skipped due to bug #8162: https://github.com/camunda/connectors/issues/8162
131
- SM_8_10_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
+ (0, SM_8_10_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, }) => {
132
131
  SM_8_10_1.test.slow();
133
132
  const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
134
133
  const processName = 'Main_User_Connectors_Flow_' + randomString;
@@ -260,8 +259,7 @@ if (process.env.IS_MT === 'true') {
260
259
  });
261
260
  }
262
261
  });
263
- // Skipped due to bug #8162: https://github.com/camunda/connectors/issues/8162
264
- SM_8_10_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, }) => {
262
+ (0, SM_8_10_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, }) => {
265
263
  SM_8_10_1.test.slow();
266
264
  const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
267
265
  const processName = 'Second_User_Connectors_Flow_' + randomString;
@@ -390,8 +388,7 @@ if (process.env.IS_MT === 'true') {
390
388
  });
391
389
  }
392
390
  });
393
- // Skipped due to bug #8162: https://github.com/camunda/connectors/issues/8162
394
- SM_8_10_1.test.skip('User Can Be Assigned To Multiple Tenants @tasklistV2', async ({ page, modelerHomePage, modelerCreatePage, operateProcessInstancePage, operateProcessesPage, operateHomePage, navigationPage, managementIdentityTenantPage, connectorSettingsPage, connectorMarketplacePage, ocIdentityHomePage, ocTenantPage, managementIdentityPage, }) => {
391
+ (0, SM_8_10_1.test)('User Can Be Assigned To Multiple Tenants @tasklistV2', async ({ page, modelerHomePage, modelerCreatePage, operateProcessInstancePage, operateProcessesPage, operateHomePage, navigationPage, managementIdentityTenantPage, connectorSettingsPage, connectorMarketplacePage, ocIdentityHomePage, ocTenantPage, managementIdentityPage, }) => {
395
392
  SM_8_10_1.test.slow();
396
393
  const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
397
394
  const processName1 = 'Multiple_Tenant_Flow_1' + randomString;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.959",
3
+ "version": "0.0.960",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",