validate_url
Assesses accuracy of predicted screen-reader navigation by simulating virtual screen reader interactions and comparing step counts.
Instructions
Validate Tactual's predicted navigation paths against a virtual screen reader. Runs analyze_url internally, then for each worst finding drives @guidepup/virtual-screen-reader over the captured DOM (via jsdom) to check: (a) is the target reachable at all, and (b) how many virtual SR announcements does it take to reach it? Compares to Tactual's predicted step count. Returns an accuracy ratio per target and a mean across all validated targets — closer to 1.0 means Tactual's predictions match this virtual-screen-reader run, not a guarantee of full real-AT fidelity.
Requires (optional deps): jsdom + @guidepup/virtual-screen-reader. Installed with tactual if optionalDependencies were honored; otherwise run npm install jsdom @guidepup/virtual-screen-reader in your project.
When to use: closing the modeled-vs-virtual loop. If Tactual's predictions diverge a lot from the virtual SR, either the profile weights need calibration or the page has structural patterns the analyzer doesn't model. Use sparingly — this adds the analyze_url cost plus jsdom parsing + virtual SR navigation time.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to analyze and validate | |
| profile | No | AT profile ID (default: nvda-desktop-v0). Use list_profiles to see options. | |
| maxTargets | No | Maximum findings to validate (worst-first). Higher = slower but more signal. | |
| strategy | No | Navigation strategy for the virtual SR. 'linear' uses Tab/Shift-Tab (keyboard flow); 'semantic' uses heading/landmark skip commands (screen-reader flow). Semantic is more representative for NVDA/JAWS/VoiceOver users. | semantic |
| timeout | No | Page load timeout in ms | |
| waitTime | No | Additional wait after load (ms) | |
| channel | No | Browser channel: chrome, chrome-beta, msedge | |
| stealth | No | Apply anti-bot-detection defaults | |
| storageState | No | Path to a Playwright storageState JSON (for authenticated pages). Must be within the current working directory. |