Skip to content

[Screen reader] Review of aria-live region announcements #9460

@microbit-robert

Description

@microbit-robert

Check for duplicates

  • I have searched for similar issues before opening a new one.

Description

Screen readers behave differently when it comes to announcing content in aria-live regions. This is a review of the toast and 'move mode' announcements as of commit 74a36d7, so includes the change to make the move mode live region assertive. We can test VoiceOver, NVDA, JAWS and ChromeVox, so these are reviewed below, and we are happy to test changes going forward. It will be important to check the live region behaviour against any other screen reader that is being targeted.

Summary

As things stand:

  • ChromeVox performs perfectly with the current implementation and the best out of those tested
  • JAWS and NVDA perform well announcing move mode but do not announce toast messages or repeated message
  • VoiceOver performs the worst having some issues dropping move mode announcements while block labels are being announced (this is a regression from changing the live region to assertive)

NVDA

  • When inserting a block from the toolbox, move mode is correctly announced
  • Move mode generally works, however:
    • If the text in the aria-live region is the same as the previous text, the message is not announced (this is a known issue with screen readers)
  • Move announcements correctly interrupt themselves while moving a block around
  • If a move is triggered while the block aria-label is being readout, move mode announcement correctly interrupts
  • On accepting a move, the move announcement is truncated
  • Toast messages are not announced at all

JAWS

Behaviour matches that of NVDA except for:

  • When a block on the workspace is put into move mode, the block label is announced before move mode as opposed to NVDA which just announces the move

ChromeVox

  • When inserting a block from the toolbox, move mode is correctly announced. If a toast message is shown at this point, the toast is announced before move mode. It might be preferable to have the move mode message first.
  • If the text in the aria-live region is the same as the previous text, the message is correctly announced
  • Move announcements correctly interrupt themselves while moving a block around. Toast messages and move mode messages also correctly interrupt each other.
  • If a move is triggered while the block aria-label is being readout, move mode announcement correctly interrupts the block readout
  • On accepting a move, the move announcement continues to be read out in full
  • Toast messages are correctly announced, however, the readout includes the toast close button which seems irrelevant. The role of “Status” is also announced, which I don’t think adds anything.

VoiceOver

  • When inserting a block from the toolbox, move mode is not announced. Note that it is announced after the block readout when the live region is set to “polite”.
  • Move mode generally works, however:
    • If the text in the aria-live region is the same as the previous text, the message is not announced (this is a known issue with screen readers)
    • If a move is triggered while the block aria-label is being readout, move mode is not announced. Note that it is announced after the block readout when the live region is set to “polite”.
  • Move announcements correctly interrupt themselves while moving a block around
  • On accepting a move, the move announcement continues to be read out in full
  • Toast messages are not announced at all

Next steps

We have looked at this issue in some detail, and will document the changes we have tried and the outcomes in additional comments below.

Reproduction steps

No response

Priority

No response

Stack trace

Screenshots

No response

Browsers

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    issue: bugDescribes why the code or behaviour is wrong

    Type

    Projects

    Status

    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions