Earlier quoted context omitted.
Adding a name to an element without a role, like span or div, is technically invalid; in this example, only the elements have valid names added to them, because they implicitly have the role of "list." Also, aria-label and aria-labelledby replace the contents of an element when the contents would otherwise be the name; if the elements where instead (which has an implicit role), screen readers would only read "IMDb ra…
That's some good feedback and I honestly think this should have been an definition list from the start. I was interested about how it would change if I replaced those `span` with `p` and it still reads the entire block for me with VoiceOver. - Parental guidance, group - [arrow right] - end of, Parental guidance, group - [arrow right] - 14+ - [arrow right] - Production Year, group - … When I look at the Chrome Accessi…
Accessible Name and Description Computation is complicated, some elements can get their name from their contents and some can't; frankly, I can't keep it all straight in my head.
https://www.w3.org/TR/accname-1.2/
Additionally, there's what the specs say and what browsers and screen readers actually do.
VoiceOver doesn't support the `aria-description` attribute yet. The `title` attribute is often computed as an element's description, when it's not computed as its name (it's not a good choice for naming elements, except ).
https://a11ysupport.io/tech/aria/aria-description_attribute
`role="application"` isn't a good role for static content and should only be used when letting a screen reader used its keyboard shortcuts would interfere with the user operating interactive controls (which should rarely be the case).