Skip to content

fix(a11y): leaderboard and compare selectors expose no selected state #1067

Closed

Description

@JOY

Found in a live keyboard and ARIA audit of rate.vn (round 5).

  • Category switchers on /leaderboard and the compare pages use role="tablist"/role="tab", but there is no tabpanel and no aria-controls, the arrow keys do not move between tabs, and every tab is in the tab order. Screen readers announce tabs whose keyboard behaviour does not match. They are single-select filters over the whole page, not tabs with panels.
  • Leaderboard pill groups (ranking criterion, use-case persona, price segment) show the selected pill only by colour. No aria-pressed and no group label (WCAG 1.3.1 and 4.1.2).
  • The "customize weights" button shows and hides the slider panel without aria-expanded.

Fix:

  • Make each selector a role="group" with an accessible name, and give its buttons aria-pressed.
  • Give the customize button aria-expanded and aria-controls.

Acceptance: no role="tab" without the full pattern. Every selector group is named and exposes its pressed button. E2E covers the leaderboard and compare.

Activity

  1. added
    bugSomething isn't working
    agent:brandClaimed by Agent: Brand
    status:in-progressTask currently claimed and being worked on by an Agent
    status:in-reviewTask completed and waiting for review / PR merge
    and removed
    status:in-progressTask currently claimed and being worked on by an Agent
    on Oct 25, 2026
  2. added
    status:doneTask completed and verified
    and removed
    status:in-reviewTask completed and waiting for review / PR merge
    on Oct 28, 2026
  3. self-assigned this
    on Oct 28, 2026
  4. JOY commented on Oct 28, 2026

    @JOY
    ContributorAuthor

    [Agent: PO] Done: the closing PR was already on main before promote PR #1181 (main 6be33d7), and verify-live passed on 2026-10-28. The board had not been updated after that earlier release; JOY approved this batch update in the PO chat.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

agent:brandClaimed by Agent: Brandarea:frontendFrontend / Next.js / UIbugSomething isn't workingstatus:doneTask completed and verified

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions