Bug 254205 - AX: iOS VoiceOver skips newly rendered Web DOM elements
Summary: AX: iOS VoiceOver skips newly rendered Web DOM elements
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: UI Events (show other bugs)
Version: Safari 16
Hardware: iPhone / iPad iOS 16
: P2 Critical
Assignee: Nobody
URL: https://suex2z.csb.app/
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2023-03-21 02:39 PDT by Gintaras Grazinskis
Modified: 2023-03-28 02:40 PDT (History)
1 user (show)

See Also:


Attachments
Bug reproduction on iPad (3.19 MB, video/quicktime)
2023-03-21 02:39 PDT, Gintaras Grazinskis
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Gintaras Grazinskis 2023-03-21 02:39:11 PDT
Created attachment 465537 [details]
Bug reproduction on iPad

VoiceOver sometimes cannot “see” newly rendered elements. This can happen with or without user interaction. For example: virtualized list that renders new elements as user scrolls; some status page that updates DOM based on Ajax polling. 

Steps to reproduce:
1. Open https://suex2z.csb.app/ on an iOS device;
2. Turn on VoiceOver;
3. Click button “0”;
4. App will render four new buttons: 1, 2, 3, 4 with one second delay between each render;
5. Before “4” is rendered, swipe right to navigate to the next button;
6. After “4” is rendered, try to navigate onto “4” by swiping right.
 
Expected result: VO focus shifts to button “4”.
 
Actual result: VO focus goes to “Open sandbox” button. Last focused button is 1, 2 or 3. But never “4”. "4" was skipped.
 
While this example might look like an edge case, such bug can occur with list virtualization. For example, we’ve encountered this behaviour with the library https://virtuoso.dev/.

Is this behaviour documented somewhere? We were not able to find information on this online.
 
Devices where we were able to reproduce this: iPad 9th gen (iOS 15.6), iPhone 11 (iOS 16.02).
Comment 1 Radar WebKit Bug Importer 2023-03-28 02:40:15 PDT
<rdar://problem/107308215>