17 KiB
preflight-03: Browser evidence hygiene
| Metadata | Value |
|---|---|
| Status | failed |
| Wave | preflight |
| PR refs | #6545 |
| Personas | Casey Chaos |
| Boards | None (seeded Casey home inspected) |
| Profiles | main-writable |
| Chromium viewports | mobile-320, desktop-1920 |
| Zoom | 100% primary; 125% and 200% measured; 80% not reachable via headless keyboard control |
| Input | mouse, keyboard |
| Artifact directory | /home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03 |
| Candidate SHA | f57a660088 |
| URL / actual port | http://127.0.0.1:34401 / 34401 |
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
| Executed persona | Casey Chaos |
| Browser session ID | qa-v2-preflight-03-final |
| Timestamp | 2026-08-31T21:18:20.630Z |
| Executed viewports / input / zoom | mobile-320 and desktop-1920 / mouse and keyboard / 100% primary, 125% and 200% visual-scale evidence |
Dogfood evidence
| Case ID | Status | Evidence | Observed | Expected |
|---|---|---|---|---|
| PF-003-ENVIRONMENT | passed | final mobile and desktop browser artifacts | Runtime reached the login page, authenticated Casey home rendered at both exact viewports, reload returned 200, and no page errors were reported. The previous redirect loop did not reproduce. | Verify candidate identity, Chromium session, runtime health, fixture reachability, and clean console/network baselines. |
| PF-003-ACCESS | passed | final home and keyboard artifacts | Casey Chaos home and seeded widgets were reachable. Keyboard focus reached Search, Enter opened the Search dialog, and Escape closed it. No product state was mutated. | Verify assigned profile, persona, home render, and access boundary before mutations. |
| PF-003-EVIDENCE | failed | timestamped final evidence | Exact 320x568 and 1920x1080 screenshots, geometry, diagnostics, and redaction scans were captured. Mobile 100% has a reproducible weather top clip; mobile 200% visual scale is horizontally clipped. Headless keyboard zoom-out did not reach 80%. | Capture timestamped viewport/input/zoom evidence, inspect overflow, and confirm artifacts contain no secrets. |
Diagnostic and geometry baseline
- Mobile 320x568 at 100%:
innerWidth=320,innerHeight=568,scrollWidth=305,scrollHeight=729; document, auth, and tRPC requests returned 200. See geometry, network, console, and errors. - Desktop 1920x1080 at 100%:
innerWidth=1920,innerHeight=1080,scrollWidth=1905,scrollHeight=1185; document, auth, and tRPC requests returned 200. See geometry, network, console, and errors. - Console had no page errors. It contained the development React DevTools/HMR logs and a repeatable PostHog duplicate-initialization warning; no request bodies were captured.
- A marker scan over all
rerun-final-*text artifacts found no password, authorization, bearer, cookie, session-token, access-token, client-secret, API-key, request-body, or response-body markers. Final PNGs were visually reviewed and contain only the rendered app.
Findings
RV2-P2-001 — P2: mobile weather card clips the current temperature
Preconditions: candidate f57a660088, main-writable, Casey Chaos, mobile-320, 100% primary zoom, fresh final named Chromium session.
- Launch the named Chromium session with
--no-sandbox, authenticate with the supplied vault, and wait for hydration. - Set the viewport to exactly 320x568 and reload after clearing diagnostics.
- Observe the plain mobile home screenshot: the weather card's current temperature is cut off at its top edge.
- The numeric geometry measures the temperature text at
y=160.0625and the 160x69 card aty=178, withoverflow=hiddenandclippedTop=17.9375.
Expected: the seeded weather card renders its current temperature fully inside the card. Actual: about 17.94px of the text is above the card and is hidden. Reproducibility: reproduced on the clean reload and after the daemon-restart handoff.
RV2-P2-002 — P2: mobile home is horizontally clipped at 200% visual scale
Preconditions: candidate f57a660088, main-writable, Casey Chaos, mobile-320, 200% visual scale.
- Set the viewport to exactly 320x568 and apply Chromium visual scale 2.
- Capture the plain 200% mobile screenshot.
- Observe that the weather card and text extend beyond the visible 160px visual viewport; the right side is cut off and a horizontal scrollbar is exposed.
- The 200% geometry records
visualViewport.scale=2,visualViewport.width=160, andscrollWidth=320.
Expected: assigned high-zoom evidence remains usable without the home content being cut off. Actual: content requires horizontal movement and is visibly clipped. Reproducibility: reproduced after reload. Qualification: the headless CLI could not apply the 80% keyboard zoom; 125% and 200% rows were captured through Chromium visual page scale and should be confirmed with a real browser-zoom control before release triage.
Artifacts
- mobile 320x568, 100% mouse annotated and plain
- mobile keyboard focus and Search dialog
- mobile weather geometry
- desktop 1920x1080, 100% annotated and plain
- desktop 125%, desktop 200%, mobile 125%, and mobile 200%
- mobile 200% plain and 200% geometry
- 80% capability result
Mutations and persistence
No credentials were printed or inspected. Reloaded authenticated home state returned to Casey's home. No product state was mutated; keyboard Search open/close was canceled cleanly.
Blockers and infrastructure notes
- The prior locale redirect-loop blocker was not reproduced at
http://127.0.0.1:34401; the login page and Casey home rendered normally after the instructed hydration fallback. - A browser-daemon restart interrupted an earlier probe. The disrupted session and its artifacts were excluded from pass/fail evidence; all final artifacts above came from
qa-v2-preflight-03-finallaunched after the restart. - The headless CLI could not reach 80% with keyboard zoom-out; this is recorded as not reached, not passed.
Cleanup
The final named browser session was closed. No shared report aggregator or ledger was run. Artifacts remain under the untracked packet directory; no secret values were captured.