feat(styles): computed CSS, box model rects, visibility, batch, diffs, named snapshots #93
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_batch
get_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_snapshot
anddiff_computed_styles_snapshot
CSS.getComputedStyleForNode
,CSS.getMatchedStylesForNode
,DOM.getBoxModel
,Page.getLayoutMetrics
getMatchedStylesForNode
(best-effort)DOM.requestNode
; warmDOM
agentTests & docs
tests/tools/styles.test.ts
tests/e2e.styles.test.ts
chrome_devtools_local
npm run docs
(33 tools total)Notes
defineTool
, zod schemas, fenced JSON).protocolTimeout
raised to reduce flakiness during e2e.Example
get_computed_styles
→display
get_box_model
→contentRect.width/height ≥ 44×44
DPR-roundedget_visibility
→isVisible
without reasonsPlease review; happy to adjust naming, output shape, or visibility heuristics.