RESOLVED FIXED300899
AX: `aria-controls` and `aria-expanded` keeps elements with `hidden` attribute visible in Voice Over's Form Control menu
https://bugs.webkit.org/show_bug.cgi?id=300899
Summary AX: `aria-controls` and `aria-expanded` keeps elements with `hidden` attribut...
Romaric
Reported 2025-10-16 09:22:13 PDT
Created attachment 477104 [details] Screenshot of Voice Over rotor showing the 'button' `<button>` elements with a `hidden` attribute should not appear in the Form Control menu in Voice Over's rotor. However the button in the following HTML will be listed as "button" in the menu (only its role, not its accessible name, which correctly appears if the button does not have the `hidden` attribute). ```html <button hidden aria-controls="panel">A button</button> <div id="panel">A panel with some content</div> ``` The issue seem to only happens if the value in `aria-controls` matches another element on the page. The following snippet will not have the button listed. ```html <button hidden aria-controls="non-existing-id">A button</button> <div id="panel">A panel with some content</div> ``` A workaround is to add an explicit `aria-hidden` attribute. The following snippet correctly doesn't show the button in the Form Control menu in Voice Over's rotor. ```html <button hidden aria-controls="panel">A button</button> <div id="panel">A panel with some content</div> ``` This issue was found while investigating a hidden button still being focusable with VoiceOver on iOS, so it may be worth checking this platform as well.
Attachments
Screenshot of Voice Over rotor showing the 'button' (1.15 MB, image/png)
2025-10-16 09:22 PDT, Romaric
no flags
Screenshot of Voice Over rotor showing the 'collapsed button' (1.32 MB, image/png)
2025-10-17 01:41 PDT, Romaric
no flags
Radar WebKit Bug Importer
Comment 1 2025-10-16 09:22:18 PDT
Romaric
Comment 2 2025-10-16 09:31:22 PDT
If that's useful, this is the pull request in which we're trying to work around the issue in our project: https://github.com/alphagov/govuk-design-system/pull/4892
Romaric
Comment 3 2025-10-17 01:41:25 PDT
Created attachment 477114 [details] Screenshot of Voice Over rotor showing the 'collapsed button' A button with `aria-expanded` seem to also get the button listed in VoiceOver's rotor, as shown in the latest. ```html <body><button hidden="" aria-expanded="false">A button</button> <div id="panel">A panel with some content</div></body> ```
Tyler Wilcock
Comment 4 2026-01-17 21:49:47 PST
EWS
Comment 5 2026-01-20 13:14:49 PST
Committed 305902@main (5ffa3f091bc6): <https://commits.webkit.org/305902@main> Reviewed commits have been landed. Closing PR #56778 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.