Skip to content

Fix screen reader fragment announcements and history navigation - #3946

Open
jooyoungseo wants to merge 2 commits into
hakimel:masterfrom
jooyoungseo:fix/screen-reader-fragment-announcements
Open

jooyoungseo wants to merge 2 commits into
hakimel:masterfrom
jooyoungseo:fix/screen-reader-fragment-announcements

Conversation

@jooyoungseo

@jooyoungseo jooyoungseo commented Oct 9, 2026 •

Copy link
Copy Markdown

Fixes #3945.

Changes

  • Exclude hidden fragment descendants from slide and fragment announcements. Use fragment classes rather than computed visibility, which can be mid-transition. Preserve the built-in initially visible styles, current-only styles, custom fragments, and the announced fragment itself.
  • Ignore hash changes that already describe the current slide and fragment. Normalize the missing vertical index on named horizontal slides, preserve explicit named fragment links when fragmentInURL is disabled, and restore the pre-fragment state when browser history returns to a fragment-less URL with the option enabled.
  • Compute and announce fragment text after the entire fragment-class update loop. This fixes stale nested visibility when stepping backward and preserves ordered announcements for same-index groups.
  • Add accessibility regression coverage for fragment visibility, backward navigation, grouped current-visible fragments, and URL navigation.

Validation

  • Accessibility regression page: 25/25 assertions pass. The four new assertions fail before the deferred-announcement change, covering nested normal/fade-out backward navigation and same-index current-visible groups.
  • Ran all 18 QUnit HTML pages sequentially: 444/445 assertions pass, including 214/214 on the main test page.
  • One existing test-markdown.html assertion, External / Horizontal separator, fails with expected 2 vs actual 3 on both the patched and pristine upstream source (69/70 assertions pass). The initial parallel npm test run stalled locally and was stopped; this is not a claim that the full default command passed.
  • Core build passed. Generated distribution files are not included in this source change.

Copilot AI balanced review requested due to automatic review settings October 9, 2026 20:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

cderv pushed a commit to quarto-dev/quarto-cli that referenced this pull request Oct 13, 2026
Screen readers announced revealjs fragments that were still hidden, and
repeated slide and fragment text when browser history was enabled. The
live region read text before fragment visibility was final, and the URL
handler navigated again after writing its own history entry.

- Announce fragments after every fragment class is updated, so nested
  fragments are read in their final state.
- Leave hidden fragment content out of the announced text.
- Stop re-navigating after the URL handler writes its own history entry.

The fixes are a source patch of the unmerged hakimel/reveal.js#3946,
applied to the bundled reveal.js 5.1.0. The HTML dependency updater
reapplies it before rebuilding the UMD and ESM bundles. Remove the patch
only after that PR is released in the bundled version.

See hakimel/reveal.js#3946

Fixes #15019

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Screen reader announcements include fragments not yet shown, and repeat when history is on

2 participants