feat(styles): computed CSS, box model rects, visibility, batch, diffs, named snapshots #93
+1,512
−3
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.
Fully implements feature request #86.
feat(styles): add computed CSS tools, box model rects, visibility, batch, diffs, and named snapshots
Why
LLMs need deterministic layout/style truth to diagnose visibility, overlap, and cascade issues. Computed styles and box metrics enable reliable assertions and before/after comparisons in CI or HMR flows.
What’s included
get_computed_styles(optionalproperties,includeSources)get_computed_styles_batchget_box_model(content/padding/border/margin quads + explicit rects; client/bounding; DPR-rounded)get_visibility(reasons:display:none,visibility:hidden|collapse,opacity:0,zero-size,off-viewport,clip-path)diff_computed_styles(A vs B)save_computed_styles_snapshotanddiff_computed_styles_snapshotCSS.getComputedStyleForNode,CSS.getMatchedStylesForNode,DOM.getBoxModel,Page.getLayoutMetricsgetMatchedStylesForNode(best-effort)DOM.requestNode; warmDOMagentTests & docs
tests/tools/styles.test.tstests/e2e.styles.test.tschrome_devtools_localnpm run docs(33 tools total)Notes
defineTool, zod schemas, fenced JSON).protocolTimeoutraised to reduce flakiness during e2e.Example
get_computed_styles→displayget_box_model→contentRect.width/height ≥ 44×44DPR-roundedget_visibility→isVisiblewithout reasonsPlease review; happy to adjust naming, output shape, or visibility heuristics.