take_snapshot appears blank on <canvas>/WebGL and lazy-a11y canvas UIs
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- Half a day
- Newbie friendliness
- 76/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
- Domain
- accessibility, developer-experience
Research direction
Start with the snapshot creation in src/TextSnapshot.ts and the existing pruning note in src/formatters/SnapshotFormatter.ts; reproduce with a page containing a visible <canvas>. Determine whether to add a canvas-specific hint and update skills/a11y-debugging/SKILL.md and skills/chrome-devtools/SKILL.md. Done means nonverbose snapshots explain why canvas content may be absent and direct users to screenshots, verbose mode, or an accessibility placeholder, with appropriate snapshot tests.
Written by the indexing model from the issue text.
Description
When an agent follows skills/chrome-devtools/SKILL.md ("Prefer take_snapshot over take_screenshot" to inspect page state) on a <canvas>-rendered page—such as a 3D WebGL/Three.js scene, a canvas chart/game, or a canvas UI toolkit—take_snapshot returns an empty RootWebArea (or a single accessibility-opt-in trigger button) with zero application content, leading the agent to assume the page failed to render.
Two ways this hits <canvas> applications in practice
- Unlabelled
<canvas>elements are pruned by default (verbose: false):- In
src/TextSnapshot.ts#L59-L63, defaulttake_snapshotrunspage.pptrPage.accessibility.snapshot({ includeIframes: true, interestingOnly: !verbose }). - Because Chromium's
interestingOnly: truefilter drops<canvas>nodes that lack explicit ARIA attributes, a full-viewport WebGL/Three.js or 2D canvas app produces a snapshot with no<canvas>node at all—so the agent does not even know the viewport is driven by a canvas that requirestake_screenshotorverbose: true.
- In
- Deferred / opt-in DOM accessibility trees on canvas UI engines:
- Canvas-based UI frameworks and document editors (e.g. Flutter Web
canvaskit/skwasm, Compose Multiplatform for Web, or canvas document viewers) avoid maintaining thousands of hidden DOM accessibility nodes at 60fps until assistive technology clicks an offscreen opt-in element (such as<flt-semantics-placeholder aria-label="Enable accessibility" role="button">). - Until that trigger is activated,
take_snapshotanda11y-debuggingsee only a singlebutton "Enable accessibility"and 0 application controls.
- Canvas-based UI frameworks and document editors (e.g. Flutter Web
Possible directions
- When
take_snapshot(verbose: false) returns an almost-empty AX tree on a page that contains a visible<canvas>(similar to the existing note insrc/formatters/SnapshotFormatter.ts#L383-L390when a selected DevTools element is pruned byinterestingOnly), include a note indicating that a<canvas>is present and suggestingtake_screenshot,verbose: true, or activating any accessibility opt-in placeholder. - Note in
skills/a11y-debugging/SKILL.md(andskills/chrome-devtools/SKILL.md) that canvas-rendered apps may requiretake_screenshotor clicking an"Enable accessibility"placeholder before inspecting the AX tree.
- Dominant language
- TypeScript
- Stars
- 54.1k
- Forks
- 6.3k
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 241
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ChromeDevTools/chrome-devtools-mcp
-
Truncating a page URL can split a percent-encoded characterPossibly taken @axchadxs claimed this 4 days ago. Openconfirmed p3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
ChromeDevTools/chrome-devtools-mcp#3340 · 1 comment ·
Maintainers usually reply within 1 day
-
confirmed p3
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
ChromeDevTools/chrome-devtools-mcp#3089 · 2 reactions ·
Maintainers usually reply within 1 day
-
`resize_page` reports success when the page does not end up at the requested sizePossibly taken A pull request linked to this issue is open or already merged. Openconfirmed p3
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
ChromeDevTools/chrome-devtools-mcp#2998 ·
Maintainers usually reply within 1 day
-
`wait_for` never finds visible text whose HTML source contains line breaks or repeated spacesPossibly taken A pull request linked to this issue is open or already merged. Openconfirmed p3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ChromeDevTools/chrome-devtools-mcp#2947 · 1 comment ·
Maintainers usually reply within 1 day
-
Client roots from a WSL2 client are dropped by a Windows-side server (fileURLToPath ERR_INVALID_FILE_URL_PATH)May be free again @nroscino claimed this 28 days ago, and no pull request is open. Openconfirmed p3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ChromeDevTools/chrome-devtools-mcp#2839 · 2 comments · 1 assignee ·
Maintainers usually reply within 1 day
All issues in ChromeDevTools/chrome-devtools-mcp
Similar issues
-
fix(worker): keep normal prepare waiting states failure-freePossibly taken @LichKing-2234 claimed this today. Openagent:codex priority:P1
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
AgoraIO-Extensions/agent-infra#3745 ·
Maintainers usually reply within 1 day
-
The five-line work window can drop its oldest line: the per-line byte share ignores the JSON framingPossibly taken @Eapp1e claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
makecindy/cindy#7973 · 1 comment ·
Maintainers usually reply within 1 day
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 78/100
lingdojo/kana-dojo#33337 · 1 comment · 5 reactions ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
code-yeongyu/senpi#4917 · 1 comment ·
Maintainers usually reply within 1 day