Author: Phil Richards
Contact: phrichards@gmail.com
These tests are updates of those performed by Steve Faulkner, detailed at The Paciello Group Blog. As all five of the browsers tested by Steve have been updated since those tests were performed, these tests were conducted with the latest version of each browser, specifically:
Test methodology for ARIA roles exposed by MSAA was identical to the methodology used in Steve's tests, and the expected MSAA roles presented here are taken from Steve's tests. The Inspect 32 software used to conduct these tests is available here.
The updated summary is as follows:
WAI-ARIA has 59 possible role values (excluding abstract roles):
The current versions of IE, Firefox, and Safari perform slightly poorer than the versions used in Steve's tests, while Opera and Chrome perform slightly better. There are no dramatic changes in performance for any browser.
ARIA Role | Expected MSAA Role | IE 8.0.6 Reported Role | Firefox 3.6.3 Reported Role | Opera 10.53 Reported Role | Chrome 5.0.375.55 Reported Role | Safari 5.0 Reported Role |
alert | alert | alert | alert | alert | cell | client |
alertdialog | dialog | dialog | dialog | dialog | cell | client |
application | application | pane | application | application | cell | client |
article | None | cell | document | cell | cell | client |
banner | None | cell | cell | cell | cell | client |
button | push button | push button | push button | row | cell | client |
checkbox | check box | check box | check box | row | cell | client |
columnheader | column header | column header | column header | row | cell | client |
combobox | combo box | combo box | combo box | combo box | cell | client |
complementary | None | cell | cell | cell | cell | client |
contentinfo | None | cell | cell | cell | cell | client |
definition | None | cell | cell | cell | cell | client |
dialog | dialog | dialog | dialog | dialog | cell | client |
directory | list | list | cell | unknown object | list | list |
document | client | client | document | unknown object | cell | client |
grid | table | table | table | table | table | table |
gridcell | cell | cell | cell | cell | cell | client |
group | grouping | grouping | grouping | grouping | cell | client |
heading | text? heading? | editable text | heading | cell | cell | client |
img | graphic | graphic | graphic | graphic | cell | client |
label | text | cell | text | text | cell | client |
link | link | link | link | link | cell | client |
list | list | list | list | list | list | list |
listbox | list | list | list | list | cell | client |
listitem | list item | list item | list item | list item | cell | client |
log | log? | cell | cell | unknown object | cell | client |
main | None | cell | cell | cell | cell | client |
marquee | animation? marquee? | animation | cell | cell | cell | client |
math | equation? | cell | equation | cell | cell | client |
menu | pop up menu | popup menu | popup menu | row | cell | client |
menubar | menu bar | menu bar | menu bar | menu bar | cell | client |
menuitem | menu item | menu item | menu item | row | cell | client |
menuitemcheckbox | menu item | menu item | menu item | row | cell | client |
menuitemradio | menu item | menu item | menu item | row | cell | client |
navigation | None | cell | cell | cell | cell | client |
note | None | cell | cell | cell | cell | client |
option | list item | list item | list item | list item | cell | client |
presentation | no object exposed | Error | presentation | cell | cell | client |
progressbar | progress bar | progress bar | progress bar | progress bar | cell | client |
radio | radio button | radio button | radio button | row | cell | client |
radiogroup | grouping | grouping | grouping | grouping | cell | client |
row | row | cell | row | list item | row | row |
region | pane? | pane | grouping | unknown object | cell | client |
rowheader | row header | row header | row header | row | cell | client |
search | None | cell | cell | cell | cell | client |
separator | separator | separator | separator | row | cell | client |
slider | slider | slider | slider | row | cell | client |
spinbutton | spin box | spin box | spin box | progress bar | cell | client |
status | status bar | status bar | status bar | cell | cell | client |
tab | page tab | page tab | page tab | page tab | cell | client |
tablist | page tab list | page tab list | page tab list | grouping | cell | client |
tabpanel | property page | pane | property page | grouping | cell | client |
textbox | editable text | editable text | editable text | row | cell | client |
timer | timer | cell | cell | cell | cell | client |
toolbar | tool bar | tool bar | tool bar | tool bar | cell | client |
tooltip | tool tip | tool tip | tool tip | cell | cell | client |
tree | outline | outline | outline | outline | cell | client |
treegrid | outline | cell | outline | outline | table | table |
treeitem | outline item | outline item | outline item | list item | cell | client |
Legend | correct | incorrect | partial/unsure |
These tests are identical to those performed with Inspect 32, but here Accessibility Probe is used to confirm the results displayed by Inspect 32. Accessibility Probe is available here. According to Accessibility Probe:
The only difference here is Chrome, but as the reported role for every case in Chrome is "grouping", this is likely due to an incompatibility of the Chrome browser with Accessibility Probe. Otherwise, the reported roles in Accessibility Probe confirm those displayed by Inspect 32.
ARIA Role | Expected MSAA Role | IE 8.0.6 Reported Role | Firefox 3.6.3 Reported Role | Opera 10.53 Reported Role | Chrome 5.0.375.55 Reported Role | Safari 5.0 Reported Role |
alert | alert | alert | alert | alert | grouping | clientArea |
alertdialog | dialog | dialog | dialog | dialog | grouping | clientArea |
application | application | pane | application | application | grouping | clientArea |
article | None | tableCell | document | cell | grouping | clientArea |
banner | None | tableCell | tableCell | cell | grouping | clientArea |
button | push button | pushButton | pushButton | row | grouping | clientArea |
checkbox | check box | checkBox | checkBox | row | grouping | clientArea |
columnheader | column header | tableColumnHeader | tableColumnHeader | row | grouping | clientArea |
combobox | combo box | comboBox | comboBox | comboBox | grouping | clientArea |
complementary | None | tableCell | tableCell | tableCell | grouping | clientArea |
contentinfo | None | tableCell | tableCell | tableCell | grouping | clientArea |
definition | None | tableCell | tableCell | tableCell | grouping | clientArea |
dialog | dialog | dialog | dialog | dialog | grouping | clientArea |
directory | list | list | tableCell | <null> | grouping | list |
document | client | clientArea | document | <null> | grouping | clientArea |
grid | table | table | table | table | grouping | table |
gridcell | cell | tableCell | tableCell | tableCell | grouping | clientArea |
group | grouping | grouping | grouping | grouping | grouping | clientArea |
heading | text? heading? | text | heading | tableCell | grouping | clientArea |
img | graphic | graphic | graphic | graphic | grouping | clientArea |
label | text | tableCell | staticText | staticText | grouping | clientArea |
link | link | link | link | link | grouping | clientArea |
list | list | list | list | list | grouping | list |
listbox | list | list | list | list | grouping | clientArea |
listitem | list item | listItem | listItem | listItem | grouping | clientArea |
log | log? | tableCell | tableCell | <null> | grouping | clientArea |
main | None | tableCell | tableCell | tableCell | grouping | clientArea |
marquee | animation? marquee? | animation | tableCell | tableCell | grouping | clientArea |
math | equation? | tableCell | equation | tableCell | grouping | clientArea |
menu | pop up menu | menuPopup | menuPopup | row | grouping | clientArea |
menubar | menu bar | menuBar | menuBar | menuBar | grouping | clientArea |
menuitem | menu item | menuItem | menuItem | row | grouping | clientArea |
menuitemcheckbox | menu item | menuItem | menuItem | row | grouping | clientArea |
menuitemradio | menu item | menuItem | menuItem | row | grouping | clientArea |
navigation | None | tableCell | tableCell | tableCell | grouping | clientArea |
note | None | tableCell | tableCell | tableCell | grouping | clientArea |
option | list item | listItem | listItem | listItem | grouping | clientArea |
presentation | no object exposed | table | presentation | tableCell | grouping | clientArea |
progressbar | progress bar | progressBar | progressBar | progressBar | grouping | clientArea |
radio | radio button | radioButton | radioButton | row | grouping | clientArea |
radiogroup | grouping | grouping | grouping | grouping | grouping | clientArea |
row | row | tableCell | row | listItem | grouping | row |
region | pane? | pane | grouping | <null> | grouping | clientArea |
rowheader | row header | tableRowHeader | tableRowHeader | row | grouping | clientArea |
search | None | tableCell | tableCell | tableCell | grouping | clientArea |
separator | separator | separator | separator | row | grouping | clientArea |
slider | slider | slider | slider | row | grouping | clientArea |
spinbutton | spin box | spinBox | spinButton | progressBar | grouping | clientArea |
status | status bar | statusBar | statusBar | tableCell | grouping | clientArea |
tab | page tab | pageTab | pageTab | pageTab | grouping | clientArea |
tablist | page tab list | pageTabList | pageTabList | grouping | grouping | clientArea |
tabpanel | property page | pane | propertyPage | grouping | grouping | clientArea |
textbox | editable text | text | text | row | grouping | clientArea |
timer | timer | tableCell | tableCell | tableCell | grouping | clientArea |
toolbar | tool bar | toolBar | toolBar | toolBar | grouping | clientArea |
tooltip | tool tip | toolTip | toolTip | tableCell | grouping | clientArea |
tree | outline | outline | outline | outline | grouping | clientArea |
treegrid | outline | tableCell | outline | outline | grouping | table |
treeitem | outline item | outlineItem | outlineItem | listItem | grouping | clientArea |
Legend | correct | incorrect | partial/unsure |
I was unable to find published tests of the reported ARIA states for specific broswers or a list of expected states. For these tests, I considered a reported state to be correct if the name of the state was displayed by Inspect 32 in at least one of the test item's possible states. For example, the "aria-checked" state test item could be either checked or unchecked; while checked, Inspect 32 reports the state as "checked, marqueed, focusable" so the reported state is considered correct even though the unchecked item does not specifically report that it is not checked. This decision was made because no browser reported both positive and negative states of a particular test item, with the exception of the expanded/collapsed state. In all other cases, only the positive (checked, pressed, selected) state was reported as such.
Test examples were taken from the Illinois Center for Information Technology and Web Accessibility and the Codetalks wiki.
Methodology:
Note:
Of the five states that were tested ("aria-checked", "aria-expanded", "aria-grabbed", "aria-pressed", and "aria-selected"), the summary is as follows:
ARIA State | Specific State | Firefox 3.6.3 Reported State | IE 8.0.6001.18702 Reported State | Opera 10.53 Reported State | Chrome 5.0.375.70 Reported State | Safari 5.0 Reported State |
busy | unable to test | |||||
checked | checked | checked, marqueed, focusable | focused, checked, focusable | focused | focused, checked, read only, focusable | read only, checked, hot tracked, focusable |
unchecked | marqueed, focusable | focused, focusable | focused | focused, read only, focusable | read only, hot tracked, focusable | |
disabled | unable to test | |||||
expanded | expanded | expanded, focusable, selectable | focused, expanded, focusable | focused | focused, read only, focusable | focused, read only, focusable |
collapsed | collapsed, focusable, selectable | focused, collapsed, focusable | focused | focused, read only, focusable | focused, read only, focusable | |
grabbed | focused, floating, focusable | focused, focusable | focused | focused, read only, focusable | focused, read only, focusable | |
hidden | unable to test | |||||
invalid | unable to test | |||||
pressed | pressed | pressed, floating, marqueed, focusable | focused, pressed, focusable | focused | focused, pressed, read only, focusable | focused, pressed, read only, focusable |
unpressed | floating, maruqeed, focusable | focused, focusable | hot tracked, focusable | focused, read only, focusable | focused, read only, focusable | |
selected | selected | selected, focused, focusable, selectable | IE is unresponsive; cannot move focus to cells in table | selectable | focused, read only, focusable | selected, focused, read only, focusable |
unselected | focused, focusable, selectable | selectable | focused, read only, focusable | focused, read only, focusable | ||
Legend | correct | incorrect | partial/unsure | browser error/incompatibility | unable to find test example |
Similarly to states, I was unable to find published tests of the reported MSAA events fired for ARIA states. For these tests, I matched ARIA states with MSAA events as presented in the W3C's WAI-ARIA User Agent Implementation Guide, and used the ARIA state examples from the Illinois Center for Information Technology and Web Accessibility and the Codetalks wiki along with AccEvent software to monitor the events fired for each change of ARIA state. The AccEvent software used to conduct these tests available here.
Methodology:
Note:
Of the four state-event pairs that were tested ("aria-checked", "aria-expanded", "aria-grabbed", and "aria-hidden"), the summary is as follows:
ARIA State | Expected MSAA Event(s) | Firefox 3.6.3 Reported Event | IE 8.0.6001.18702 Reported Event | Opera 10.53 Reported Event | Chrome 5.0.375.70 Reported Event | Safari 5.0 Reported Event |
checked | STATECHANGE | STATECHANGE | IE unresponsive on test example | none | none | none |
disabled | STATECHANGE | unable to test | ||||
expanded | STATECHANGE | STATECHANGE, HIDE, SHOW | IE unresponsive on test example | none | none | none |
grabbed | SELECTION | STATECHANGE, HIDE, SHOW | IE unresponsive on test example | none | none | none |
hidden | SELECTION, HIDE, SHOW | HIDE, SHOW | IE unresponsive on test example | none | HIDE, SHOW | none |
readonly | STATECHANGE | unable to test | ||||
Legend | correct | incorrect | partial/unsure | browser error | unable to find test example |