Skip to content

I1021 — A browser proves the interface, at the widths people use

Extend the existing browser checking to cover navigation on desktop and mobile, search and filtering, the detail view, graph initialisation, conditional runtime exposure, link integrity and console errors.

BLOCKED wave 5 · p1 · implementation profile · parallel safe

Part of capability-graph — One capability graph, two projections, and no second inventory of what this repository can do.

Blocked. This issue cannot start until I1014, I1016 are done. The status is derived from that, not declared.

Objective

Extend the existing browser checking to cover navigation on desktop and mobile, search and filtering, the detail view, graph initialisation, conditional runtime exposure, link integrity and console errors.

Why

Everything in this milestone is finally judged by whether a person can open it. Server-side tests cannot see an overflowing table, a menu that does not open or a script that throws on load.

Current state

scripts/ui audits every surface the executable serves, not only static directories: scripts/lib/ui-routes.mjs derives a served surface's routes from its own anchors, crawled from its mount, and both browser instruments import it, so the Cockpit, the home page and the Swagger shell are inside the ADR 0022 width, contrast and accessibility sweep (PR #178, 2026-09-10). scripts/cockpit-probe keeps the shell, the security headers, the design fingerprint, the interactions and the no-JavaScript claim. What this issue still owes is its own assertions -- search and filtering, the detail view, graph initialisation, conditional runtime exposure and link integrity, at named viewports -- and its dependencies I1014, I1015 and I1016 are not recorded as done. Measured on master 6042f4286, 2026-09-10.

Desired state

The probe covers the derived surfaces at representative viewports, uses stable selectors and runs in CI.

Scope

  • scripts/cockpit-probe

Out of scope

  • Pixel comparison of a rendered graph
  • Selectors coupled to presentational class names

Dependencies

What waits on this

Acceptance criteria

  • Desktop and mobile navigation, search and filtering, the detail view and graph initialisation are all exercised
  • Representative viewports from a narrow phone to a wide desktop are asserted, including the absence of horizontal overflow
  • The runtime-only surfaces appear when a backend is present and are not offered when it is not
  • Internal links resolve and the console is free of errors
  • Selectors are stable identifiers rather than presentational classes

Validation

  • scripts/cockpit-probe

Evidence required

  • browser_coverage
  • viewport_assertions

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Risk

Browser tests are the flakiest thing in any suite. Bounded waits on stable selectors, and no sleeps.

Timeline

started
—
verified
—
completed
—

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I1021.yaml. Read it back with majordomus plan show I1021.

Searches the titles and descriptions of every page this site publishes.