Screen reader does not announce aria-live-region with role="status"
Categories
(Core :: Disability Access APIs, defect, P3)
Tracking
()
People
(Reporter: csadilek, Unassigned)
References
()
Details
(Whiteboard: [webcompat:needs-knowledgebase])
From github: https://github.com/mozilla-mobile/fenix/issues/27223.
Steps to reproduce
- Have a tab open
- Open https://codepen.io/simondl/pen/rNvdBQR
- Activate the TalkBack screen reader
- Click on button
Announce A
- Listen for the screen reader announcement
- Click on button
Announce B
- Listen for the screen reader announcement
- Click on button
Announce C
- Listen for the screen reader announcement
Expected behaviour
In steps 5, 7 and 9, the screen reader should read out the content of the now filled aria-live region.
Actual behaviour
In step 5, the screen reader announces the content correctly.
In steps 7 and 9, no announcement of the content is made whatsoever.Device name
Fairphone 4
Android version
Android 11
Firefox release type
Firefox
Firefox version
105.1.0 build #2015904299
Device logs
No response
Additional information
I've tested the same behaviour also in other environments:
Android; chrome (version 105.0.5195.136); TalkBack screen reader
All three live regions get announced as expected.Desktop Windows; chrome (verison 103.0.5060.134); NVDA screen reader
All three live regions get announced as expected.Desktop Windows; Firefox (version 103.0); NVDA screen reader
All three live regions get announced as expected.┆Issue is synchronized with this Jira Task
Change performed by the Move to Bugzilla add-on.
Comment 1•1 year ago
|
||
The severity field is not set for this bug.
:cpeterson, could you have a look please?
For more information, please visit auto_nag documentation.
Updated•1 year ago
|
Updated•8 months ago
|
Comment 2•5 months ago
|
||
This issue would cause an information loss or delay for users of screen readers. This role is being used on multiple websites and is often used to communicate the status of data submission, i.e. a purchase was successful or there were issues with the payment that have to be resolved - lack of the timely announcement of this change may cause the users to miss opportunities, i.e. during the live bidding or while following the stock price and such.
Comment 3•5 months ago
|
||
The severity field for this bug is set to S3. However, the accessibility severity is higher, .
:jonalmeida, could you consider increasing the severity?
For more information, please visit BugBot documentation.
Updated•5 months ago
|
Comment 4•5 months ago
|
||
There are no reports affecting real sites at the moment, so unsetting the Webcompat priority flag for the time being.
Comment 5•2 months ago
|
||
(In reply to Ksenia Berezina [:ksenia] from comment #4)
There are no reports affecting real sites at the moment, so unsetting the Webcompat priority flag for the time being.
There's a real site affected by this bug here.
Parchment is an incredibly-major resource for playing text-based parser games in a web browser, and the interactive fiction community sees a lot of screen reader users in the player base.
Updated•2 months ago
|
Updated•2 months ago
|
Comment 6•2 months ago
|
||
- To get the text of a live region on Android, we use AccessibleWrap::GetTextEquiv.
- That function checks if the role has eNameFromSubtreeIfReqRule. If so, it calculates the text from the subtree. If not, it uses Accessible::Name.
- role="status" gets a Gecko role of STATUSBAR. STATUSBAR has eNoNameRule. That means we use Accessible::Name.
- But the element also has no name! So we end up with an empty string.
Eitan, is there a reason we check for eNameFromSubtreeIfReqRule and don't allow subtree calculation for eNoNameRule? There's nothing about live regions that requires them to have a name.
Comment 7•2 months ago
|
||
(In reply to James Teh [:Jamie] from comment #6)
- To get the text of a live region on Android, we use AccessibleWrap::GetTextEquiv.
- That function checks if the role has eNameFromSubtreeIfReqRule. If so, it calculates the text from the subtree. If not, it uses Accessible::Name.
- role="status" gets a Gecko role of STATUSBAR. STATUSBAR has eNoNameRule. That means we use Accessible::Name.
- But the element also has no name! So we end up with an empty string.
Eitan, is there a reason we check for eNameFromSubtreeIfReqRule and don't allow subtree calculation for eNoNameRule? There's nothing about live regions that requires them to have a name.
No this is very old code that was ported from our js implementation. Worth revisiting.
Comment 8•2 months ago
|
||
Dropping the webcompat-priority flag for now. We'll leave this to the accessibility team to triage appropriately.
Description
•