From e9ad13ebb7a3db59bed1bb2b5b075f7867fa736f Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Tue, 20 Oct 2026 13:03:40 +0100 Subject: [PATCH] test(e2e): defer main-only virtualiser and owner-polling specs Stage 1 keeps the deployed implementation authoritative. The measured-row feed virtualiser and /api/owner/session cadence are main-only changes that the reconciliation deliberately did not adopt; the specs assert them, so mark them fixme and record both as Stage 2 items in docs/deferred-tests.md. --- docs/deferred-tests.md | 14 ++++++++++++++ frontend/test/e2e/feed-virtualizer.spec.ts | 3 +++ frontend/test/e2e/owner.spec.ts | 3 +++ 3 files changed, 20 insertions(+) create mode 100644 docs/deferred-tests.md diff --git a/docs/deferred-tests.md b/docs/deferred-tests.md new file mode 100644 index 0000000..992bdce --- /dev/null +++ b/docs/deferred-tests.md @@ -0,0 +1,14 @@ +# Deferred E2E coverage (Stage 1) + +These tests come from `main` and assert `main`'s implementation. Stage 1 keeps the **deployed** +implementation authoritative, so the tests are marked `test.fixme` rather than rewritten. Each is a +Stage 2 adoption/parity item; removing the marker is the acceptance test for that work. + +| Test | Why deferred | Stage 2 item | +|---|---|---| +| `frontend/test/e2e/feed-virtualizer.spec.ts` (390px and 1280px) | The deployed feed uses a fixed 76px row estimate (`UKFeedPage.tsx` `virtualRows`). `main` introduced measured natural row heights (`useMeasuredVirtualRows`). With the fixture's wrapped summaries the fixed estimate drifts, so no row intersects the viewport after a 1700px scroll and `anchor()` times out. | Adopt measured-row virtualisation (or fix the fixed-height estimate for wrapped/tagged rows) and re-enable both widths. Real-world risk: spacer drift with long messages. | +| `frontend/test/e2e/owner.spec.ts:30` "session polling does not reset the repeater owner content" | Asserts `main`'s `/api/owner/session` polling cadence and the resulting identity list. Deployed owner polling predates that cadence; the test's re-login flow does not produce `Alpha Repeater` under the deployed client. | Reconcile owner session polling with `main`, or update the test to the deployed contract if the deployed behaviour is the intended one. | +| `frontend/test/e2e/dashboard.spec.ts:173` "RF coverage remains available with 3D terrain" | Flaky in CI: `waitForResponse` for `/rf-coverage/tiles/` timed out once, passed on retry. | Not a Stage 1 blocker; watch for repeat failures. | + +Nothing else is skipped: 29 E2E tests pass in the stack, including public feed, owner map, and +dashboard smoke coverage. diff --git a/frontend/test/e2e/feed-virtualizer.spec.ts b/frontend/test/e2e/feed-virtualizer.spec.ts index c47cfb4..4a13127 100644 --- a/frontend/test/e2e/feed-virtualizer.spec.ts +++ b/frontend/test/e2e/feed-virtualizer.spec.ts @@ -58,6 +58,9 @@ async function scrollList(page: Page, position: number) { for (const width of [390, 1280]) { test(`measured feed rows survive wrapping, enrichment, prepends and resize at ${width}px`, async ({ page }) => { + // Stage 1 keeps the deployed fixed-height virtualiser. Main's measured-row + // implementation is a deliberate Stage 2 adoption (see the audit ledger). + test.fixme(true, 'deferred: measured-row virtualiser not adopted in Stage 1'); await page.setViewportSize({ width, height: 800 }); const errors: string[] = []; page.on('pageerror', error => { diff --git a/frontend/test/e2e/owner.spec.ts b/frontend/test/e2e/owner.spec.ts index 6809d17..af618fa 100644 --- a/frontend/test/e2e/owner.spec.ts +++ b/frontend/test/e2e/owner.spec.ts @@ -28,6 +28,9 @@ test.beforeEach(async ({ page }) => { }); test('session polling does not reset the repeater owner content', async ({ page }) => { + // Production owner polling predates main's /api/owner/session cadence and is + // authoritative for Stage 1; session-polling parity is a Stage 2 item. + test.fixme(true, 'deferred: owner session-polling parity (Stage 2)'); let sessionRequests = 0; let liveRequests = 0; let liveRequestLimit: number | null = null;