RESOLVED FIXED317597
AX: VoiceOver does not re-resolve aria-labelledby when referenced element's accessible name is provided by aria-label
https://bugs.webkit.org/show_bug.cgi?id=317597
Summary AX: VoiceOver does not re-resolve aria-labelledby when referenced element's ...
Sarah
Reported 2026-06-22 11:13:29 PDT
Created attachment 480179 [details] Simple test case Summary: VoiceOver reads stale aria-labelledby value when referenced element's name comes from aria-label Description: When an element uses aria-labelledby to reference another element, and the referenced element's accessible name is provided via aria-label, VoiceOver caches the initial resolved value and does not update it on subsequent navigations. The same pattern works correctly when the referenced element derives its name from text content. Steps to reproduce: 1. Open the attached test case in Safari 2. Enable VoiceOver (Cmd+F5) 3. Navigate to "Section B" using VO+Right Arrow — note the count value announced 4. Navigate past the "Focusable element" link below Section B 5. Wait a few seconds for the counter to increment 6. Navigate back up to "Section B" using VO+Left Arrow 7. Repeat steps 4-6 for "Section A" to compare Actual results: Section A (referenced element uses textContent) announces the current count on every navigation. Section B (referenced element uses aria-label) announces the value from page load and never updates. Expected results: Both sections should announce the current count value. The Accessible Name and Description Computation spec (AccName 1.2) defines aria-labelledby resolution as a recursive computation of the referenced element's accessible name, which includes aria-label. The spec does not distinguish between name sources. Build date and hardware: macOS 26.5.1, Safari 26.5 Test case: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>aria-labelledby resolution test</title> </head> <body> <h1>aria-labelledby resolution test</h1> <p>Two sections update a counter every second. Navigate away and back with VoiceOver.</p> <h2>Section A — textContent on referenced element</h2> <section aria-labelledby="text-ref"> <p id="text-ref">Count: 0</p> </section> <p><a href="#">Focusable element</a></p> <h2>Section B — aria-label on referenced element</h2> <section aria-labelledby="aria-ref"> <p id="aria-ref" role="img" aria-label="Count: 0">Visual content</p> </section> <p><a href="#">Focusable element</a></p> <script> let count = 0; setInterval(() => { count++; document.getElementById('text-ref').textContent = 'Count: ' + count; document.getElementById('aria-ref').setAttribute('aria-label', 'Count: ' + count); }, 1000); </script> </body> </html>
Attachments
Simple test case (903 bytes, text/html)
2026-06-22 11:13 PDT, Sarah
no flags
Radar WebKit Bug Importer
Comment 1 2026-06-22 11:13:36 PDT
Tyler Wilcock
Comment 2 2026-06-30 17:23:16 PDT
EWS
Comment 3 2026-07-01 13:31:52 PDT
Committed 316316@main (66ebec86604f): <https://commits.webkit.org/316316@main> Reviewed commits have been landed. Closing PR #68382 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.