Page MenuHomePhabricator

ULS: Accessibility review
Closed, ResolvedPublic8 Estimated Story Points

Description

Background

This task covers the broader accessibility review for the new ULS before deployment to production.

The ULS is a global product used across 300+ Wikipedia language editions. As such it is subject to accessibility obligations in multiple jurisdictions, most notably WCAG 2.1 Level AA, which underpins both the European Accessibility Act (in force June 2025) and ADA web accessibility case law in the US. Our understanding is that Wikimedia aims for WCAG AA conformance at minimum.

Known accessibility issues in the current ULS (pre-rewrite)

The following issues are documented and are expected to be addressed by the rewrite:

  • Keyboard navigation is unreliable — arrow keys jump unpredictably between columns, page up/down do not work, sometimes typing is the only way to select a language (T309913) — maps to WCAG 2.1 SC 2.1.1 Keyboard
  • HTML structure misrepresents item count for screen readers (T282024) — maps to WCAG 2.1 SC 1.3.1 Info and Relationships
  • Layout shifts cause wrong clicks — maps to WCAG 2.1 SC 2.5.3 / 3.2.2
  • No dark mode support, which affects users with visual impairments relying on dark mode (T363762)

General MediaWiki accessibility context and known gaps are documented at: https://www.mediawiki.org/wiki/Accessibility_and_usability_cleanup

Relevant developer reference is: https://www.mediawiki.org/wiki/Accessibility_guide_for_developers

The full WCAG 2.2 success criteria are at: https://www.w3.org/TR/WCAG22/

Goal

Perform an accessibility review of the new ULS component before deployment to production, confirm that known issues are resolved, and ensure the new implementation meets WCAG 2.1 Level AA conformance.

Scope

  • New Universal Language Selector component (content language selector and interface language selector)
  • All entry points that will be live at time of deployment
  • Desktop and mobile
  • Dark mode

What we don't know yet

  • Who will conduct the review
  • What tooling and methodology will be used (automated testing and/or manual testing)
  • Whether we need a formal audit report for compliance purposes or an internal review is sufficient
  • Timeline: target is before deployment

Next steps

  • Confirm reviewer and methodology
  • Define what "passed" looks like: full WCAG 2.1 AA audit or targeted review of known issues
  • Coordinate with @bwang (has expressed interest in supporting this)

Related tasks

Event Timeline

GGalofre-WMF lowered the priority of this task from High to Medium.May 21 2026, 8:29 AM

Change #1306176 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Add annoucement for live results count when search

https://gerrit.wikimedia.org/r/1306176

Change #1306176 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Add annoucement for live results count when search

https://gerrit.wikimedia.org/r/1306176

Nikerabbit raised the priority of this task from Medium to High.Jul 1 2026, 11:25 AM
Nikerabbit lowered the priority of this task from High to Medium.

Change #1307790 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: make missing languages entrypoint a button

https://gerrit.wikimedia.org/r/1307790

Change #1307791 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: trap focus on mobile and restore focus on close

https://gerrit.wikimedia.org/r/1307791

Change #1307792 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: mark unavailable languages as aria-disabled

https://gerrit.wikimedia.org/r/1307792

Change #1307793 had a related patch set uploaded (by Nik Gkountas; author: Nik Gkountas):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: add PageUp/PageDown keyboard navigation

https://gerrit.wikimedia.org/r/1307793

Change #1307790 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: make missing languages entrypoint a button

https://gerrit.wikimedia.org/r/1307790

Change #1307791 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: trap focus on mobile and restore focus on close

https://gerrit.wikimedia.org/r/1307791

Change #1307792 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: mark unavailable languages as aria-disabled

https://gerrit.wikimedia.org/r/1307792

Change #1307793 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: add PageUp/PageDown keyboard navigation

https://gerrit.wikimedia.org/r/1307793

Change #1312484 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Add axe accessibility tests

https://gerrit.wikimedia.org/r/1312484

Change #1312488 had a related patch set uploaded (by Abijeet Patro; author: Abijeet Patro):

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Add listbox id wiring tests

https://gerrit.wikimedia.org/r/1312488

I've added some automated tests for A11y using the library: https://github.com/dequelabs/axe-core

aXe is run in different states such as on desktop, mobile, on selection, on search etc.

Also additional tests are added for listbox id verification.

Change #1312484 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Add axe accessibility tests

https://gerrit.wikimedia.org/r/1312484

Change #1312488 merged by jenkins-bot:

[mediawiki/extensions/UniversalLanguageSelector@master] ULS rewrite: Add listbox id wiring tests

https://gerrit.wikimedia.org/r/1312488

Ran a Lighthouse accessibility audit (snapshot mode) on https://en.wikipedia.org/wiki/Baldur's_Gate_3 with the new language selector open. The full report is attached above.

Accessibility score: 88/100.

No failures are caused by the language selector itself. The failing audits are:

  • target-size (16 elements): 12 are article content (navbar/plainlist links, citation superscripts). The other 4 are the page tabs (Talk, Read, Edit, History), flagged only because the open selector panel partially covers them in the snapshot — an artifact of auditing with the overlay open, not a defect in ULS.
  • link-name (169), color-contrast (7), image-alt (1), table-fake-caption (5): all in article content (navboxes, templates)

The language selector's own controls (search input, list options, buttons) pass all audits, including target-size, aria-* attribute checks, and contrast.

Nikerabbit subscribed.

Most known and discovered issues are reported. Remaining ones are out of scope or prioritized.

Nikerabbit updated Other Assignee, added: abi_.