Skip to content

a11y(milestones): full keyboard operability#828

Merged
mikewheeleer merged 1 commit into
Talenttrust:mainfrom
aburex12345:a11y/milestones-11-keyboard
Jul 26, 2026
Merged

a11y(milestones): full keyboard operability#828
mikewheeleer merged 1 commit into
Talenttrust:mainfrom
aburex12345:a11y/milestones-11-keyboard

Conversation

@aburex12345

Copy link
Copy Markdown

Add visible focus-visible styles to milestones controls missing rings, and cover tab order plus Enter/Space activation in dedicated tests.

Description

Milestones controls were keyboard-reachable via native buttons/radios/links, but several interactive elements lacked visible focus styles, so keyboard users could not tell where focus was (WCAG 2.4.7).
This PR adds focus-visible rings/outlines to the gaps (sample banner dismiss ×, creation form Cancel/Submit, due-soon dismiss) without changing layout, and adds dedicated keyboard tests for tab order and Enter/Space activation.
Closes #618

Type of Change

  • Bug fix (non-breaking change that resolves an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Refactor (no functional change, internal code improvement)
  • Documentation update

Pre-flight Checklist

All items must be checked before requesting review.

  • npm run lint passes with no errors
  • npm test passes with no failures
  • npm run build completes successfully

Testing & Coverage

  • Module test coverage for impacted files meets or exceeds the 95% minimum threshold
    (run npm test -- --coverage and check the per-file table)
  • If this PR adds or modifies UI components, accessibility tests were written using
    the shared utilities in src/test-utils/a11y.tsx

What was tested?

Automated (new suite src/components/__tests__/MilestonesKeyboard.test.tsx):

  • Visible focus-visible / focus-within classes on Add Milestone, sample dismiss ×, Start from scratch, form Cancel/Submit, filter labels, due-soon dismiss + links
  • Enter/Space: open create dialog, dismiss sample banner, Cancel form, select filter radio, dismiss due-soon (focus moves to scroll region)
  • Tab order: filter radios → Add Milestone → due-soon link → dismiss → scroll region
  • Arrow keys within MilestoneFilter radiogroup
  • jest-axe on populated page and creation form
    Coverage (impacted modules): Statements 95.74%, Lines 95.62%
    Full suite: 74 suites / 1279 tests passed.

Full test output

Test Suites: 74 passed, 74 total Tests: 1279 passed, 1279 total Snapshots: 7 passed, 7 total Time: 18.645 s

MilestonesKeyboard suite: 19 passed.

Accessibility & Security Notes

Accessibility

  • Added visible focus-visible outlines/rings on controls that previously had hover-only styling.
  • Native controls remain operable with Tab, Enter, and Space; radiogroup supports arrow-key selection.
  • Automated checks: jest-axe in MilestonesKeyboard.test.tsx (plus existing milestones axe coverage). Focus-visible assertions mirror ActionPanel / EmptyState patterns.
  • Manual: keyboard tab order and Enter/Space activation covered in tests; no screen-reader pass beyond axe.

Security

N/A — no auth, wallet, API, or new user-input handling; styling and a11y tests only.

Add visible focus-visible styles to milestones controls missing rings,
and cover tab order plus Enter/Space activation in dedicated tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
@drips-wave

drips-wave Bot commented Jul 25, 2026

Copy link
Copy Markdown

@aburex12345 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@mikewheeleer
mikewheeleer merged commit 5095004 into Talenttrust:main Jul 26, 2026
1 check passed
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.

Make the milestones controls fully keyboard-operable

3 participants