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

34 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.