Open source · Accessibility

Motion Reduction Auditor

Find animations without a reduced-motion path or an explicit static fallback.

v0.1.0 · Node.js 22+ · MIT

Browse the public repository · View releases

For each animation it resolves the role, reads what the export recorded under reduced motion, and compares that record with the role's ceilings. A decorative animation that never stops has to stop; an animation carrying essential feedback has to leave something behind when it does.

This walkthrough uses the tool's public README and checked-in example files. Run the command from a repository checkout with Node.js 22+; inspect the source before using it on your own files.

Run the checked-in example

# a clean run: the perpetual decorative animation stops, and the progress feedback survives
node bin/motion-reduction-auditor.mjs \
  --capture examples/clean/capture.json \
  --rules examples/clean/motion.rules.json \
  --now 2026-09-18
# exit 0, status "pass"

# a failing run: an animation that keeps spinning, one with no declaration at all,
# and progress feedback that disappears
node bin/motion-reduction-auditor.mjs \
  --capture examples/failing/capture.json \
  --rules examples/failing/motion.rules.json \
  --now 2026-09-18
# exit 1, status "fail"

# an undetermined run: an animation nobody inspected, a pause control nobody recorded,
# and a static alternative the rules do not recognise
node bin/motion-reduction-auditor.mjs \
  --capture examples/undetermined/capture.json \
  --rules examples/undetermined/motion.rules.json \
  --now 2026-09-18
# exit 2, status "incomplete"

Read the result

--now is optional and defaults to the system clock. Supply it to make a run that checks capture age reproducible; every example above is pinned to one instant for that reason.

Where this check stops

These are behaviour, not caveats. Each one is enforced by a test.

Before adapting the command to your own workflow, review the accepted inputs, exit codes and safety boundaries in the README.

Compiled with AI assistance from checked-in public documentation and example scripts. Run the example and review the repository's current documentation before relying on its result.