Viewee
Start free
Pricing
Sign in
← Legal and assurance

Structural audit of the Viewee build against WCAG 2.2 Level AA. Prepared 16 September 2026 by Instinct (for Alex). Companion document: "WCAG 2.2 AA - Audit Plan + Checklist" (same folder). This pass audits what exists structurally and flags exactly what needs testing once pages are staged; it is not a conformance claim.

1. What exists today (verified state)

SurfaceState as of 16 Sep 2026Auditable now?
Marketing site (Astro, static)~45-54 static pages built covering home, waitlist, platform, solutions, sectors, product tour, pricing, case studies, blog, FAQ, company, careers, legal, account, refer. Homepage and waitlist at highest fidelity; secondary pages on a shared production-ready template. Per-page fidelity, forms, consent and mobile QA are known-unfinished.Source only - no staging URL yet
WaitlistPart of the Astro build; highest-fidelity page. Form behaviour (validation, errors, consent) on the remaining-work list.Source only
Admin dashboardNot built. Planned Next.js + React + TypeScript + PostgreSQL, client admin + Viewee ops admin + restricted super-admin planes.No - checklist applies at build time
Resident/family feedback flowsNot built. Planned as part of the SaaS product.No - checklist applies at build time
Repogithub.com/alex-viewee/viewee (private) currently empty - full source tree packaged for a one-shot desktop upload. Verified via GitHub API 16 Sep 2026: no code reachable at any path.-

Consequence: there is no rendered DOM to test against any success criterion yet. Everything below is a structural risk assessment plus an exact test protocol to run the moment pages are staged. Nothing in this document should be read as "passed".

2. Structural findings and leverage points

F1 - The shared template is the single highest-leverage audit target. Roughly 40+ marketing pages render from one shared template. Any accessibility defect in that template (missing skip link, weak focus styles, low-contrast muted text, no landmark regions) replicates across the whole site; conversely, fixing the template fixes most of the site. Audit order when staged: template first, then per-page content.

F2 - The biggest risk is not the marketing site. It is building the dashboard and feedback flows inaccessibly and retrofitting later. Retrofitting accessibility into form-heavy React apps typically costs 3-5x more than building it in. The checklist in the companion doc (sections 5-6) should gate those builds: component library choice (4.1.2 Name/Role/Value is where React apps fail), form patterns, drag alternatives, status messages, accessible auth.

F3 - WCAG 2.2's new criteria are the likely blind spot. The six new A/AA criteria (2.4.11 Focus Not Obscured, 2.5.7 Dragging Movements, 2.5.8 Target Size, 3.2.6 Consistent Help, 3.3.7 Redundant Entry, 3.3.8 Accessible Authentication) postdate most templates, component libraries and auditors' habits. Each maps to a concrete Viewee feature (see risk register).

F4 - Known-unfinished work is accessibility-relevant. Forms, consent and mobile QA are explicitly unfinished in the build - these three areas carry a disproportionate share of A/AA failures (3.3.1-3.3.4 error handling, 2.5.8 target size, 1.4.10 reflow). Do not treat "mobile QA done" as "accessibility done"; they overlap but are not the same check.

3. Risk register - exact tests to run once staged

Ranked by expected impact on care-sector users. Each entry: the WCAG 2.2 criterion, why it is likely, and the exact test.

#RiskSCSurfaceWhy likelyExact test once staged
1Touch targets below 24px on mobile nav, icon buttons, close buttons2.5.8 (AA, new)M WMinimal marketing templates routinely ship 16-20px icon targetsMeasure every interactive target at 375px and 320px viewport; list every target under 24x24px CSS or failing the spacing exception
2Sticky header / cookie banner / chat widget fully hiding focused elements2.4.11 (AA, new)M W DSticky nav + consent banner both planned/typical on this buildTab through every page at 3 viewport heights (short laptop, tablet portrait, phone); any focused element fully hidden = fail
3Brand-palette contrast failures (muted grays, pastel-on-white)1.4.3, 1.4.11 (AA)AllMost common automated-audit failure class; secondary text and input borders are the usual culpritsaxe/Lighthouse full-site scan + manual check of focus indicators, input borders, chart series at 3:1; body text 4.5:1
4Waitlist form: placeholder-as-label, no autocomplete tokens, errors not announced3.3.2, 1.3.5, 3.3.1/3.3.3 (A/AA)WForms explicitly unfinished; the waitlist is the first conversion point and the first accessibility impression for care-sector buyersInspect each field: visible label? autocomplete token? Submit with errors using keyboard + NVDA: is focus moved to the error and the message announced and tied to the field?
5Shared-template page titles/headings duplicated across ~45 pages2.4.2, 2.4.6 (A/AA)MTemplate pages often inherit identical titles/h1sCrawl staged site; verify unique descriptive title and one h1 per page
6No skip link / landmarks on template2.4.1 (A)MAstro starters vary; must be verified, not assumedFirst Tab press on any page reveals a working skip-to-content link; header/nav/main/footer landmarks present (NVDA elements list)
7Drag-only interactions on the "owned actions" board2.5.7 (AA, new)DKanban-style action boards are the natural UI for feedback-to-action; drag is the default patternWhen built: every drag operation achievable by single pointer (move buttons/menu) and by keyboard
8Login requires cognitive tests or blocks password managers3.3.8 (AA, new)DCare staff have low digital confidence; CAPTCHA puzzles or paste-blocking are common defaultsWhen built: log in with a password manager; verify paste works in password fields; no puzzle/memory CAPTCHA; offer magic link or passkey
9Multi-step flows re-asking for known info3.3.7 (A, new)F DMulti-step feedback forms and onboarding wizards commonly re-ask name/email/orgWhen built: enter info in step 1, verify it is auto-populated or selectable later, never retyped
10Silent loss of half-written feedback on timeout or navigation2.2.1, 3.3.4 (A/AA)FResidents type slowly; sessions on shared tablets expireWhen built: start feedback, wait for session timeout / navigate away; verify warn + extend and that input survives (local save or confirm step)
11Status-by-color only in themes/actions/evidence views1.4.1 (A)D FDashboard status chips default to color-onlyWhen built: view in grayscale / ask a color-blind check (simulator); every state distinguishable by text/icon too
12"Feedback submitted" not announced to screen readers4.1.3 (AA)D FToast/confirmation patterns rarely include role=status by defaultWhen built: submit with NVDA/VoiceOver running; confirmation must be announced without moving focus
13Hero/background motion with no pause and no reduced-motion fallback2.2.2 (A), 2.3.3 advisoryMHigh-fidelity homepage likely has animationCheck for pause control on any auto-playing element; emulate prefers-reduced-motion and verify motion is suppressed
14Product tour / demo video without captions1.2.2 (A)MDemo videos routinely ship uncaptionedWhen video ships: captions verified against audio (not just auto-captions left unchecked)
15Reflow failure at 320px on dashboard tables/charts1.4.10 (AA)DData tables are the classic horizontal-scroll failWhen built: 320px viewport, no two-axis scrolling; tables get list/card alternatives

4. Care-setting assistive technology considerations (baked into the tests above)

5. What happens next

  1. Source tree lands in the repo (pending Alex's one-shot upload), then staging deploy.

  2. Run the risk register in section 3 against staging - items 1-6 apply to the marketing build immediately; items 7-15 gate the dashboard and feedback builds.

  3. Fix the shared template first (finding F1), re-scan the site, then per-page content.

  4. Adopt the companion checklist as the PR gate for the Next.js dashboard and feedback flows before those builds start (finding F2).

  5. Publish an accessibility statement per surface at launch, with a feedback route.

6. Sources (W3C WAI)