diff --git a/ARCHITECTURE_ESSENTIALS.md b/ARCHITECTURE_ESSENTIALS.md index d4be416..bc85d0f 100644 --- a/ARCHITECTURE_ESSENTIALS.md +++ b/ARCHITECTURE_ESSENTIALS.md @@ -20,7 +20,9 @@ those first if you're new to the org, not just this file. 2. Mirror `docforum-core`'s data model shapes in `src/types/models.ts` — don't invent parallel frontend-only shapes for the same entities. 3. Structure: `pages/ components/ features/ hooks/ services/ store/ types/` - — keep this shape. + — keep this shape. `src/i18n/` was added in Phase W7 for locale-aware + formatting and direction (issue #88); it is not a place for business + logic. ## Where things live - `src/services/` — API client calls to `docforum-core`. `api-client.ts` is diff --git a/docs/accessibility/audit.md b/docs/accessibility/audit.md new file mode 100644 index 0000000..90a9b53 --- /dev/null +++ b/docs/accessibility/audit.md @@ -0,0 +1,136 @@ +# Accessibility audit — auth, patient, doctor, facility and admin flows + +Issues: [#89](https://github.com/DocForum/docforum-web/issues/89), +[#90](https://github.com/DocForum/docforum-web/issues/90) +Date: 2026-10-18 +Target: WCAG 2.2 level AA (`WCAG22`) + +## Method + +| Check | How it was run | Scope | +| --- | --- | --- | +| Automated rules | `jest-axe` / `axe-core` 4.10 in the Vitest suite (`npm test`) | Every flow below | +| Keyboard-only | Testing Library `user-event`, explicit `keydown` tests, focus assertions | Dialogs, forms, date range, queue actions | +| Structure | Role-based queries (table/rowheader/columnheader/status/dialog) | All data tables, live regions | +| Contrast | Token pairs calculated against WCAG 2.x relative-luminance formula | Pine/brass palette, light and dark | +| Screen reader | **Not run in this environment** — no NVDA/VoiceOver/browser available. Automated names/roles and live-region behaviour are covered; a human pass is still required (see Limitations). | All flows | + +The app was also audited by reading every interactive element, checking +that each one is a native control, has an accessible name, and appears in +a sensible tab order. + +## Checklist and findings + +### Auth — signup, login, claim account (#89) + +| # | Check | Finding | Fix | Regression test | +| --- | --- | --- | --- | --- | +| A1 | Inputs have programmatic labels | Pass (`TextField` wraps a `