Testing mixed state checkboxes

Last updated: Nov 23, 2021

Test cases


Expectation: expose the 'mixed state'


Expectation: expose the 'mixed state'


Expectation: ignore aria-checked attribute as the native checkbox is in the checked state.


Expectation: ignore aria-checked attribute as the native checkbox is in the unchecked state.


Expectation: expose the 'mixed state', but ignore the aria-checked attribute as the mixed state is set by the IDL attribute.

F: ARIA checkbox w/ mix
Expectation: expose the 'mixed state'

Results

Mappings and Screen Reader results by browser
Browser API exposed? JAWS NVDA Narrator VO macOS VO iOS TalkBack
Firefox MSAA/IA2 input type=checkbox with indeterminate=true and role=checkbox aria-checked=mixed: accState = mixed.

accState mixed is not exposed on a native checkbox with aria-checked=mixed

  1. "partially checked"
  2. "partially checked"
  3. ignored
  4. ignored
  5. "partially checked"
  6. "partially checked"
  1. "half checked"
  2. "half checked"
  3. ignored
  4. ignored
  5. "half checked"
  6. "half checked"
  1. "Indeterminate"
  2. "Indeterminate"
  3. ignored
  4. ignored
  5. "Indeterminate"
  6. "Indeterminate"
  1. "mixed"
  2. "mixed"
  3. ignored
  4. ignored
  5. "mixed"
  6. "mixed"
n/a
  1. ignored
  2. ignored
  3. ignored
  4. ignored
  5. ignored
  6. ignored
Firefox bug filed
Chrome MSAA/IA2 input type=checkbox with indeterminate=true and role=checkbox aria-checked=mixed: accState = mixed.

accState mixed is exposed on a native checkbox with aria-checked=mixed... though this may well be because the aria-checked attribute is given priority over the native checked state of the input, which is not correct per ARIA section 8.5

  1. "partially checked"
  2. "partially checked"
  3. "partially checked"
  4. "partially checked"
  5. "partially checked"
  6. "partially checked"
  1. "half checked"
  2. "half checked"
  3. "half checked"
  4. "half checked"
  5. "half checked"
  6. "half checked"
  1. "Indeterminate"
  2. "Indeterminate"
  3. "Indeterminate"
  4. "Indeterminate"
  5. "Indeterminate"
  6. "Indeterminate"
  1. "mixed"
  2. "mixed"
  3. "mixed"
  4. "mixed"
  5. "mixed"
  6. "mixed"
n/a
  1. "partially  checked"
  2. "partially  checked"
  3. "partially  checked"
  4. "partially  checked"
  5. "partially  checked"
  6. "partially  checked"
Edge UIA - AriaProperties: checked=mixed. See also described behavior of aria-checked in Chrome.
  1. "partially checked"
  2. "partially checked"
  3. "partially checked"
  4. "partially checked"
  5. "partially checked"
  6. "partially checked"
  1. "half checked"
  2. "half checked"
  3. "half checked"
  4. "half checked"
  5. "half checked"
  6. "half checked"
  1. "Indeterminate"
  2. "Indeterminate"
  3. "Indeterminate"
  4. "Indeterminate"
  5. "Indeterminate"
  6. "Indeterminate"
  1. "mixed"
  2. "mixed"
  3. "mixed"
  4. "mixed"
  5. "mixed"
  6. "mixed"
n/a
  1. "partially  checked"
  2. "partially  checked"
  3. "partially  checked"
  4. "partially  checked"
  5. "partially  checked"
  6. "partially  checked"
Safari native checkbox indeterminate idl and unchecked state reported as value=0. aria-checked=mixed value=2.

would have expected IDL to return value of 2 to indicate the 'mixed' state.

webkit bug filed

n/a n/a n/a
  1. ignored
  2. ignored
  3. ignored
  4. ignored
  5. ignored
  6. "mixed"
  1. ignored
  2. ignored
  3. ignored
  4. ignored
  5. ignored
  6. "mixed"
n/a