Skip to content

feat(rule): gate sync rule-result resolution behind runTypeASync flag#237

Closed
chikara1608 wants to merge 1 commit into
mainfrom
AXE-3350-run-type-A-sync
Closed

feat(rule): gate sync rule-result resolution behind runTypeASync flag#237
chikara1608 wants to merge 1 commit into
mainfrom
AXE-3350-run-type-A-sync

Conversation

@chikara1608

Copy link
Copy Markdown
Collaborator

Resolving each rule's result via setTimeout(0) (Deque #1172) creates one macrotask transition per rule (~335). On large DOMs with advance ON these interleave with DevTools IPC (resource.getContent), ballooning the per-rule resolve from ~8ms to ~180ms and inflating axe.run from ~14s to ~85s.

When axe._cache 'runTypeASync' is set (by a11y-engine-core run.js from the a11yCoreConfig flag), resolve synchronously to eliminate the contention. The flag defaults OFF, preserving the original deferred behaviour.

On the OFF path, instrument the schedule-to-fire delay of each yield and accumulate {totalMs,count,maxMs} onto axe._typeASyncYield so every scan reports how much wall-clock the async resolve costs — the exact time the flag would recover. Read back into Type A telemetry by a11y-engine-core.

<< Describe the changes >>

Closes:

Resolving each rule's result via setTimeout(0) (Deque #1172) creates one
macrotask transition per rule (~335). On large DOMs with advance ON these
interleave with DevTools IPC (resource.getContent), ballooning the
per-rule resolve from ~8ms to ~180ms and inflating axe.run from ~14s to
~85s.

When axe._cache 'runTypeASync' is set (by a11y-engine-core run.js from the
a11yCoreConfig flag), resolve synchronously to eliminate the contention.
The flag defaults OFF, preserving the original deferred behaviour.

On the OFF path, instrument the schedule-to-fire delay of each yield and
accumulate {totalMs,count,maxMs} onto axe._typeASyncYield so every scan
reports how much wall-clock the async resolve costs — the exact time the
flag would recover. Read back into Type A telemetry by a11y-engine-core.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@chikara1608 chikara1608 closed this Jun 4, 2026
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