From a2f2dd0b1f323350e48872a4803c7d157e69a6fe Mon Sep 17 00:00:00 2001 From: Dennis Jakobsen Date: Thu, 17 Sep 2026 10:33:51 +0200 Subject: [PATCH] test(e2e): keep the slide-over packets rows inside the fixture's time window The e2e fixture is freshened once before the server starts, and the packets page defaults to a 15-minute window. The slide-over flake gate runs after the main E2E step, ~16 minutes in, when that window no longer contains any fixture packet, so packets@800 waited 30s for a row that could not appear. Pin the packets scenario to a 180-minute window, the largest packets.js keeps at <=1024px, and bound the e2e job at 150 minutes so the gate always runs inside it. Co-Authored-By: Claude Opus 5 --- .github/workflows/deploy.yml | 1 + test-slideover-1056-e2e.js | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a86dd21fb..48a4a0df3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -251,6 +251,7 @@ jobs: name: "🎭 Playwright E2E Tests" needs: [go-test] runs-on: ubuntu-latest + timeout-minutes: 150 defaults: run: shell: bash diff --git a/test-slideover-1056-e2e.js b/test-slideover-1056-e2e.js index 4b4a14111..c4964d61c 100644 --- a/test-slideover-1056-e2e.js +++ b/test-slideover-1056-e2e.js @@ -56,6 +56,16 @@ const PAGES = [ // ---- Narrow viewport: slide-over MUST appear ---- for (const p of PAGES) { const ctx = await browser.newContext({ viewport: { width: 800, height: 800 } }); + if (p.name === 'packets') { + // The CI fixture is static: timestamps are freshened once before the + // server starts. The packets page defaults to a 15-min window, so rows + // vanish ~15 min into the job; 180 is the largest window packets.js + // keeps at <=1024px (larger values reset to 15). The e2e job's + // timeout-minutes keeps the run inside that window. + await ctx.addInitScript(() => { + try { localStorage.setItem('meshcore-time-window', '180'); } catch (_) {} + }); + } const page = await ctx.newPage(); page.setDefaultTimeout(8000); page.on('pageerror', (e) => console.error('[pageerror]', e.message));