Equivalence control without reduced motion
Use Measure: trigger the four interactive components of each variant, then sample document.getAnimations() for 50 frames. Four runs at 1280 px and one at 375 px.
Chromium 153 (Playwright, headless-shell), 2026-10-03, 1280×900 and 375×812
| Variant | Animated components | Peak running animations | Unattributed |
|---|
| A · Opt-out | 5 of 5 | 6 | 0 |
|---|
| B · Opt-in | 5 of 5 | 6 | 0 |
|---|
Without reduced motion, both variants matched: all five components (accordion, switch, loading, toast, new component) moved in every run and at both widths. Six Animation objects were counted rather than five because the toast uses separate opacity and transform transitions. No animations lacked attribution, so data-comp mapping passed its check.
Reduced motion: opt-out leaks, opt-in does not
Repeat the control under emulated prefers-reduced-motion: reduce. Five runs at 1280 px and one at 375 px.
Chromium 153 (Playwright, headless-shell), 2026-10-03, 1280×900 and 375×812, reduced motion
| Variant | Animated components | Peak running animations | Unattributed |
|---|
| A · Opt-out | 1 of 5 (new component) | 1 | 0 |
|---|
| B · Opt-in | 0 of 5 | 0 | 0 |
|---|
Under reduced motion, A ran exactly one animation: the skeleton shimmer with its deliberately omitted override. The other four components remained static. B ran no animations; opening the accordion, toggling, loading, and showing the toast produced no Animation objects.
Cross-browser replication: equivalence control
Run the same instrument via Playwright, opening the demo, clicking Measure, and reading the table. Three runs at 1280 px and one at 375 px per engine; results were identical across runs.
Firefox 155 and WebKit 26.6 (Playwright, headless), 60 Hz, 2026-10-03, 1280×900 and 375×812
| Variant | Animated components | Peak running animations | Unattributed |
|---|
| A · Opt-out | 5 of 5 | 6 | 0 |
|---|
| B · Opt-in | 5 of 5 | 6 | 0 |
|---|
Without reduced motion both variants behaved identically in Firefox and WebKit, matching Chromium: five components moved and six simultaneous Animation objects were counted (two from the toast), with no unattributed animations. The equivalence control passed.
Cross-browser replication: reduced motion
Repeat under emulated prefers-reduced-motion: reduce and verify matchMedia at every run; one run per engine at 1280 px.
Firefox 155 and WebKit 26.6 (Playwright, headless), 60 Hz, 2026-10-03, 1280×900, reduced motion
| Variant | Animated components | Peak running animations | Unattributed |
|---|
| A · Opt-out | 1 of 5 (new component) | 1 | 0 |
|---|
| B · Opt-in | 0 of 5 | 0 | 0 |
|---|
Under reduced motion, A leaked exactly one skeleton-shimmer animation and B leaked none in both engines, exactly reproducing Chromium, including a verified reduced-motion emulation in WebKit.