From c4d135d37e88f80578de062967cb39d09b2aff69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Thu, 5 Mar 2026 23:00:32 +0800 Subject: [PATCH] fix: optimize test timeouts and wait conditions for better stability --- e2e/playwright.config.ts | 9 +++++---- e2e/src/fixtures/base.fixture.ts | 6 ++++++ e2e/src/pages/HomePage.ts | 6 +++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/e2e/playwright.config.ts b/e2e/playwright.config.ts index 79d9bea..0c482c1 100644 --- a/e2e/playwright.config.ts +++ b/e2e/playwright.config.ts @@ -22,9 +22,10 @@ export default defineConfig({ suiteTitle: false, }], ], - timeout: 60000, + timeout: 90000, expect: { - timeout: 30000, + timeout: 45000, + toHaveScreenshot: { timeout: 60000 }, }, use: { baseURL: env.baseURL, @@ -33,8 +34,8 @@ export default defineConfig({ video: env.video, headless: env.headless, viewport: { width: 1280, height: 720 }, - actionTimeout: 30000, - navigationTimeout: 60000, + actionTimeout: 45000, + navigationTimeout: 90000, launchOptions: { slowMo: env.slowMo, }, diff --git a/e2e/src/fixtures/base.fixture.ts b/e2e/src/fixtures/base.fixture.ts index afc1738..38e4684 100644 --- a/e2e/src/fixtures/base.fixture.ts +++ b/e2e/src/fixtures/base.fixture.ts @@ -22,6 +22,12 @@ export type TestFixtures = { }; export const test = base.extend({ + page: async ({ page }, use) => { + page.setDefaultTimeout(45000); + page.setDefaultNavigationTimeout(90000); + await use(page); + }, + homePage: async ({ page }, use) => { const homePage = new HomePage(page); await use(homePage); diff --git a/e2e/src/pages/HomePage.ts b/e2e/src/pages/HomePage.ts index 59ee135..5a323a5 100644 --- a/e2e/src/pages/HomePage.ts +++ b/e2e/src/pages/HomePage.ts @@ -68,9 +68,9 @@ export class HomePage extends BasePage { } async waitForPageLoad(): Promise { - await this.waitForLoadState('networkidle'); - await this.header.waitFor({ state: 'visible' }); - await this.heroSection.waitFor({ state: 'visible' }); + await this.waitForLoadState('domcontentloaded'); + await this.header.waitFor({ state: 'visible', timeout: 15000 }); + await this.heroSection.waitFor({ state: 'visible', timeout: 15000 }); } async getNavigationItems(): Promise {