-
Notifications
You must be signed in to change notification settings - Fork 75
Tests on Presentational role Conflict resolution
According to https://www.w3.org/TR/wai-aria-1.1/#conflict_resolution_presentation_none elements with a role of presentation
/none
must nonetheless be exposed with their implicit role if they have a global aria-*
property (e.g. aria-label
), or if the are focusable "or otherwise interactive" (not clear what that means).
There does not seem to be a similar official conflict resolution for aria-hidden
elements, but some browsers seem to do it anyway…
Chrome Version 80.0.3987.122 (Official Build) (64-bit) Edge build 18362 Firefox 73.0.1 (64-bit) NVDA 2019.3.1
-
C, E, F: not exposed (good)none
-
C, E, F: not exposed (good)hidden
-
C, F: exposed (good because globalnone+label
aria-*
) E: not exposed (bad) -
C, F: exposed (good because focusable) E: exposed with a role ofnone+Positive tabindex
none
… -
C, F: exposed (good because focusable) E: exposed with a role ofnone+Negative tabindex
none
… -
C, E, F: not exposed (bad? because globalnone+label+hidden
aria-*
) -
C: exposed (good? because focusable) E, F: not exposed (bad?)none+Positive tabindex+hidden
-
C, E, F: not exposed (bad? because globallabel+hidden
aria-*
) -
C: exposed (good? because focusable) E, F: not exposed (bad?)Positive tabindex+hidden
-
C, E, F: not exposed (good)- none
-
C, E, F: not exposed (good)- hidden
-
C, F: exposed (good because global- none+label
aria-*
) E: not exposed (bad) -
C, F: exposed (good because focusable) E: exposed with a role of- none+positive tabindex
none
… -
C, F: exposed (good because focusable) E: exposed with a role of- none+negative tabindex
none
… -
C, E, F: not exposed (bad? because global- none+label+hidden
aria-*
) -
C: exposed (good? because focusable) E, F: not exposed (bad?)- none+tabindex+hidden
-
C, E, F: not exposed (bad? because global- label+hidden
aria-*
) -
C: exposed (good? because focusable) E, F: not exposed (bad?)- positive tabindex+hidden
-
C, F: exposed (good? because focusable) E: exposed with a role of
none
… -
C: exposed (good? because focusable) E, F: not exposed (bad?)
-
C, F: exposed (good because focusable and global
aria-*
) E: exposed with a role ofnone
… -
C, F: exposed (good because focusable) E: exposed with a role of
none
… -
C, F: exposed (good because focusable) E: exposed with a role of
none
… -
C: exposed (good? because focusable) E, F: not exposed (bad?)
-
C: exposed (good? because focusable) E, F: not exposed (bad?)
-
C, E, F: not exposed (good)
-
C, F: exposed (good because global
aria-*
) E: not exposed (bad?) -
C, E, F: not exposed (good)
-
C, E, F: not exposed (bad? because global
aria-*
)
-
none
C, F: exposed (good? because focusable) E: exposed with a role ofnone
… -
none+hidden
C: exposed (good? because focusable) E, F: not exposed (bad?) -
hidden
C: exposed (good? because focusable) E, F: not exposed (bad?)
-
C: exposed, role of "IFrame" E: exposed, no role F: exposed, role of "internal frame"
-
C: exposed, role of "IframePresentational" E: exposed, role of
none
F: exposed, role of "internal frame" -
C: exposed, role of "Iframe" E, F: not exposed
-
C: exposed, role of "IframePresentational" E: exposed, role of
none
F: exposed, role of "internal frame" -
C: exposed, role of "IframePresentational" E: exposed, role of
none
F: exposed, role of "internal frame" -
C: exposed, role of "IframePresentational" E, F: not exposed
-
C: exposed, role of "IframePresentational" E, F: not exposed
-
C, E, F: not exposed (good) -
C, E, F: not exposed (good) -
C, E: not exposed (good) F: exposed because does not respectalt=""
(bad) -
C, F: exposed (good) E: not exposed (bad) -
C, E, F: not exposed (technically good and following specs, but arguably not so good) -
C, E, F: exposed (good) -
C: exposed (good, but that is a gray area of the specs which do not specify what to do, notably in that case the implicit role isnone
…) E: not exposed F: exposed but given thatalt=""
is ignored, it doesn't mean much -
C, E, F: not exposed (bad? because globalaria-*
) -
C, E, F: not exposed (bad? because globalaria-*
) -
C, E, F: not exposed (technically good) -
C: exposed (good? because focusable) E, F: not exposed (bad?)
Rule for Chrome seems to be: focusable ? expose : aria-hidden ? hide : global aria-* ? expose : role
Rule for Edge seems to be: aria-hidden ? hide : focusable ? expose : role
(ignoring the global aria-*
exception)
Rule for Firefox seems to be: aria-hidden ? hide : focusable || global aria-* ? expose : role
- Edge ignores the global
aria-*
. And keep a role ofnone
instead of defaulting to implicit role when element is focusable. - The
aria-hidden
/focusable conflict is not specified, Chrome solves it in favour of the focusable and Edge/Firefox in favour of thearia-hidden
. - The
aria-hidden
/other globalaria-*
conflict is not specified and everybody solves it in favour ofaria-hidden
.
On top of that, NVDA is hidding the stuff with either aria-hidden
(that were exposed by Chrome). And it is not recomputing role further, so that for example the heading with an incorrect role of none
in Edge is not listed in the list of headings in NVDA.