Files
jobtrackingapp/docs/ui-modernisation/VALIDATION.md
T

5.0 KiB
Raw Blame History

A3-IM01 — implementation validation

3 November 2026. This qualifies a bounded shared-theme increment in the actual React application. It does not qualify the entire A3 redesign, Phase 10, Product Review, international discovery, European localisation, security or release readiness.

Check Result Scope
Existing baseline PASSED: 28 tests / 4 suites Theme contrast/state, loaded company states and dialog flow before edits. BASELINE.json
A3 visual contract before implementation FAILED as expected: 2 tests Old light/dark canvas values differed from approved A3; no production code had been changed
First new-palette regression FAILED, corrected Dark error text 4.275:1 on new elevated surface; changed colour, retained 4.5 threshold
Final targeted theme/state/dialog tests PASSED: 30 / 5 suites Includes the baseline 28 and 2 new A3 visual-contract cases; not 58 independent tests. THEME_TESTS.json
Additional preservation checks PASSED: 5 / 2 suites Existing CV thumbnail/template rendering and shell navigation; disjoint from the 30 theme/state/dialog cases. PRESERVATION_TESTS.json
Typecheck PASSED npm run typecheck, no incremental cache
Lint PASSED npm run lint, zero-warning policy
Static production build PASSED npm run build with NEXT_PUBLIC_API_BASE_URL=/api for controlled loopback browser checks; no deployment
Actual React screen matrix PASSED: 32 conditions Login and loaded Companies × 320/390/768/1440px × EN/NB × light/dark
Company dialog keyboard journeys PASSED: 16 Keyboard edit/open, visible focus, Escape and focus return; actual MUI controls
Scoped axe sweeps PASSED: 48, zero returned violations 32 main surfaces + 16 dialogs; rule tags WCAG2 A/AA, 2.1AA, 2.2AA. Excludes shell/navigation from the main-surface sweep; not full WCAG conformance
Actual form validation PASSED: 16 screen variants Empty login submit marks required fields invalid and focuses first field; no authentication POST
Root reflow / colours / locale PASSED in screen matrix Actual built app body palette and html lang/scheme, no root overflow at the tested widths
Source review PASSED for bounded patch Independent reviewer found no important/critical issue; physical document frames/renderers retain font ownership
Graph AST-only refresh completed Generated graph untracked; no model/semantic graph call

evidence/BROWSER.json records every screen/dialog scope, page exceptions, attempted writes and blocked external requests; scripts/verify-a3-theme.mjs reproduces it from the static export served locally on port 4338 by the existing serve-export script. All API responses are controlled synthetic fixtures, all write methods are rejected, and every remote request is aborted. No backend, production data, model, identity provider or mailbox was contacted. This is actual application rendering with controlled service responses, not live-service acceptance.

The first browser run reached all its two-width screen/dialog assertions but failed its final no-external-attempt assertion because the existing page head requests Google Fonts. The harness was corrected to permit only that blocked known font origin, retaining all aborts and rejecting any unexpected origin. The final four-width run supersedes that result. No remote font was downloaded. Removal/localisation of existing font imports requires separate caller/renderer review; it was not performed here.

Lint initially rejected CommonJS require imports in the new browser harness. Converted the harness to the project's existing ES-module script convention rather than suppressing lint rules or changing lint configuration. The final .mjs run and full lint supersede the failed intermediate harness check. No application source changed during this conversion.

Evidence has 32 populated screen screenshots. The built application's sidebar structure is still the existing one: only its shared semantic colours changed. Do not present these captures as completed A3 navigation or A1 dashboard implementation. The prototype's 480 conditions/50 axe sweeps are separate historical design evidence and are not included in these application counts.

NOT RUN: real backend flows, full application regression, native screen reader, physical touch/software keyboard, actual browser zoom, native-language review, final integrated security, live provider/model, physical PDF/container requalification, backup/restore or hosted CI. Source-defined acceptance for those scopes remains open. Pending zoom/human checks prevent a claim of complete accessibility acceptance.

Reproduce sequentially from job-tracker-ui with installed dependencies: targeted Jest paths recorded in native JSON reports, npm run typecheck, npm run lint, NEXT_PUBLIC_API_BASE_URL=/api npm run build, serve-export on local port 4338, then rtk proxy node scripts/verify-a3-theme.mjs. Rebuild when application source changes; the evidence manifest binds source and exported assets to this checkpoint.