diff --git a/e2e-tests/playwright/e2e/audit-log/log-utils.ts b/e2e-tests/playwright/e2e/audit-log/log-utils.ts index a01e3b06d8..b03705f67f 100644 --- a/e2e-tests/playwright/e2e/audit-log/log-utils.ts +++ b/e2e-tests/playwright/e2e/audit-log/log-utils.ts @@ -185,11 +185,11 @@ export class LogUtils { static async getPodLogsWithGrep( filterWords: string[] = [], namespace: string = process.env.NAME_SPACE || "showcase-ci-nightly", - maxRetries: number = 4, - retryDelay: number = 2000, + maxRetries: number = 6, + retryDelay: number = 3000, ): Promise { const deploySelector = getBackstageDeploySelector(); - const tailNumber = 100; + const tailNumber = 500; // Resolve the deployment by its metadata labels, then fetch logs from it. // This works for both Helm and Operator since both set app.kubernetes.io/name diff --git a/e2e-tests/playwright/e2e/plugins/bulk-import.spec.ts b/e2e-tests/playwright/e2e/plugins/bulk-import.spec.ts index 1e06f3d428..a97ba7cb5d 100644 --- a/e2e-tests/playwright/e2e/plugins/bulk-import.spec.ts +++ b/e2e-tests/playwright/e2e/plugins/bulk-import.spec.ts @@ -128,8 +128,8 @@ spec: "Ready to import", ]); }).toPass({ - intervals: [5_000], - timeout: 40_000, + intervals: [5_000, 10_000, 15_000], + timeout: 90_000, }); await bulkimport.selectRepoInTable(catalogRepoDetails.name); diff --git a/e2e-tests/playwright/e2e/plugins/notifications/mark-notifications.spec.ts b/e2e-tests/playwright/e2e/plugins/notifications/mark-notifications.spec.ts index 56c0b8b080..b1b72e84e3 100644 --- a/e2e-tests/playwright/e2e/plugins/notifications/mark-notifications.spec.ts +++ b/e2e-tests/playwright/e2e/plugins/notifications/mark-notifications.spec.ts @@ -91,6 +91,7 @@ test.describe("Mark notification tests", () => { }; await notificationsApi.createNotification(notification); await notificationPage.clickNotificationsNavBarItem(); + await notificationPage.notificationContains(`${notificationTitle}-${r}`); await notificationPage.selectNotification(); await notificationPage.saveSelected(); await notificationPage.viewSaved(); diff --git a/e2e-tests/playwright/support/pages/adoption-insights.ts b/e2e-tests/playwright/support/pages/adoption-insights.ts index 73c7bcad7b..9ef5eed16f 100644 --- a/e2e-tests/playwright/support/pages/adoption-insights.ts +++ b/e2e-tests/playwright/support/pages/adoption-insights.ts @@ -122,12 +122,15 @@ export class TestHelper { } async expectTopEntriesToBePresent(panelTitle: string) { - const panel = this.page.locator(".v5-MuiPaper-root", { - hasText: panelTitle, - }); - const entries = panel.locator("tbody").locator("tr"); - // Use auto-retrying assertion instead of instant count check - await expect(entries.first()).toBeVisible({ timeout: 30000 }); + await expect(async () => { + await this.page.reload(); + await this.page.waitForLoadState("domcontentloaded"); + const panel = this.page.locator(".v5-MuiPaper-root", { + hasText: panelTitle, + }); + const entries = panel.locator("tbody").locator("tr"); + await expect(entries.first()).toBeVisible({ timeout: 10000 }); + }).toPass({ intervals: [5000, 10000], timeout: 60000 }); } async clickAndVerifyText( @@ -141,7 +144,10 @@ export class TestHelper { // Wait for the expected API call to succeed await this.waitUntilApiCallSucceeds(newpage); - await newpage.getByText(expectedText).first().waitFor({ state: "visible" }); + await newpage + .getByText(expectedText) + .first() + .waitFor({ state: "visible", timeout: 30000 }); await newpage.waitForTimeout(5000); // wait for the flush interval to be sure await newpage.close(); }