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.
This commit is contained in:
Hermes Agent committed 2026-10-20 13:03:40 +01:00
1 parent d2f24b7caf
commit e9ad13ebb7
3 files changed
+20

No files matched your search

+14
View File
@@ -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.
@@ -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 => {
+3
View File
@@ -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;