Skip to content

Add closed shadow DOM capture via CDP#33

Open
aryanku-dev wants to merge 1 commit intomainfrom
PER-7292
Open

Add closed shadow DOM capture via CDP#33
aryanku-dev wants to merge 1 commit intomainfrom
PER-7292

Conversation

@aryanku-dev
Copy link
Copy Markdown

Summary

  • Add exposeClosedShadowRoots() method using CDP to discover and expose closed shadow roots before DOM serialization
  • Non-fatal: catches exceptions for non-Chromium browsers and CDP errors

Ported from percy/percy-playwright#609

Test plan

  • Verify snapshot works on Chromium (closed shadow roots captured)
  • Verify snapshot works on Firefox/WebKit (CDP silently skipped)
  • Verify no regression on pages without shadow DOM

🤖 Generated with Claude Code

Use CDP to discover closed shadow roots before DOM serialization.
Closed shadow roots are inaccessible from JS (element.shadowRoot === null),
but CDP's DOM domain can pierce them. We resolve each closed shadow root
to a JS object and store it in a WeakMap that PercyDOM.serialize() reads.

- Add exposeClosedShadowRoots() using CDPSession
- Add walkNodes() helper to traverse CDP DOM tree
- Skip iframe contentDocument nodes (cross-frame not yet supported)
- Non-fatal: catches exceptions for non-Chromium browsers and CDP errors
- Called after PercyDOM injection, before DOM serialization

Ported from percy/percy-playwright#609

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@aryanku-dev aryanku-dev requested a review from a team as a code owner April 20, 2026 18:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant