html-render-check

Validates HTML artifacts in a real Chromium render via Playwright, checking layout geometry, JS errors, and broken subresources.

Updated Jul 20, 2026
One-click install
npx skills add https://github.com/peachest/skills --skill html-render-check-peachest
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: html-render-check
Source: https://github.com/peachest/skills/tree/main/in-progress/html-render-check
Command: npx skills add https://github.com/peachest/skills --skill html-render-check-peachest

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires playwright, lxml, html5lib, and includes scripts (resource) components.

What problem does it solve? Static HTML checks (token compliance, nav chains, prose) read the file but cannot see what actually renders: SVG text collisions, shapes occluding labels, JS runtime errors, broken images, and horizontal overflow only appear in a real browser engine. This Skill loads generated HTML artifacts in headless Chromium and asserts on the rendered result before the learner or user sees the page. ## Core Features & Use Cases - Two-layer verification: a structure layer (DOCTYPE, duplicate ids, tag closure via lxml cross-validation, external-resource inventory, optional html5lib/VNU strict parsing) gates a render layer that runs in real Chromium via Playwright. - Render-layer checks: element presence smoke tests, JS console/page errors, failed subresource loads, HTML horizontal overflow, SVG text×text collision, shape×text occlusion, and text-escape from containing rects — with a calibrated adjudication model separating intentional design (box labels, background shapes, hidden layers) from hard findings. - Screenshot evidence: every run produces a full-page .render-check.png plus a JSON verdict per file, exiting non-zero when hard findings exist. - Use Case: After generating a teach lesson HTML with SVG diagrams, run bash scripts/check.sh lesson.html to catch a circle marker centered on a label or a broken image before publishing. ## Quick Start Run the html-render-check skill on my generated lesson.html to verify it renders correctly in Chromium and report any layout or runtime issues.

Frequently Asked Questions about html-render-check

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

FAQPage Schema
How do I check if generated HTML renders correctly in a real browser?▼

Run scripts/check.sh with the HTML file path; it validates structure offline, then loads the file in headless Chromium via Playwright, evaluates a geometry and error-check battery, and saves a full-page screenshot with a JSON verdict.

How to detect SVG text overlap and occlusion in HTML pages?▼

The render battery uses getBoundingClientRect on every SVG child to find text×text collisions (≥30% overlap is hard) and filled shapes painted after text occluding ≥35% of it. Box labels, background shapes, stroke-only shapes, and hidden layers are excluded as intentional design.

Does Playwright work with file:// URLs and relative asset paths?▼

Yes, file:// navigation is the default here, so relative paths like ../assets/base.css resolve naturally without a local HTTP server. Note that fetch() and XHR against file:// origins fail by Chromium design, so those failures are reported as advisory only.

Why does Chromium fail to launch on cluster or container nodes?▼

Cluster nodes often lack unprivileged userns, so the runner launches with --no-sandbox --disable-dev-shm-usage by default. Run scripts/check-env.sh to probe node, the Playwright module, chromium binaries, and system libraries like libgbm1 and libxkbcommon0.

What are the limitations of static HTML validation compared to render checks?▼

Static parsing catches DOCTYPE, duplicate ids, and unclosed tags but cannot see layout geometry, JS runtime errors, or broken subresources. Render checks in a real engine catch what parsing misses, though findings are adjudication prompts since some overlaps are intentional design.