- Adapter
- react
- Engine
- chromium
- Tests
- 22
- Passed
- 22
- Failed
- 0
Switch
Generated 2026-08-24T04:33:37.619Z from revision f7b9fe417e26d20639252ef4b6b6ad3ed83e463b.
Result: 330/330 passed; 0 recorded failures.
Shared contract: packages/ui-headless/browser-contract/switch.contract.ts
Test matrix
Adapter
Engine
Tests
Passed
Failed
react
chromium
22
22
0
react
firefox
22
22
0
react
webkit
22
22
0
vue
chromium
22
22
0
vue
firefox
22
22
0
vue
webkit
22
22
0
solid
chromium
22
22
0
solid
firefox
22
22
0
solid
webkit
22
22
0
svelte
chromium
22
22
0
svelte
firefox
22
22
0
svelte
webkit
22
22
0
angular
chromium
22
22
0
angular
firefox
22
22
0
- Adapter
- react
- Engine
- firefox
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- react
- Engine
- webkit
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- vue
- Engine
- chromium
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- vue
- Engine
- firefox
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- vue
- Engine
- webkit
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- solid
- Engine
- chromium
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- solid
- Engine
- firefox
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- solid
- Engine
- webkit
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- svelte
- Engine
- chromium
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- svelte
- Engine
- firefox
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- svelte
- Engine
- webkit
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- angular
- Engine
- chromium
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- angular
- Engine
- firefox
- Tests
- 22
- Passed
- 22
- Failed
- 0
- Adapter
- angular
- Engine
- webkit
- Tests
- 22
- Passed
- 22
- Failed
- 0
Axe accessibility scans
Adapter
Engine
Test
Status
react
chromium
no violations while unchecked
passed
react
chromium
no violations while checked
passed
react
chromium
no violations for the bare, disabled and read-only scenarios
passed
react
firefox
no violations while unchecked
passed
react
firefox
no violations while checked
passed
react
firefox
no violations for the bare, disabled and read-only scenarios
passed
react
webkit
no violations while unchecked
passed
react
webkit
no violations while checked
passed
react
webkit
no violations for the bare, disabled and read-only scenarios
passed
vue
chromium
no violations while unchecked
passed
vue
chromium
no violations while checked
passed
vue
chromium
no violations for the bare, disabled and read-only scenarios
passed
vue
firefox
no violations while unchecked
passed
vue
firefox
no violations while checked
passed
- Adapter
- react
- Engine
- chromium
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- react
- Engine
- chromium
- Test
- no violations while checked
- Status
- passed
- Adapter
- react
- Engine
- chromium
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- react
- Engine
- firefox
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- react
- Engine
- firefox
- Test
- no violations while checked
- Status
- passed
- Adapter
- react
- Engine
- firefox
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- react
- Engine
- webkit
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- react
- Engine
- webkit
- Test
- no violations while checked
- Status
- passed
- Adapter
- react
- Engine
- webkit
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- vue
- Engine
- chromium
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- vue
- Engine
- chromium
- Test
- no violations while checked
- Status
- passed
- Adapter
- vue
- Engine
- chromium
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- vue
- Engine
- firefox
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- vue
- Engine
- firefox
- Test
- no violations while checked
- Status
- passed
- Adapter
- vue
- Engine
- firefox
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- vue
- Engine
- webkit
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- vue
- Engine
- webkit
- Test
- no violations while checked
- Status
- passed
- Adapter
- vue
- Engine
- webkit
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- solid
- Engine
- chromium
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- solid
- Engine
- chromium
- Test
- no violations while checked
- Status
- passed
- Adapter
- solid
- Engine
- chromium
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- solid
- Engine
- firefox
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- solid
- Engine
- firefox
- Test
- no violations while checked
- Status
- passed
- Adapter
- solid
- Engine
- firefox
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- solid
- Engine
- webkit
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- solid
- Engine
- webkit
- Test
- no violations while checked
- Status
- passed
- Adapter
- solid
- Engine
- webkit
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- svelte
- Engine
- chromium
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- svelte
- Engine
- chromium
- Test
- no violations while checked
- Status
- passed
- Adapter
- svelte
- Engine
- chromium
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- svelte
- Engine
- firefox
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- svelte
- Engine
- firefox
- Test
- no violations while checked
- Status
- passed
- Adapter
- svelte
- Engine
- firefox
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- svelte
- Engine
- webkit
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- svelte
- Engine
- webkit
- Test
- no violations while checked
- Status
- passed
- Adapter
- svelte
- Engine
- webkit
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- angular
- Engine
- chromium
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- angular
- Engine
- chromium
- Test
- no violations while checked
- Status
- passed
- Adapter
- angular
- Engine
- chromium
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- angular
- Engine
- firefox
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- angular
- Engine
- firefox
- Test
- no violations while checked
- Status
- passed
- Adapter
- angular
- Engine
- firefox
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
- Adapter
- angular
- Engine
- webkit
- Test
- no violations while unchecked
- Status
- passed
- Adapter
- angular
- Engine
- webkit
- Test
- no violations while checked
- Status
- passed
- Adapter
- angular
- Engine
- webkit
- Test
- no violations for the bare, disabled and read-only scenarios
- Status
- passed
Screen readers
- voiceOverSafari: pending-manual — VoiceOver + Safari manual pass has not yet been run; automated axe coverage under WebKit is not a substitute for a manual screen-reader pass.
- nvda: parked-by-decision — NVDA evidence is parked by explicit decision and remains a declared accessibility gap.
Known gaps
- Svelte adapter element replacement deferred (same stance as Select)
- NVDA untested (parked)
- VoiceOver manual pass pending
- No data-focus-visible on Control/Thumb — recorded deviation from the platform plan's illustrative DOM contract (switch.spec.md's Anatomy section); focus-visible stays a pure CSS concern off the real :focus-visible input