40 lines
1.8 KiB
Markdown
40 lines
1.8 KiB
Markdown
# 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:
|
|
|
|
1. Navigate all actions with Tab and Shift+Tab; focus must remain visible and
|
|
follow the visual reading order.
|
|
2. Activate buttons and links with Enter, and native buttons with Space.
|
|
3. Open every dialog, verify initial focus remains within it, close with Escape,
|
|
and verify focus returns to the opener.
|
|
4. Use DataGrid sorting, filtering, pagination, row selection, and action menus
|
|
without a pointer.
|
|
5. At 200 percent browser zoom and a 320 CSS-pixel viewport, verify that content
|
|
reflows or scrolls without hiding actions.
|
|
6. With reduced motion enabled, verify that workflow state does not depend on
|
|
animation.
|
|
7. 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.
|