Bug 196349

Summary: AX: ARIA live regions stop notifying of changes after having a certain number of child elements
Product: WebKit Reporter: Martin Pilkington <pilky>
Component: AccessibilityAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: Safari 12   
Hardware: Mac   
OS: macOS 10.14   
Attachments:
Description Flags
HTML page to reliable reproduce ARIA live region bug with VoiceOver none

Description Martin Pilkington 2019-03-28 06:13:19 PDT
Created attachment 366168 [details]
HTML page to reliable reproduce ARIA live region bug with VoiceOver

Summary:
I have been attempting to use ARIA live regions to try and notify users of accessibility tools of changes to a list (acting as a chat message thread). Unfortunately, it seems that the notification of changes stops after the region contains a certain number of child elements. In the case of a <ul> element, notifications stop after I add 16 <li> elements. If I change to a <div> element with <p> child elements it stops notifying after there are 24 <p> elements. I have been unable to find any information in any specs or documentation around ARIA that specifies any upper limit.

I have tested this in both Safari 12.1 (14607.1.40.1.4) and the latest Safari Tech Preview (Release 78, WebKit 14608.1.9.1). I have also discovered the same issue in Chrome (73.0.3683.86). This make me think this is most likely either a WebKit bug or a VoiceOver bug (I'll also be filing a bug with Apple in case it is the latter). This is all on macOS 10.14.4

Reproducing:
I have attached a small HTML page that allows you to test both the above cases:

1. Open the arialivebug.html file in a WebKit-based browser on macOS
2. Enable VoiceOver (usually Command-F5)
3. Click the Start button below the List Test heading (you can change the value but 20 is a good number to show the bug)
4. Listen to VoiceOver notify the user of changes
5. After the List Test has finished, click the Start button for the Paragraph Test
6. Listen to VoiceOver notify the user of changes

Expected Result:
VoiceOver notifies the user of all changes to the live regions

Actual Result:
VoiceOver stops notifying the user of changes after 16 child elements in the list and 24 child elements in the div

Workaround:
From my testing it seems you can work around this by creating a new live region once the previous one is "full". Of course this has the downside of making the HTML less semantic (which can harm accessibility in other ways), but does ensure users will always be notified.
Comment 1 Radar WebKit Bug Importer 2019-03-28 06:33:12 PDT
<rdar://problem/49377535>