Steps: 1. With VoiceOver on, open this test case: data:text/html,<div id="live" aria-live="polite" aria-busy="true"></div><script>setTimeout(() => live.textContent = 'updated', 1000); setTimeout(() => live.removeAttribute('aria-busy'), 2000);</script> 2. Explore the only div in the document. Expected: VoiceOver should speak the text "updated" after two seconds. It should then treat the div as normal. Actual result: VoiceOver speaks "updated" already after 1 second, and then speaks "website group is busy" when exploring the web contents with VoiceOver navigation commands. This is the case in both Safari 14 as well as Technology Preview 117.
<rdar://problem/72542353>
the "updated" text seems to be set after 1000ms, so having it speak after 1 second seems expected.
I've confirmed this is a bug for VoiceOver. I've sent it to the right component.
Thanks, Chris! Does this include both the constant "busy" announcement on elements that had aria-busy set during their live time, but which has now been cleared, as well as the early announcement? Because from what I understand, aria-busy is supposed to suppress live region announcements until it is cleared. So I would have expected, and others have also confirmed this, that the updated text should speak after two seconds, not one.
(In reply to mzehe@mozilla.com from comment #4) > Thanks, Chris! Does this include both the constant "busy" announcement on > elements that had aria-busy set during their live time, but which has now > been cleared, as well as the early announcement? Because from what I > understand, aria-busy is supposed to suppress live region announcements > until it is cleared. So I would have expected, and others have also > confirmed this, that the updated text should speak after two seconds, not > one. ah I see. I doubt that aria live region updates are being processed after an Aria-busy is removed. Do you have an specification you can point to that says these aria live regions should be processed after an aria-busy is removed? I didn't find one in WAI-ARIA for aria-busy @JamesCraig?
The best non-spec explanation I found was this: https://www.digitala11y.com/aria-busy-state/. After aria-busy is cleared, updates should be processed. aria-busy is there to suppress live region changes that may occur as long as aria-busy is true, and then a single update should happen when aria-busy is cleared. There are also examples given.
I can confirm that if a live region is set to aria-busy="true", VoiceOver will defer the live region update until the region is no longer busy. With the VoiceOver bug being fixed, in the test case above, VO will speak "updated" after 2 seconds when the busy status is removed.