feat: implement captureDomSnapshot command#1097
Merged
shadowusr merged 3 commits intoJun 18, 2025
Merged
Conversation
commit: |
KuznetsovRoman
approved these changes
Jun 16, 2025
sipayRT
approved these changes
Jun 16, 2025
KuznetsovRoman
pushed a commit
that referenced
this pull request
Jun 24, 2025
* feat: implement captureDomSnapshot command * fix: update yaml format to be more correct and compact
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What's done?
Implemented a new command,
unstable_captureDomSnapshot. Desided to give itunstableprefix to be able to change it without notice for a while. This command is, in fact, pretty stable and thoroughly tested on various complex pages like search results, habr articles, playground pages, etc.High level overview how it works: we perform
browser.executeand traverse the whole DOM tree while building an efficient DOM snapshot in our custom format. So this is pretty cross-browser.The format of this snapshot is pretty compact. Each node is serialized into one line. All unnecessary tags and attributes are excluded. Form states, focus and hover states are captured as well.
What does the format look like? It's YAML, and below is a snapshot of ya.ru (you can also look at unit tests):
snapshot