Skip to content

fix(landing): give the slider thumbnails a name and the comparison table keyboard access - #236

Merged
gnacho merged 1 commit into
mainfrom
fix/235-a11y
Oct 29, 2026
Merged

gnacho merged 1 commit into
mainfrom
fix/235-a11y

Conversation

@gnacho

@gnacho gnacho commented Oct 29, 2026

Copy link
Copy Markdown
Owner

Problem

axe-core 4.14.0 with the WCAG 2.0/2.1 A and AA plus best-practice tags found two issues:

  • button-name (critical): the slider thumbnails are built in app.js with role="tab", and their only child is an image with an empty alt, so neither of them had an accessible name.
  • scrollable-region-focusable (serious, phones only): the comparison table scrolls horizontally and a keyboard user could not reach it.

Changes

  • landing/app.js: each thumbnail gets aria-label from its caption (translated), aria-controls pointing at the viewport, and roving tabindex so only the active one is in the tab order. Arrow keys, Home and End move between slides and follow the focus.
  • landing/index.html: the viewport is a tabpanel, the table wrapper is a named region with tabindex="0", and the cache-bust goes to ?v=9.
  • landing/i18n.js: compare.tableLabel in ES and EN.
  • landing/styles.css: visible focus ring on the table wrapper.

Verification

  • axe at 360, 390 and 1280 px: 0 violations locally and against production.
  • Behaviour suite: 14 of 14 checks passing against production (names, aria-controls, single tab stop, ArrowRight, Home and End, focus follows, table focusable and labelled, focus ring, labels switch to English with the language).
  • Previous suites still green: 219 of 219 against production.

Already deployed to https://nextsync.cloudless.club/ and verified there.

Closes #235

@gnacho
gnacho merged commit 6f3d46b into main Oct 29, 2026
2 checks passed
@gnacho
gnacho deleted the fix/235-a11y branch October 29, 2026 07:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

landing: axe finds unlabelled slider thumbnails and a scrollable table without keyboard access

1 participant