From 002b40255248c82a8b67e79960934624a9395082 Mon Sep 17 00:00:00 2001 From: Terada Kousuke Date: Sat, 11 Apr 2026 21:09:50 +0900 Subject: [PATCH 1/2] fix(e2e): stabilize flaky tests on 2vCPU CI runners - Increase expect.timeout from 10s to 15s on CI - Increase openSettings() keyboard shortcut wait from 3s to 5s - Add retry click mechanism to openStatusPopover() Fixes #166 Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/app/e2e/actions.ts | 13 +++++++++++-- packages/app/playwright.config.ts | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/app/e2e/actions.ts b/packages/app/e2e/actions.ts index ac9439360daa..75ab134f2ea6 100644 --- a/packages/app/e2e/actions.ts +++ b/packages/app/e2e/actions.ts @@ -298,7 +298,7 @@ export async function openSettings(page: Page) { await page.keyboard.press(`${modKey}+Comma`).catch(() => undefined) const opened = await dialog - .waitFor({ state: "visible", timeout: 3000 }) + .waitFor({ state: "visible", timeout: 5000 }) .then(() => true) .catch(() => false) @@ -816,7 +816,16 @@ export async function openStatusPopover(page: Page) { if (!opened) { await expect(trigger).toBeVisible() await trigger.click() - await expect(popoverBody).toBeVisible() + + const visible = await popoverBody + .waitFor({ state: "visible", timeout: 3000 }) + .then(() => true) + .catch(() => false) + + if (!visible) { + await trigger.click() + await expect(popoverBody).toBeVisible() + } } return { rightSection, popoverBody } diff --git a/packages/app/playwright.config.ts b/packages/app/playwright.config.ts index e9fb1cfe4ed7..52a35f3d5b05 100644 --- a/packages/app/playwright.config.ts +++ b/packages/app/playwright.config.ts @@ -18,7 +18,7 @@ export default defineConfig({ outputDir: "./e2e/test-results", timeout: 60_000, expect: { - timeout: 10_000, + timeout: process.env.CI ? 15_000 : 10_000, }, fullyParallel: process.env.PLAYWRIGHT_FULLY_PARALLEL === "1", forbidOnly: !!process.env.CI, From feaf319807da76a59d0759f335e4ff0193aa4b66 Mon Sep 17 00:00:00 2001 From: Terada Kousuke Date: Sat, 11 Apr 2026 21:19:46 +0900 Subject: [PATCH 2/2] fix(e2e): remove retry click in openStatusPopover, rely on expect timeout Retry click could toggle the popover closed if tabs hadn't loaded yet. Instead, rely on the global expect.timeout (15s on CI) after a single click. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/app/e2e/actions.ts | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/packages/app/e2e/actions.ts b/packages/app/e2e/actions.ts index 75ab134f2ea6..f849d5953e63 100644 --- a/packages/app/e2e/actions.ts +++ b/packages/app/e2e/actions.ts @@ -816,16 +816,7 @@ export async function openStatusPopover(page: Page) { if (!opened) { await expect(trigger).toBeVisible() await trigger.click() - - const visible = await popoverBody - .waitFor({ state: "visible", timeout: 3000 }) - .then(() => true) - .catch(() => false) - - if (!visible) { - await trigger.click() - await expect(popoverBody).toBeVisible() - } + await expect(popoverBody).toBeVisible() } return { rightSection, popoverBody }