visual: headless browser harness for the canvas client JS#147
Merged
Conversation
Throwaway canvas on 127.0.0.1 behind a stallable TCP proxy, driven by Playwright chromium — covers the client-side behaviour pytest can't reach: SSE watchdog/self-heal incl. silently stalled streams (#137), poll cadences and hidden-tab gating (#141), token sheet / toast / offbar flows (#142), and e-ink toast legibility (#146). 18 checks; /input is always route-intercepted so no keystrokes can reach live tmux panes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the PR #144 verification rig into the repo at
packages/visual/tests/browser/so it outlives the session that built it.127.0.0.1:8791(MEDIA_VISUAL_TRUST_TAILNET=1, video off) behind a stallable TCP proxy — pausing the proxy sockets is the only way to reproduce a silently stalled SSE stream for the canvas: SSE stream can silently stall (no heartbeat/watchdog) and has no client cap #137 watchdog./agentsmemoization + collapsed/expanded/hidden cadences (canvas: /agents polling is a subprocess storm and drains phones #141), 401→toast→token-sheet→retry, Esc-cancel, error-detail toast, offbar/self-heal, no nativeprompt()(canvas: prompt() token/seek fallbacks are dead-ends on a keyboardless wall; disconnect illegible #142), e-ink theme + solid-toast regression (visual: e-ink override for #toast #146).MEDIA_HARNESS_SRC=<worktree>/packages/visual/srctests any branch without reinstalling./inputis always route-intercepted in the browser — keystrokes can never reach live tmux panes. The live wall service is untouched.Verified:
node harness.jsfrom this branch → 18/18 passed. Setup (npm install +npx playwright install chromium) documented in the README.🤖 Generated with Claude Code