Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NVDA Does Not Interrupt aria-live="assertive" Announcements Properly #17662

Open
yury-cosocloud opened this issue Jan 29, 2025 · 3 comments
Open
Labels
app/chrome app/edge/anaheim MS browser, chromium based, replaces Spartan in 2019 by Anaheim. NVDA access via IA2. app/firefox ARIA blocked/needs-product-decision A product decision needs to be made. Decisions about NVDA UX or supported use-cases. feature/browse-mode needs-triage

Comments

@yury-cosocloud
Copy link

NVDA does not correctly interrupt and replace aria-live="assertive" messages when they are updated in quick succession. Instead of announcing only the latest message (as per W3C ARIA guidelines), NVDA queues and reads each message sequentially, even though previous messages should be interrupted and discarded.

Steps to reproduce:

  1. Open a web page in Edge browser with the following HTML and JavaScript (codepan/jsfiddle/jsbin whatever):
<div>
    <button id="resetButton">Reset Filters</button>
    <div role="status" id="resetFilter" aria-live="assertive"></div>
</div>

<script>
    document.getElementById('resetButton').addEventListener('click', () => {
        const ariaLiveRegion = document.getElementById('resetFilter');

        const updateAriaLiveRegion = (message) => {
            ariaLiveRegion.textContent = message;
        };

        updateAriaLiveRegion('All filters cleared. 0 items loaded.');
        setTimeout(() => {
            updateAriaLiveRegion('All filters cleared. 6 items loaded.');
        }, 1000);
        setTimeout(() => {
            updateAriaLiveRegion('All filters cleared. 12 items loaded.');
        }, 2000);
    });
</script>
  1. Click the "Reset Filters" button.

Actual behavior:

  • NVDA reads all three messages sequentially instead of replacing previous announcements.

  • The expected interruption behavior does not occur, leading to redundant and delayed announcements.

Expected behavior:

  • NVDA should only announce the latest message ("All filters cleared. 12 items loaded.") because aria-live="assertive" should interrupt and replace previous messages.

  • According to W3C ARIA 1.2 Guidelines on aria-live, assertive regions must immediately notify the user and override any previous messages rather than queueing them.

NVDA logs, crash dumps and other attachments:

not provided

System configuration

NVDA installed/portable/running from source:

installed and portable

NVDA version:

2024.4.2

Windows version:

Windows 11

Name and version of other software in use when reproducing the issue:

EDGE 132.0.2957.127

Other information about your system:

Windows 11 Enterprise LTSC

Other questions

Does the issue still occur after restarting your computer?

Yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

2023.3.3, 2024.4.1 - the same behavior

If NVDA add-ons are disabled, is your problem still occurring?

Windows Narrator handles this correctly—it interrupts the previous message and announces only the latest one, as expected.

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

Not tested.

@Adriani90
Copy link
Collaborator

Does this issue occur also in Chrome and in Firefox?

@yury-cosocloud
Copy link
Author

In Chrome - yes, Firefox - didn't check

@Adriani90
Copy link
Collaborator

Ok, in Firefox 134.0.2 this is occuring as well. I put the timeout to 100 ms and 200 ms respectively and NVDA is not interupted. @jcsteh does it make sense to set a limit for the timeout in NVDA to accept being interupted by new aria-live messages while announcing other aria-live messages? Maybe if the timeout is less than 1000 ms. In this case even a sighted person would not have time to read the message.

@gerald-hartig gerald-hartig added blocked/needs-product-decision A product decision needs to be made. Decisions about NVDA UX or supported use-cases. needs-triage feature/browse-mode ARIA app/chrome app/firefox app/edge/anaheim MS browser, chromium based, replaces Spartan in 2019 by Anaheim. NVDA access via IA2. labels Feb 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
app/chrome app/edge/anaheim MS browser, chromium based, replaces Spartan in 2019 by Anaheim. NVDA access via IA2. app/firefox ARIA blocked/needs-product-decision A product decision needs to be made. Decisions about NVDA UX or supported use-cases. feature/browse-mode needs-triage
Projects
None yet
Development

No branches or pull requests

3 participants