WattleGrow Accessibility Statement
WattleGrow aims to meet WCAG 2.2 Level AA across the nursery, public and admin surfaces this repository builds. This statement is drafted as part of Build Plan WG-407 ("Accessibility pass and conformance statement", P-02) and records honestly what has and has not been verified before R3 hardening ships, so a reader can see exactly what "accessible" means here today rather than take the claim on faith.
What has been automated-tested
Every nursery, public and admin screen has an automated `axe-core` scan (`@axe-core/playwright`) run against a real, running server and a real database, asserting zero serious or critical violations; this is a CI gate, not a one-off check, so a regression fails the build the same way a broken test would. As of this draft, every screen this suite covers passes with zero serious or critical violations, including a real, shared-component bug this pass found and fixed — see "Fixed this pass" below. Four screens also carry Playwright tests that drive real browser keyboard events — `Tab`, `Enter`, `Escape` — rather than only checking markup: the nursery stock screen's provenance sheet, the add-plant search-and-sheet flow, the public nursery page, and the nursery onboarding pages' section navigation. These tests confirm a visible `:focus-visible` ring on every stop, forward progress through Tab order with no keyboard trap, and that the two hand-rolled dialog sheets in this codebase close on Escape and return focus to the control that opened them — a real gap this pass found and fixed, not a pre-existing given. Every nursery-surface and admin control also targets 48 px with 8 px gaps (text inputs and selects 44 px), and every stock or account state is shown as an icon plus a label plus a colour, never colour alone, per this project's own design rules.
Fixed this pass
The shared `DataTable` component (used by every admin list screen, plus the referral-count tables on `/nursery/referrals` and `/admin/referrals`) failed axe-core's `scrollable-region-focusable` check, caught while walking `/admin/sources`: its horizontally-scrollable table had no keyboard-focusable element, so a keyboard-only user could not reach content scrolled off to the side (WCAG 2.1.1 and 2.1.3). Two things combined to cause it — the scroll wrapper `<div>` itself had no `tabindex`/accessible name, and a global base stylesheet rule independently made the `<table>` element inside it scrollable too, creating a second, nested, unlabelled scroll region even after the wrapper was fixed. Both are fixed: the wrapper is now a focusable, named `role="region"` (every call site supplies a real label — "Sources", "Users", "Nurseries", and so on — not a generic placeholder), and the table itself no longer independently scrolls. This dates to the admin console's original `DataTable` component (WG-211), well before this WG-407 pass, and is a shared component, so the fix applies to every screen that uses it, not just `/admin/sources`. (Platform-wide admin screens such as sources and users moved to the separate WattleGrow Administration site on 9 Sep 2026; this site's `/admin` is now nursery onboarding only.)
What has not been tested, and why
Build Plan WG-407's own acceptance criteria call for a manual keyboard walkthrough of every screen at 393 px and 1280 px, a VoiceOver (iOS) pass on the stock screen and the public page, and an NVDA pass on the admin screens. None of that manual, human, assistive-technology testing has been performed for this release. The automated Playwright keyboard tests above exercise real Tab/Enter/Escape key handling in a real browser, so they do genuinely verify tab order, focus movement and Escape behaviour — but a script pressing keys is not a person using the site, and it cannot notice an control that is technically reachable but awkward, a label that is confusing out loud, or the hundred other things a human notices and a script does not. VoiceOver and NVDA are graver gaps still: this build ran in a cloud sandbox with no iOS device and no Windows machine, so no screen reader of any kind was available to test against, and no such pass has been simulated, approximated, or otherwise substituted for. Nothing in this statement or in WG-407's own release note claims a screen-reader pass happened. This is recorded as an open item for Mark, or whoever next has the hardware, to close before this statement can honestly claim a completed WG-407.
Standard
The target is WCAG 2.2 Level AA. This statement will be updated, and its "published" date below moved forward, whenever the manual walkthrough or an assistive-technology pass is actually carried out, and whenever a newly-found issue is fixed.
Feedback
If something on WattleGrow is hard to use with a keyboard, screen reader, or other assistive technology, tell the nursery you're trying to reach, or contact WattleGrow directly — a dedicated contact address is supplied along with the real Terms of Service and Privacy Policy text (see those pages' own placeholder notes).
Status
Last reviewed 30 Sep 2026: still accurate. No manual walkthrough or screen-reader pass has been done since the draft.
Drafted as part of WG-407, R3 hardening. Automated axe-core and keyboard-navigation coverage: complete, zero serious or critical violations across every screen the suite covers, including the shared `DataTable` fix above. Manual keyboard walkthrough, VoiceOver (iOS), and NVDA passes: not yet performed — open gap, tracked above.