a11y-toolkit: prefers-reduced-motion honored?
a11y_reduced_motionTests whether a site honors prefers-reduced-motion by counting looping CSS animations before and after emulation, flagging pages that ignore the user preference.
Instructions
Does the site HONOR prefers-reduced-motion? Loads the page normally, counts looping CSS animations (>0.15s infinite), then reloads emulating prefers-reduced-motion: reduce and counts again. If the number does not drop, the site ignores the user's preference (2.2.2; 2.3.3 AAA). Nobody else automates this — axe leaves it as manual review. Covers CSS animations and video[autoplay]; JS/WebGL/scroll-parallax remain manual. Returns JSON: {mode, normal, reduced, respects, score, findings, limits}.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"url": "<url>"
},
"name": "a11y_reduced_motion"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL to test | |
| lang | No | output language | |
| browser | No | Browser engine (auto = detect the first available) | |
| timeout | No | page load timeout seconds (45 default) | |
| auth_state | No | Path to a Playwright storage_state JSON (exported session) to test behind login — stays local |