Accessibility lookups fetch the entire DOM tree once per selector
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 68/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Stale
- Tech stack
- playwright, typescript
- Domain
- performance, testing
Research direction
In src/deps/real.ts, inspect backendNodeIdForSelector and how it obtains the document root. First compare a depth: 0 request with the current depth: -1 request, then add the real-browser test described in the issue to resolve the same selector set both ways. It is done when the backendNodeId values match and the lookup cost is measured.
Written by the indexing model from the issue text.
Description
What
backendNodeIdForSelector in src/deps/real.ts sends DOM.getDocument with depth: -1, serializing the whole document over the DevTools protocol, and reads only root.nodeId from the result.
Evidence
Measured on a real product UI: 45 calls at 191 ms each, 8.6 seconds of a 55 second scan, 34 percent of the PatternFly rule phase. Every other DevTools call in the scan averaged 2 to 3 ms.
Direction
Request depth: 0 (root only) or cache the root node id per document. Same node, same querySelector, same backendNodeId, so the observation does not change. Prove identity with a real-browser test that resolves a selector set both ways and asserts equal backendNodeId values, then measure.
- Dominant language
- TypeScript
- Stars
- 0
- Forks
- 0
- Avg merge
- 2h 48m
- Merged PRs (30d)
- 8
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- No 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 usabl-dev/usabl
-
area: engine bug
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
Stop hook allows a stop on an unknown verdict, and the self-check prints IDLE for a null verdictOpenarea: assistants bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
area: engine bug security
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Overlay: browser context failures are counted per plugin, not per browser, and close is not sharedOpenarea: overlay bug
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
-
enhancement good first issue help wanted roadmap v0.2.x
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Automattic/data-liberation-agent#953 ·
Maintainers usually reply within 1 day
-
documentation
Difficulty 1/5 Under an hour Newbie friendliness 90/100
funmary-app/funmary#399 ·
Maintainers usually reply within 1 day
-
area:curator enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
CassioDalla/Scrinalia#150 ·
Maintainers usually reply within 1 day
-
status: needs-triage v1-bug-bash
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
a2ui-project/a2ui#3533 ·
Maintainers usually reply within 1 day
-
backend enhancement priority:P3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
geolens-io/geolens#3310 ·
Maintainers usually reply within 1 day