From 3402369dceaffbb9743d9be844a5cf9f3fdd3a31 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Fri, 18 Sep 2026 15:09:55 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=85(e2e)=20fix=20flaky=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Improve: - checks redirect if unsync version - check the reorder of sub pages Add "show-report" command. --- .../e2e/__tests__/app-impress/doc-ai.spec.ts | 10 +++++---- .../__tests__/app-impress/doc-routing.spec.ts | 21 ++++++++++--------- .../__tests__/app-impress/doc-tree.spec.ts | 10 +++++++++ src/frontend/apps/e2e/package.json | 3 ++- 4 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts index 273f65288..2a950b8cd 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-ai.spec.ts @@ -16,10 +16,6 @@ import { if (process.env.IS_INSTANCE !== 'true') { test.describe('Doc AI feature', () => { - test.beforeEach(async ({ page }) => { - await page.goto('/'); - }); - [ { AI_FEATURE_ENABLED: false, @@ -190,6 +186,8 @@ if (process.env.IS_INSTANCE !== 'true') { } }); + await page.goto('/'); + await createDoc(page, 'doc-ai', browserName, 1); await page.locator('.bn-block-outer').last().fill('Hello World'); @@ -273,6 +271,8 @@ if (process.env.IS_INSTANCE !== 'true') { title: '', }); + await page.goto('/'); + await createDoc(page, 'doc-editor-ai', browserName, 1); const editor = await writeInEditor({ page, text: 'Hello World' }); @@ -342,6 +342,8 @@ if (process.env.IS_INSTANCE !== 'true') { title: '', }); + await page.goto('/'); + const [randomDoc] = await createDoc( page, 'doc-editor-ai-proxy', diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-routing.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-routing.spec.ts index 834d211b3..48a1c86ec 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-routing.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-routing.spec.ts @@ -157,24 +157,25 @@ test.describe('Doc Routing', () => { RELEASE_VERSION: '0.0.0', }); - await page.goto('/'); - let counterReload = 0; await page.route(/.*\/users\/me\/$/, async (route) => { counterReload += 1; await route.continue(); }); - await page.waitForTimeout(1000); + await page.goto('/'); + + await expect.poll(() => counterReload, { timeout: 10000 }).toBe(2); + + await page.waitForLoadState('load'); // The sessionStorage guard should be set to the mismatched backend version. - const reloadVersion = await page.evaluate(() => - sessionStorage.getItem('reload-version'), - ); - expect(reloadVersion).toBe('0.0.0'); - - // The page should have reloaded once - expect(counterReload).toBe(2); + await expect + .poll( + () => page.evaluate(() => sessionStorage.getItem('reload-version')), + { timeout: 10000 }, + ) + .toBe('0.0.0'); }); }); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-tree.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-tree.spec.ts index 88b9f1b73..74601ecd6 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-tree.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-tree.spec.ts @@ -207,6 +207,13 @@ test.describe('Doc Tree', () => { { steps: 20 }, ); + const responsePromiseMoveDoc = page.waitForResponse( + (response) => + response.url().includes(`/move/`) && + response.status() === 200 && + response.request().method() === 'POST', + ); + await page.mouse.up(); // Wait for the reorder to be reflected in the tree before reloading — @@ -214,6 +221,9 @@ test.describe('Doc Tree', () => { await expect(allSubPageItems.nth(0).getByText(docChild2)).toBeVisible(); await expect(allSubPageItems.nth(1).getByText(docChild1)).toBeVisible(); + const responseMoveDoc = await responsePromiseMoveDoc; + expect(responseMoveDoc.ok()).toBeTruthy(); + // reload the page await page.reload(); diff --git a/src/frontend/apps/e2e/package.json b/src/frontend/apps/e2e/package.json index 88e1d723c..c3147a5d6 100644 --- a/src/frontend/apps/e2e/package.json +++ b/src/frontend/apps/e2e/package.json @@ -12,7 +12,8 @@ "test:ui": "yarn test --ui", "test:ui::firefox": "yarn test:ui --project=firefox", "test:ui::webkit": "yarn test:ui --project=webkit", - "test:ui::chromium": "yarn test:ui --project=chromium" + "test:ui::chromium": "yarn test:ui --project=chromium", + "show-report": "npx playwright show-report report" }, "devDependencies": { "@playwright/test": "1.62.1",