@camunda/e2e-test-suite 0.0.384 → 0.0.386

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.
@@ -64,7 +64,7 @@ class AppsPage {
64
64
  }
65
65
  async clickCluster(component, name) {
66
66
  const cluster = component.getByRole('link', { name: name, exact: true });
67
- await (0, test_1.expect)(cluster).toBeVisible({ timeout: 30000 });
67
+ await (0, test_1.expect)(cluster).toBeVisible({ timeout: 60000 });
68
68
  await cluster.click();
69
69
  }
70
70
  async clickModeler() {
@@ -129,24 +129,14 @@ class AppsPage {
129
129
  const maxRetries = 5;
130
130
  for (let retries = 0; retries < maxRetries; retries++) {
131
131
  try {
132
- if (retries === 0) {
133
- //Single cluster
134
- if (await this.identityLink.isVisible({ timeout: 5000 })) {
135
- await this.identityLink.click({ timeout: 10000 });
136
- }
137
- else {
138
- //Multiple clusters
139
- await this.doClickClusterInIdentity(clusterName);
140
- }
132
+ await this.clickCamundaApps();
133
+ await (0, sleep_1.sleep)(3000);
134
+ if (await this.identityLink.isVisible({ timeout: 5000 })) {
135
+ await this.identityLink.click({ timeout: 10000 });
141
136
  }
142
137
  else {
143
- await this.clickCamundaApps();
144
- if (await this.identityLink.isVisible({ timeout: 5000 })) {
145
- await this.identityLink.click({ timeout: 10000 });
146
- }
147
- else {
148
- await this.doClickClusterInIdentity(clusterName);
149
- }
138
+ //Multiple clusters
139
+ await this.doClickClusterInIdentity(clusterName);
150
140
  }
151
141
  return;
152
142
  }
@@ -187,7 +177,7 @@ class AppsPage {
187
177
  expanded: true,
188
178
  })
189
179
  .isHidden({ timeout: 5000 })) {
190
- await this.identityButton.click({ timeout: 10000 });
180
+ await this.identityButton.click({ timeout: 30000 });
191
181
  }
192
182
  await this.clickCluster(this.identityListItem, clusterName);
193
183
  }
@@ -123,7 +123,9 @@ class Authorization {
123
123
  await locator.click();
124
124
  await (0, test_1.expect)(this.deleteAuthorizationModal).toBeVisible();
125
125
  await this.deleteAuthorizationModalDeleteButton.click();
126
- await (0, test_1.expect)(this.deleteAuthorizationModal).not.toBeVisible();
126
+ await (0, test_1.expect)(this.deleteAuthorizationModal).not.toBeVisible({
127
+ timeout: 30000,
128
+ });
127
129
  await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.authorizationsList
128
130
  .getByRole('cell', {
129
131
  name: resourceId,
@@ -191,7 +191,7 @@ class ClusterSecretsPage {
191
191
  }
192
192
  async clickImportButton() {
193
193
  await (0, test_1.expect)(this.importButton).toBeVisible({ timeout: 30000 });
194
- await this.importButton.click();
194
+ await this.importButton.click({ timeout: 30000 });
195
195
  }
196
196
  async bulkImportSecrets(secrets) {
197
197
  const mapped = secrets
@@ -211,7 +211,7 @@ class ClusterSecretsPage {
211
211
  await this.bulkImportTextArea.fill(mapped);
212
212
  await this.dialogImportButton.click();
213
213
  await (0, test_1.expect)(this.dialog).not.toBeVisible({
214
- timeout: 60000,
214
+ timeout: 120000,
215
215
  });
216
216
  await (0, test_1.expect)(this.createNewSecretButton).toBeVisible({
217
217
  timeout: 60000,
@@ -239,7 +239,15 @@ class ConsoleOrganizationPage {
239
239
  await this.optInButton.click({ timeout: 60000 });
240
240
  }
241
241
  async enableAlphaFeature(name) {
242
- await (0, test_1.expect)(this.rows.first()).toBeVisible({ timeout: 10000 });
242
+ await (0, expectLocatorWithRetry_1.expectLocatorWithRetry)(this.page, this.rows.first(), {
243
+ visibilityTimeout: 60000,
244
+ totalTimeout: 300000,
245
+ maxRetries: 5,
246
+ postAction: async () => {
247
+ await this.page.reload();
248
+ await this.clickSettingsTab();
249
+ },
250
+ });
243
251
  const alphaFeature = this.rows.filter({ hasText: name }).first();
244
252
  if ((await alphaFeature.count()) < 1) {
245
253
  console.error(`No alpha feature(${name}) is found.`);
@@ -190,13 +190,13 @@ class IdpCreatePage {
190
190
  });
191
191
  await this.unstructured_extractDocumentButton.click({ timeout: 60000 });
192
192
  await (0, test_1.expect)(this.page.getByText('Extracting..')).not.toBeVisible({
193
- timeout: 120000,
193
+ timeout: 300000,
194
194
  });
195
195
  await (0, test_1.expect)(this.unstructured_saveAsTestCaseButton).toBeVisible({
196
- timeout: 120000,
196
+ timeout: 300000,
197
197
  });
198
198
  await (0, test_1.expect)(this.unstructured_saveAsTestCaseButton).toBeEnabled({
199
- timeout: 120000,
199
+ timeout: 300000,
200
200
  });
201
201
  }
202
202
  async clickSaveAsTestCaseButton() {
@@ -269,10 +269,10 @@ class IdpCreatePage {
269
269
  }
270
270
  async selectAllExtractionFields() {
271
271
  await (0, test_1.expect)(this.extractionInProgressNotification).not.toBeVisible({
272
- timeout: 120000,
272
+ timeout: 300000,
273
273
  });
274
274
  await (0, test_1.expect)(this.structured_FieldsTab).toBeVisible({
275
- timeout: 180000,
275
+ timeout: 300000,
276
276
  });
277
277
  await (0, test_1.expect)(this.structured_CheckboxSelectAllFields).toBeVisible({
278
278
  timeout: 60000,
@@ -308,15 +308,15 @@ class IdpCreatePage {
308
308
  });
309
309
  await this.structured_TestExtractionTemplateButton.click({ timeout: 60000 });
310
310
  await (0, test_1.expect)(this.extractionInProgressNotification).not.toBeVisible({
311
- timeout: 120000,
311
+ timeout: 300000,
312
312
  });
313
313
  }
314
314
  async extractionResultsAreVisible() {
315
315
  await (0, test_1.expect)(this.structured_TestSummaryResult).toBeVisible({
316
- timeout: 60000,
316
+ timeout: 180000,
317
317
  });
318
318
  await (0, test_1.expect)(this.structured_DetailsResult).toBeVisible({
319
- timeout: 60000,
319
+ timeout: 180000,
320
320
  });
321
321
  }
322
322
  async clickPublishTemplateButton() {
@@ -164,9 +164,16 @@ class ModelerHomePage {
164
164
  }
165
165
  async clickCrossComponentProjectFolder() {
166
166
  await (0, clickLocatorWithRetry_1.clickLocatorWithRetry)(this.page, this.crossComponentProjectFolder, {
167
+ visibilityTimeout: 60000,
168
+ totalTimeout: 180000,
169
+ maxRetries: 5,
167
170
  preAction: async () => {
168
171
  await this.clickMessageBanner();
169
172
  },
173
+ postAction: async () => {
174
+ await this.page.reload();
175
+ await this.page.waitForLoadState('domcontentloaded');
176
+ },
170
177
  });
171
178
  }
172
179
  async createCrossComponentProjectFolder() {
@@ -17,7 +17,7 @@ class KeycloakAdminPage {
17
17
  const realmSelector = this.page.getByTestId('nav-item-realms');
18
18
  await realmSelector.click();
19
19
  const searchField = this.page.getByTestId('selectRealminput');
20
- await searchField.click();
20
+ await searchField.click({ timeout: 30000 });
21
21
  await this.page
22
22
  .getByPlaceholder('Search')
23
23
  .fill(process.env.KEYCLOAK_REALM || 'camunda-platform');
@@ -857,11 +857,32 @@ class ModelerCreatePage {
857
857
  const maxRetries = 4;
858
858
  for (let retries = 0; retries < maxRetries; retries++) {
859
859
  try {
860
+ if (retries === 0) {
861
+ // If the change type panel is not showing the connector (e.g. after
862
+ // visiting the marketplace), reopen it before waiting for the option.
863
+ const isAlreadyVisible = await this.intermediateWebhookConnectorOption.isVisible();
864
+ if (!isAlreadyVisible) {
865
+ await this.changeTypeButton.click({ force: true, timeout: 30000 });
866
+ }
867
+ }
868
+ else {
869
+ // Reload to pick up newly-downloaded connector templates, then
870
+ // re-select the intermediate event element and open the type picker.
871
+ await this.page.reload();
872
+ await this.secondElement.click({ force: true, timeout: 30000 });
873
+ await this.changeTypeButton.click({ force: true, timeout: 30000 });
874
+ }
875
+ // Use a longer timeout to allow the connector to finish registering
876
+ // after a marketplace download before giving up.
860
877
  await (0, test_1.expect)(this.intermediateWebhookConnectorOption).toBeVisible({
861
- timeout: 30000,
878
+ timeout: 60000,
862
879
  });
863
880
  await this.intermediateWebhookConnectorOption.scrollIntoViewIfNeeded();
864
- await this.intermediateWebhookConnectorOption.click({ timeout: 60000 });
881
+ // force: true bypasses context-pad overlays that can intercept clicks
882
+ await this.intermediateWebhookConnectorOption.click({
883
+ timeout: 60000,
884
+ force: true,
885
+ });
865
886
  return;
866
887
  }
867
888
  catch (error) {
@@ -169,7 +169,7 @@ class OptimizeReportPage {
169
169
  }
170
170
  async waitUntilUserTaskProcessIsVisible(processName) {
171
171
  await (0, test_1.expect)(this.page.getByText(processName, { exact: true })).toBeVisible({
172
- timeout: 1000,
172
+ timeout: 30000,
173
173
  });
174
174
  }
175
175
  async clickCancelButton() {
@@ -14,7 +14,13 @@ const createReportForProcess = async (optimizeCollectionsPage, optimizeReportPag
14
14
  break;
15
15
  }
16
16
  catch (error) {
17
- await optimizeReportPage.clickCancelButton();
17
+ try {
18
+ await optimizeReportPage.clickCancelButton();
19
+ }
20
+ catch (cancelError) {
21
+ // Page may have been closed due to test timeout, ignore
22
+ }
23
+ await new Promise((resolve) => setTimeout(resolve, 5000));
18
24
  }
19
25
  retries--;
20
26
  (0, test_1.expect)(retries).toBeGreaterThan(0);
@@ -145,7 +145,7 @@ SM_8_8_1.test.describe('HTO User Flow Tests', () => {
145
145
  timeout: 90000,
146
146
  });
147
147
  await (0, test_1.expect)(page.getByText('"updatedValue"')).toBeVisible({
148
- timeout: 30000,
148
+ timeout: 90000,
149
149
  });
150
150
  await (0, sleep_1.sleep)(10000);
151
151
  await navigationPage.goToTasklist();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.384",
3
+ "version": "0.0.386",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",