Expand description
Host a Blitz document over the inspection socket, with no window.
§Why this exists
A component sweep drives one component at a time and asks what happens when a control is pressed. Answering that needs a live document on the other end of a socket: a screenshot says only that something painted, and a semantic tree written to a file says only what was on screen at one instant, so every check involving a click is undecidable against either.
Hosting that socket used to require opening a window, because
AgentControlServer::start was private to the runtime. A sweep of 71
components then meant 71 windows over whatever the person at the machine was
doing. Nothing about the server needs a window, and this is what that fact
buys: a process that owns a document, serves inspection and only paints
offscreen when a visual assertion explicitly asks for pixels.
§Why it is not part of ps-qa
ps-qa is forbidden from depending on blitz, tauri, winit or wgpu, so that
driving a control does not build a browser engine. A host has to link a
renderer. They are two crates for that reason, talking over the socket.
§Use
QA_INSPECT_PAGE=/path/to/one/components/dist qa-inspect-hostIt prints its descriptor path on stdout when it is ready, then serves until
killed. ps-qa sweep-components launches one of these per component and
waits for that line.