- Adapter
- react
- Engine
- chromium
- Tests
- 23
- Passed
- 23
- Failed
- 0
Checkbox
Generated 2026-08-24T04:33:37.619Z from revision f7b9fe417e26d20639252ef4b6b6ad3ed83e463b.
Result: 345/345 passed; 0 recorded failures.
Shared contract: packages/ui-headless/browser-contract/checkbox.contract.ts
Test matrix
Adapter
Engine
Tests
Passed
Failed
react
chromium
23
23
0
react
firefox
23
23
0
react
webkit
23
23
0
vue
chromium
23
23
0
vue
firefox
23
23
0
vue
webkit
23
23
0
solid
chromium
23
23
0
solid
firefox
23
23
0
solid
webkit
23
23
0
svelte
chromium
23
23
0
svelte
firefox
23
23
0
svelte
webkit
23
23
0
angular
chromium
23
23
0
angular
firefox
23
23
0
- Adapter
- react
- Engine
- firefox
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- react
- Engine
- webkit
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- vue
- Engine
- chromium
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- vue
- Engine
- firefox
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- vue
- Engine
- webkit
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- solid
- Engine
- chromium
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- solid
- Engine
- firefox
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- solid
- Engine
- webkit
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- svelte
- Engine
- chromium
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- svelte
- Engine
- firefox
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- svelte
- Engine
- webkit
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- angular
- Engine
- chromium
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- angular
- Engine
- firefox
- Tests
- 23
- Passed
- 23
- Failed
- 0
- Adapter
- angular
- Engine
- webkit
- Tests
- 23
- Passed
- 23
- 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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 indeterminate, 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/Indicator — recorded deviation inherited from Switch's illustrative DOM contract (checkbox.spec.md's Anatomy section defers everything not restated to switch.spec.md verbatim); focus-visible stays a pure CSS concern off the real :focus-visible input