Skip to content

id(e2e): no Playwright coverage of the world surface — presenter, input, records, resize untested in a browser (#1076 slice 3 gap) #1322

Closed

Description

@dezren39

Gap found by the Phase 9 validation audit (#1076, slice 3)

The world surface — the Phase 9 portable screen view and everything around it (P9.1 web presenter, P9.2 input/viewport, P9.7 chat, P9.9 records readback, P9.8 reflow) — has no browser-level E2E coverage at all.

Verified on current main (1bf2afb, 2026-10-27) during the #1076 slice-3 walk: pkgs/id/e2e/tests/ contains only editor-focused Playwright specs (autosave, basic, editor-features, file-operations, navigation, websocket). The only world-adjacent assertion is basic.spec.ts:28 (world explorer + "Global chat" heading visible). No spec joins a world, renders a Screen surface, sends keys/paste, pages records, or resizes a viewport in a real browser.

The rows are verified at the unit/contract layer instead (evidence on #1076 slice 3): world-surface.test.ts, world-keyboard.test.ts, and the world-contract.test.ts session test (vitest, green in test-web-unit on run 40452777239), plus the Rust presenter tests in world_presentation.rs. What is missing is exactly the layer where presenter regressions have historically shipped: a real browser against a real server.

Acceptance criteria

Filed by the queue worker (task 1257, slice 3) per the #1076 audit contract: every gap gets its own issue.

Activity

  1. added
    kind/testTest coverage, test infrastructure, or test-only fixes
    priority/highImportant and time-sensitive
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    nowOrg Project gate: active priority — orchestrator adds to the board
    on Oct 27, 2026
  2. developing-today commented on Oct 27, 2026

    @developing-today
    Contributor
  3. added
    source/queue-workerFiled or worked by the queue/worker pilot
    effort/lLarge: multi-day or open-ended; expect staged check-ins
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 27, 2026
  4. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    Intake review

    Fleet monitor intake pass (protocol §5), 2026-10-27. Verified still live: no merged PR implements or resolves this issue as of this run, and no duplicate open issue covers it.

    Related: Related: filed from #1076 (Phase 9 validation, slice 3); cross-references #811 resize concerns; sibling gap #1315 (P9.3b provenance). Already queued? No queue label/task yet — routing is the fleet's next producer/worker pass.

    Notes / risks / suggested approach: Risk: E2E specs are the slowest layer; keep the spec set minimal and deterministic (seeded world state) so it can live in the nightly/e2e layer without flaking. Suggested approach: one spec covering join+render+key/paste, companions for records paging and resize reflow.

    Labels normalized by this pass: source/queue-worker, status/needs-triage, effort/l, meta/enriched.

  5. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed on Nov 2, 2026
  6. 5 remaining items

  7. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  8. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  9. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    agent-note:v1
    state: reviewed (coverage loop-back)
    Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 7225 (triage, queued, priority 50) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
    Found via: coverage loop-back 2026-11-03

  10. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  11. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — triage by task 7225 (lane code-m), 2026-11-03. Verdict: ALREADY DONE at current main — closing with evidence.

    The fix enqueued by the earlier triage (task 6569, handed to the opencode lane 2026-11-02) has landed: pkgs/id/e2e/tests/world-surface.spec.ts (232 lines, 5 tests) is on main (repo-keeper snapshot 7fb1e6d, 2026-11-03T00:24Z; format follow-up 96d3cf8). Verified against every acceptance criterion:

    • Join + presenter: "join renders cell text on a Screen surface (not guest HTML)" — joins the lobby world via the invite/join UI, asserts the validated cell grid (role=img, "columns by rows") renders the fixture counter as cell text.
    • Input: "a keypress sends input and the view updates" (+1 via the input frame) and "a paste sends a paste frame and the view updates" (+2).
    • Records: "records readback pages with the after cursor, both pages render" — first page plus an explicit after-cursor fetch over a second in-page WebSocket; both pages' union equals the UI render. (Fixture keeps a single record, so page 1 is also the last; the cursor path is exercised explicitly — noted in the spec itself.)
    • Resize: "viewport resize re-renders a reflowed surface" — 30→20→30 columns across viewport changes, cross-referencing id phase-9: a joiner's resize (up to 500x200) can permanently poison a world via the guest layout() call exceeding presentation_bytes #811.
    • E2E layer: pkgs/id/e2e/playwright.config.ts runs testDir ./tests with WORLD_FLAGS servers (roc-screen fixture) for both browser projects, so the spec runs in the existing e2e layer. A pointer comment naming this spec as the P9.1/P9.2/P9.7/P9.9 E2E evidence was posted on id: validation — Phase 9 portable platform #1076 for its audit table.

    No follow-up fix task is owed: the coverage this issue asked for exists and is wired in.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-inskind/testTest coverage, test infrastructure, or test-only fixesmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addednowOrg Project gate: active priority — orchestrator adds to the boardpriority/highImportant and time-sensitivesource/queue-workerFiled or worked by the queue/worker pilottask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions