Added accessibilityRole header to visual headings for screen readers#80538
Added accessibilityRole header to visual headings for screen readers#80538neil-marcellini merged 29 commits intoExpensify:mainfrom
Conversation
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
src/components/SelectionListWithSections/BaseSelectionListWithSections.tsx
Outdated
Show resolved
Hide resolved
|
@abbasifaizan70 Please add screenshots for all devices. For iOS simulator I used Xcode > Open Developer Tool > Accessibility Inspector., and for Android followed these steps:
|
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppandroid-app-2026-02-17_16.30.37.mp4Android: mWeb Chromeandroid-app-2026-02-17_16.30.37.mp4iOS: HybridAppios-app-2026-02-17_15.03.55.mp4iOS: mWeb Safariios-safari-2026-02-17_15.06.00.mp4MacOS: Chrome / Safaridesktop-chrome-2026-02-17_14.21.14.mp4desktop-chrome-2026-02-17_14.22.44.mp4 |
|
@jjcoffee Updated PR videos and also solved feedbacks. Thanks |
@abbasifaizan70 I don't believe this test passes - I can't see the |
|
@abbasifaizan70 Please can you methodically test against each of the occurrences in the linked issues (including the "other occurrences" listed there). I'm seeing many that have not been added, for example for onboarding, |
@jjcoffee, just for confirmation, asking that I need to test all headings mentioned in the link issues of the parent issue? |
|
@jjcoffee Soft remainder to take a look here. Thanks |
|
@abbasifaizan70 Thanks! Can you also merge main to see if it fixes the lint failure? |
|
@jjcoffee PR is ready. |
neil-marcellini
left a comment
There was a problem hiding this comment.
Thanks for this, it looks pretty good. I think we need to use a constant for the header rule. And then also, I don't think a lot of these components should really be considered headers.
|
(Neil's AI agent) Non-blocking note for future reference: The PR uses
So the naming is a React Native convention (following iOS's |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚧 @neil-marcellini has triggered a test Expensify/App build. You can view the workflow run here. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/neil-marcellini in version: 9.3.22-0 🚀
|
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.3.22-4 🚀
|
|
🚀 Deployed to production by https://github.com/mountiny in version: 9.3.22-4 🚀
|
Explanation of Change
Added accessibilityRole="header" to all visual headings so screen readers announce them as headings, improving page structure and navigation across the app.
Fixed Issues
$ #79241
PROPOSAL: #79241 (comment)
Tests
Tests
Offline tests
same as tests.
QA Steps
same as tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectioncanBeMissingparam foruseOnyxtoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Screen.Recording.2026-02-03.at.4.18.14.AM.mov
Android: mWeb Chrome
iOS: Native
Screen.Recording.2026-02-03.at.3.23.00.AM.mov
Screen.Recording.2026-02-03.at.3.20.53.AM.mov
Screen.Recording.2026-02-03.at.3.27.45.AM.mov
iOS: mWeb Safari
Screen.Recording.2026-02-03.at.3.43.03.AM.mov
Screen.Recording.2026-02-03.at.3.42.38.AM.mov
Screen.Recording.2026-02-03.at.3.43.31.AM.mov
MacOS: Chrome / Safari
Screen.Recording.2026-01-30.at.2.45.04.AM.mov
Screen.Recording.2026-01-30.at.2.45.23.AM.mov
Screen.Recording.2026-01-30.at.2.46.25.AM.mov