Subject of the issue
The Vimeo component's iframe has no author-controlled accessible name. The Vimeo player library injects a title attribute set to the video's own Vimeo title, so screen reader users hear whatever the uploader named the video (in its original language) rather than a name the course author chose. That string is not localisable and not under the author's control.
This is the Vimeo counterpart of adapt-youtube#22, and should follow the same approach already used in Media (see adaptlearning/adapt_framework#2822): expose the component's own title as an aria-label. Per the guidance on adapt-youtube#22, use aria-label rather than title, as title behaves inconsistently on iframes.
Your environment
- adapt-vimeo 3.4.0 / Framework 5.56.2
- Any browser
- Any OS
Steps to reproduce
- Add the Vimeo component (using the plugin's example.json).
- View the page and inspect the
<iframe> rendered inside .vimeo__widget.
- Note there is no
aria-label. The only accessible name is a title attribute injected by the Vimeo player library from the video's own Vimeo title.
Expected behaviour
The iframe exposes an author-controlled, localisable accessible name, taken from the component's displayTitle (falling back to title) and applied as aria-label.
Actual behaviour
The iframe has no aria-label. Its accessible name depends on the Vimeo-injected title, which the author cannot set or localise.
Suggested Fix
Mirror adapt-contrib-media: once the Vimeo player is ready, set aria-label on the player's iframe element to displayTitle || title. Because the iframe is created at runtime by the Vimeo SDK (not in the template), this is done in VimeoView rather than in the Handlebars template.
Relevant WCAG success criterion: 4.1.2 Name, Role, Value (technique H64).
Posted via collaboration with Claude Code
Subject of the issue
The Vimeo component's iframe has no author-controlled accessible name. The Vimeo player library injects a
titleattribute set to the video's own Vimeo title, so screen reader users hear whatever the uploader named the video (in its original language) rather than a name the course author chose. That string is not localisable and not under the author's control.This is the Vimeo counterpart of adapt-youtube#22, and should follow the same approach already used in Media (see adaptlearning/adapt_framework#2822): expose the component's own title as an
aria-label. Per the guidance on adapt-youtube#22, usearia-labelrather thantitle, astitlebehaves inconsistently on iframes.Your environment
Steps to reproduce
<iframe>rendered inside.vimeo__widget.aria-label. The only accessible name is atitleattribute injected by the Vimeo player library from the video's own Vimeo title.Expected behaviour
The iframe exposes an author-controlled, localisable accessible name, taken from the component's
displayTitle(falling back totitle) and applied asaria-label.Actual behaviour
The iframe has no
aria-label. Its accessible name depends on the Vimeo-injectedtitle, which the author cannot set or localise.Suggested Fix
Mirror adapt-contrib-media: once the Vimeo player is ready, set
aria-labelon the player's iframe element todisplayTitle || title. Because the iframe is created at runtime by the Vimeo SDK (not in the template), this is done inVimeoViewrather than in the Handlebars template.Relevant WCAG success criterion: 4.1.2 Name, Role, Value (technique H64).
Posted via collaboration with Claude Code