headless-visual-verification

Verify web and WebGL rendering headlessly via Playwright pixel probes and DOM introspection.

Updated Aug 21, 2026
One-click install
npx skills add https://github.com/TylerSimons1127/vibe --skill headless-visual-verification-tylersimons1127
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: headless-visual-verification
Source: https://github.com/TylerSimons1127/vibe/tree/main/skills/web-qa/headless-visual-verification
Command: npx skills add https://github.com/TylerSimons1127/vibe --skill headless-visual-verification-tylersimons1127

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires acorn, and includes references (resource) components.

What problem does it solve? When you build a web artifact (Three.js game, Canvas2D simulation, dashboard, UI mockup) but cannot see the screen — vision is unavailable, the model is text-only, or the run is headless — you cannot confirm whether it actually renders. This Skill replaces guessing with programmatic proof by reading the browser's real state, pixels, and errors. ## Core Features & Use Cases - Pixel-level WebGL verification: Sample canvas pixels via gl.readPixels or 2D canvas readback with preserveDrawingBuffer to prove content is drawn, not a black screen. - Error and state introspection: Hook pageerror events, expose debug handles on window, and read scene/DOM state to distinguish logic bugs from input bugs. - Syntax hunting for large scripts: Use the acorn tokenizer to locate the first unclosed brace in huge single-file <script> blobs that naive counters miss. - Use Case: A user reports your single-file Three.js game shows a blank screen. You serve it over HTTP, hook pageerror, evaluate the debug handle, sample pixels to confirm distinctColors > 1, and drive a behavior to verify the subsystem works — all without seeing anything. ## Quick Start Serve my HTML file over HTTP and use Playwright to verify it renders by checking page errors, reading the debug state, and sampling canvas pixels.

Frequently Asked Questions about headless-visual-verification

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I verify a webpage renders without screenshots or vision?▼

Use Playwright to evaluate in-page debug handles, read DOM and scene state, and sample canvas pixels via gl.readPixels or a 2D canvas getImageData. Counting distinct colors over a grid proves content was drawn without ever seeing the screen.

How to test WebGL canvas rendering in headless Playwright?▼

Set preserveDrawingBuffer: true on the WebGLRenderer so pixel readback survives compositing. After rendering, call gl.readPixels or draw the canvas onto a 2D canvas and use getImageData; distinctColors of 1 means nothing was drawn.

Why does Playwright fail to open local HTML files?▼

The Playwright MCP blocks the file:// protocol, so navigation fails before any probe runs. Serve the file over HTTP instead, for example with python -m http.server 8765, then navigate to the 127.0.0.1 URL.

Why is my single-file script silently dead even though it parses fine?▼

A temporal dead zone error occurs when setInterval or an early function call touches a let/const variable declared later, throwing a ReferenceError at runtime. It surfaces as a pageerror event, not a console message, so hook pageerror before navigation and reorder declarations before first use.

How do I find a missing closing brace in a large JavaScript file?▼

Use the acorn tokenizer to walk tokens and maintain a brace stack, since naive counters are fooled by braces inside GLSL strings and comments. The first unclosed opening brace on the stack pinpoints where the missing closing brace belongs.

Why does my game loop render black in headless mode but work manually?▼

Hidden headless pages throttle requestAnimationFrame, so the render loop may never fire even though update() and a manual render() work. Test with a synchronous renderer.render() call followed by pixel sampling before concluding rendering is broken.