a11y: WCAG/mobile fixes and deterministic visual gates (Closes #14)
Quality gates / quality (pull_request) Failing after 2m25s
Quality gates / quality (pull_request) Failing after 2m25s
Strict RED-GREEN per defect, verified in a real browser:
- Nav buttons expose accessible names ('Today navigation item') and
the active view carries aria-current=page
- Urgent red-flag box is an assertive role=alert live region so screen
readers announce 'Pause and get medical help' the moment a red-flag
symptom is checked
- Log sheet dismisses on Escape (keyboard path out of the modal)
- --muted darkened #756e68 -> #6a635c: muted text now meets WCAG AA
4.5:1 on paper, surface, and soft backgrounds
- New npm run test:a11y gates (Playwright, mobile viewport):
landmarks/labels/focus-ring/touch-targets/reduced-motion,
urgent-alert announcement + dialog semantics, token contrast math
and 200% text-zoom resilience; each writes a synthetic screenshot
to artifacts/a11y-*.png for human inspection
- CI runs test:a11y and uploads the screenshots as artifacts
- sleek-chat selector updated to the new accessible nav name
Privacy/safety paths unchanged: local-first storage, consent-gated AI,
deterministic urgent override all still pass existing suites.
This commit is contained in:
1 parent
47294a98aa
commit
ae9fe0173c
12 files changed
+217
-4
No files matched your search
@@ -49,8 +49,20 @@ jobs:
|
||||
sleep 1
|
||||
done
|
||||
npm run test:ui
|
||||
npm run test:a11y
|
||||
npm run test:photo
|
||||
npm run test:sleek
|
||||
- name: Upload accessibility screenshots
|
||||
uses: actions/upload-artifact@v4
|
||||
if: always()
|
||||
with:
|
||||
name: a11y-screenshots
|
||||
path: |
|
||||
artifacts/a11y-journal-mobile.png
|
||||
artifacts/a11y-privacy-mobile.png
|
||||
artifacts/a11y-redflag-alert.png
|
||||
artifacts/a11y-zoom-home.png
|
||||
if-no-files-found: ignore
|
||||
- name: Dependency audit
|
||||
run: npm audit --audit-level=high
|
||||
- name: Syntax checks
|
||||
|
||||
Reference in new issue
Block a user