1.8 KiB
Campaign Accessibility Review
The Campaign WebUI uses Core's semantic Button, Dialog, DataGrid, form,
alert, and segmented-control components. Core owns focus trapping, focus return,
Escape handling, labels, disabled state, and keyboard behavior for those shared
primitives.
Repeatable review matrix
Run this matrix for Campaign overview, wizard, sender and recipients, attachments, template editing, review and send, operator queue, and reports:
- Navigate all actions with Tab and Shift+Tab; focus must remain visible and follow the visual reading order.
- Activate buttons and links with Enter, and native buttons with Space.
- Open every dialog, verify initial focus remains within it, close with Escape, and verify focus returns to the opener.
- Use DataGrid sorting, filtering, pagination, row selection, and action menus without a pointer.
- At 200 percent browser zoom and a 320 CSS-pixel viewport, verify that content reflows or scrolls without hiding actions.
- With reduced motion enabled, verify that workflow state does not depend on animation.
- With a screen reader, verify page headings, field labels, validation errors, workflow states, message navigation, and attachment evidence.
Automated structural guard
npm run test:accessibility-contract rejects non-semantic click handlers,
unlabelled icon-only buttons in the message preview, and Campaign-local modal
implementations that bypass Core's Dialog. It complements rather than replaces
browser and assistive-technology testing.
Known boundary
Translation keys may be visible in source because Core resolves them at runtime. The review must use a built application with current language packages. WCAG conformance is a release-level claim and still requires a bounded manual audit of the release candidate.