iframe has non-empty name - problems with examples and applicability [cae760]
Each browser / AT combination presents a slightly different user interface for navigating iframes:
- VoiceOver/Safari 13 - exposes iframe as container in normal reading order named by title, but iframe contents not in until user presses Control-Option-Shift-Down Arrow to enter iframe, first item inside iframe focused by tab key
- JAWS/IE11 - includes iframe contents in normal reading order, first item inside iframe focused by tab key and frame title not read
- JAWS/FF68 - includes iframe contents in normal reading order, first item inside iframe focused by tab key and frame title is read
- JAWS/Chrome - includes iframe contents in normal reading order, first item inside iframe focused by tab key and frame title is read
- NVDA/IE11 - includes iframe contents in normal reading order, first item inside iframe focused by tab key
- NVDA/FF68 - includes iframe contents in normal reading order, iframe is focusable but always silent (not named by title/acc-name)
- NVDA/Chrome - unable to test due to focus trap in browser address bar
On Windows iframe title is read when tabbing, but not in normal screen reader reading order On Mac iframe title is read in normal screen reader reading order, but not when tabbing
Test results for the examples are
| Example | VO/Safari 13 | JAWS/IE11 | JAWS/FF68 | JAWS/Chrome | NVDA/FF68 | NVDA/Chrome | NVDA/IE11 |
|---|---|---|---|---|---|---|---|
| Passed 1 | OK | OK | OK | OK | Fail | Untested | OK |
| Passed 2 | Fail | OK | OK | OK | Fail | Untested | OK |
| Passed 3 | Fail | OK | OK | OK | Fail | Untested | OK |
| Failed 1 | OK | OK | Fail | OK | Fail | Untested | OK |
| Failed 2 | Fail | OK | Fail | OK | Fail | Untested | OK |
| Failed 3 | Fail | OK | Fail | OK | Fail | Untested | OK |
| Failed 4 | Fail | OK | Fail | OK | Fail | Untested | OK |
| Inapplicable 1 | OK | OK | OK | OK | OK | Untested | OK |
| Inapplicable 2 | OK | OK | OK | OK | OK | Untested | OK |
| Inapplicable 3 | Fail | OK | OK | Fail | OK | Untested | OK |
On Safari untitled iframes are hard to use because there's no indication of frame contents, and users often assume they contain adverts. This is bad if the iframe contains something important - I've seen a Safari user unable to find a login form in an iframe for exactly this reason.
Inapplicable Example 3 fails in VoiceOver with Safari The Safari issue on Inapplicable Example 3 is a consequence of the UI design (frames exposed as nested containers) but excluded from the applicability. The problem happens in normal reading order, not when tabbing between focusable items. I think the applicability needs extended to cover problems with VoiceOver/Safari by removing the following:
and that can be accessed by sequential focus navigation
https://act-rules.github.io/rules/cae760#applicability
Passed examples 1,2,3 always fail on NVDA/FF68 because tabbing to the frame always produces silence - even if a title or ARIA label is provided. This looks like a bug so I don't think the examples or applicability should change for this.
Passed examples 2,3 always fail on VoiceOver with Safari because it doesn't use acc-name calculation for iframes (but does use the iframe name which is not supposed to be human readable). Again this looks like a bug so I don't think the examples of applicability should change for this.
NVDA with Chrome is untested because there's a focus trap in address bar so you can't tab to the page to test.
tl/dr; remove "and that can be accessed by sequential focus navigation" from applicability and make Inapplicable Example 3 a fail.
Thanks for the thorough research. I totally agree with your conclusions. That applicability looked odd, against my better judgement I approved that... oops!
The passed example 2 / 3 Safari issue is known and was noted in accessibility support. The NVDA one is not and definitely should be.
Thanks for the extensive research @dd8. Sequential focus navigation has been part of this rule for a long time.
I dug up through the history, and found these discussions:
Need a volunteer to work on this rule.
@WilcoFiers assigning this to you since you are already handling https://github.com/w3c/wcag-act/issues/473