Skip to content

feat(a11y): WCAG AA Storybook gate and high-priority remediations - #7

Closed
ajirthan wants to merge 41 commits into
mainfrom
feat/a11y-wcag-baseline
Closed

ajirthan wants to merge 41 commits into
mainfrom
feat/a11y-wcag-baseline

Conversation

@ajirthan

Copy link
Copy Markdown
Owner

Mirror of wso2/oxygen-ui#564 for Cursor Bugbot access on this fork. Merge target remains upstream.

Summary

  • Integrate @storybook/addon-a11y + test-runner CI (WCAG 2.1 A/AA tags; fail PRs on new violations)
  • Fix high-priority first-party gaps (accessible names, keyboard, focus rings, reduced motion, contrast tokens)
  • Document known exceptions (brand #FF7300, Form.CardButton) with linked upstream issues
  • Add Accessibility guide (packages/oxygen-ui-docs/ACCESSIBILITY.md + Storybook page) and contributor policy

Related to wso2/oxygen-ui#557 (Phase 1 — WCAG 2.1 AA baseline bootstrap). Does not close the epic (Phase 2 / WCAG 2.2 AA remains open).

Follow-ups

Test plan

  • pnpm --filter @wso2/oxygen-ui test (includes accessibility.test.tsx)
  • pnpm build:storybook + pnpm --filter @wso2/oxygen-ui-docs test:storybook:ci
  • Spot-check Accessibility addon on Button / AppShell / ComplexSelect
  • Confirm exception comments link to wso2/oxygen-ui issues (#558 / #562)

Made with Cursor

ajirthan added 19 commits July 16, 2026 10:53
Repository owner deleted a comment from cursor Bot Jul 16, 2026
Comment thread packages/oxygen-ui/src/animations/ParticleBackground/ParticleBackground.tsx Outdated
Comment thread packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
Comment thread packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
Comment thread packages/oxygen-ui/src/components/UserMenu/UserMenuTrigger.tsx
Comment thread packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx Outdated
Comment thread packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx Outdated
@ajirthan
ajirthan force-pushed the feat/a11y-wcag-baseline branch from 89d1224 to e098288 Compare July 16, 2026 06:39
Comment thread packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx Outdated
Comment thread packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx Outdated
@ajirthan
ajirthan force-pushed the feat/a11y-wcag-baseline branch from a45bc4d to d38f868 Compare July 16, 2026 06:54
Comment thread packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
Comment thread packages/oxygen-ui-docs/stories/Layout/ImageList.stories.tsx
Comment thread packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx Outdated
Comment thread packages/oxygen-ui/src/components/ThemeSwitcher/ThemeSelect.tsx
Comment thread packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx Outdated
Comment thread packages/oxygen-ui/src/components/ListingTable/shared/ListingTableToolbar.tsx Outdated
@ajirthan
ajirthan force-pushed the feat/a11y-wcag-baseline branch from b56fef5 to 9b110f2 Compare July 16, 2026 08:38
Comment thread packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
Comment thread packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
Comment thread packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx Outdated
Comment thread packages/oxygen-ui/src/components/UserMenu/UserMenuTrigger.tsx Outdated
ajirthan added 5 commits July 16, 2026 14:53
Click/keyboard-opened menus ignore mouse-leave; hover-opened menus use a
short leave delay so the pointer can reach the sibling popover paper.
Call onToggleExpand on hover-open only when the item is not already
expanded, so the full sidebar reflects nested items inspected via hover.
Treat only trimmed non-empty aria values as accessible names so a
whitespace aria-label cannot block placeholder-based naming.
Spread consumer props first, then apply menu-owned aria-controls,
aria-expanded, and a meaningful aria-label so open state cannot be
clobbered.
@ajirthan
ajirthan force-pushed the feat/a11y-wcag-baseline branch from e8a1b0f to 1cc4572 Compare July 16, 2026 09:27
Repository owner deleted a comment from cursor Bot Jul 16, 2026
Repository owner deleted a comment from cursor Bot Jul 16, 2026
Repository owner deleted a comment from cursor Bot Jul 16, 2026
Repository owner deleted a comment from cursor Bot Jul 16, 2026
Comment thread packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
Comment thread packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx
@ajirthan
ajirthan force-pushed the feat/a11y-wcag-baseline branch from 9d1e271 to ef16ee8 Compare July 17, 2026 03:41

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit ef16ee8. Configure here.

id={popoverId}
autoFocusItem={popoverOpen && popoverOpenedByClick}
disablePadding
>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MenuList uses non-menuitem buttons

Medium Severity

The collapsed nested-items popover was switched to MenuList with autoFocusItem and the trigger exposes aria-haspopup="menu", but each entry is still a styled ListItemButton instead of a MenuItem. MUI’s MenuList keyboard handling and menu semantics expect menuitem children, so arrow-key navigation and assistive-tech menu behavior may not match the trigger’s menu popup role.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit ef16ee8. Configure here.

@ajirthan ajirthan closed this Jul 20, 2026
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.

1 participant