Files
jobtrackingapp/docs/redesign/phase-4/p4-01/TRACEABILITY.md

10 KiB
Raw Permalink Blame History

P4-01 preservation and visual evidence

Chain: PRES → original requirement → P4-01 owner change → executed regression → loaded visual/UX evidence. Resolve the implementation commit with git log -- docs/redesign/phase-4; its parent is f696f23. All baseline routes, query parameters, write/ownership contracts and provider boundaries are retained. None of the 57 original preservation rows is replaced by this shorter scope table.

Affected contracts

PRES → retained requirement Implementation / location retained Automated regression and result Visual/UX evidence / explicit limit
PRES-E08 → existing theme/system and EN/NB state, shared notices/dialogs theme.ts, theme.d.ts; existing ThemeProvider/preferences/I18nProvider unchanged theme-contrast.test.ts 14 pairs; loaded-theme-states.test.tsx six transitions; existing theme-state/i18n/dialog tests; 12 new browser cases Both themes, EN/NB, 1440/390 widths on company states; no theme remount/state change. General completion announcements and AT review remain P4-02
PRES-E07 → collapse/drawer, current destination and commands AppShell.tsx only replaces color references and adds inverse focus alias. Same sidebar groups/buttons, routes, widths and storage key Existing sidebar-active-nav/quick-command-preservation; real command navigation baseline; new nav/command input/item focus and phone drawer return jobs-nav-*, company phone fixtures. No command hierarchy or navigation migration
PRES-J05, PRES-J07 → row actions and existing pipeline meanings Shared colors only; JobTable, KanbanBoard, pipeline.ts unchanged Existing pipeline/grouped Kanban tests; loaded six-status Jobs native API/browser scans in both modes; inherited dark Kanban browser jobs-nav-*: labelled Saved/Applied/Waiting/Interview/Offer/Rejected, primary/neutral/warning/info/success/error. Custom statuses retain neutral/raw label; no new custom-color picker
PRES-J08 → company/contact edits and relationships CompaniesTable unchanged; shared fields/dialog/action styling Eight browser matrix cases: named loading → error/Retry → empty → actual populated table/card; keyboard edit/dialog/return; six Jest cases also prove no write on load/edit companies-*: EN/NB × light/dark × desktop/phone. Contact-save/relationship behavior retained in existing tests; no new claim of every date/source edge
PRES-C06, PRES-C07 → CV tabs, previews, inclusion and isolated overrides Shared theme plus two omission-opacity branches in CvBuilderEditor; no data/save/preview change Loaded Content with canonical source and omitted sections, named override focus/contrast; existing CV Jest coverage and native Phase 2 mobile override/sibling isolation test cv-content-*: omitted sections are editable/readable, visibility indicators retained. Existing overflow warning remains. P4-03 preview keyboard and long print-layout gaps remain
PRES-C08, PRES-C09 → capability-aware template/customize/document controls Existing controls consume shared palette and notched focus Loaded Template/hovered PDF action, Customize Page size combobox/menu/Escape/focus return; existing CV normalization/template/render tests EN desktop in both themes; advanced document choices and printed paper colors unchanged. New naming failures are not silently repaired
PRES-C11, PRES-S04 → AI review/accept/reject and entitlement locks AI logic/actions unchanged Three real Free document-AI Review buttons remain disabled; loaded AI panel contrast; inherited accept/reject/malformed response Jest tests and server entitlement/browser checks Pro notice/locked controls readable; no model invoked, no claim of live provider factual quality
PRES-S03 → preferences and notification settings Settings owner unchanged, shared tab/button/field styles Loaded Notifications tab/checkbox/save in both modes, pointer-vs-keyboard focus; existing settings failure/retry and mobile→desktop preference persistence baseline EN desktop plus inherited responsive settings workflow; no preference schema/UI redesign
PRES-E01, PRES-E02 → public plans/auth entry Shared theme influence only; marketing literals retained Unchanged public axe, responsive plans/keyboard and real login browser; existing entry tests Full original browser cases retained. No final brand or external sign-in/reset-delivery approval
PRES-E09 → server/session and private-state separation No authentication, App/provider, cache or API changes Four existing real account-isolation browser cases plus full backend/session regression baseline Regression dependency, not a newly claimed visual/privacy mechanism

The remaining protected groups have no directly changed workflow owner. Their mapped tests remain in the complete 916 backend / 333 frontend baseline. Shared theme reach does not imply a newly verified loaded/visual state for every one of the 57 groups. Original provider-dependent, production, accessibility and untested capability gaps remain in the Phase 2 matrix.

New browser fixture boundary

semantic-foundations.spec.ts uses the existing Playwright app/API topology and a new non-admin synthetic owner per test. Native endpoints create profile, CV, company and status examples using B02 session/CSRF headers. Internet/provider traffic is blocked. Only the Companies GET is deliberately delayed/replaced for deterministic loading/503/empty; the populated state returns to the real API. No public fixture route or component gallery was added.

The browser's keyboard helper follows Tab/Shift+Tab or menu ArrowDown/ArrowUp, checks the actual focused target, indicator width/style and ≥3:1 composited contrast. CV tabs use their real roving-tab arrow/Enter interaction. The native MUI dialog/drawer focus-return behavior is asserted. A pointer click on the settings save action remains free of a keyboard focus indicator.

All loaded axe scans run the existing WCAG A/AA tag set without disabling rules. This new file asserts color-contrast violations only, as explicitly scoped to P4-01; the complete violation and incomplete results are attached to the local Playwright JSON report. Scan index retains concise rule/node evidence rather than credentials or trace archives. Existing general axe tests remain unchanged. Non-color results are debt, not passes or a certification claim.

Visual evidence

Captured in local Chromium via the actual built Next application and disposable .NET API, 2026-09-10/11. Heights are 900 CSS px. Files contain synthetic accounts/data only. The same test source defines each exact route and keyboard state. P4_CAPTURE=true regenerates the committed screenshots; normal test runs write to ignored test-results.

Artifact Route/state/viewport Review
Jobs light, Jobs dark /jobs, six populated statuses, Companies sidebar item keyboard-focused, EN, 1440×900 Status labels and filled foregrounds readable; distinct selected page vs focus; unchanged dense table; inverse ring visible
CV light, CV dark /career/builder/:id, loaded Content with canonical profile, omitted sections and headline field keyboard-focused, EN, 1440×900 Readable omitted rows, field label notch and focus, outline Saved chip, disabled undo/redo and colored alerts. Printed preview stays white. Existing overflow warning retained
Companies light EN desktop, dark EN desktop /companies, populated table, edit icon keyboard-focused, EN, 1440×900 Essential action/ring and text visible; surfaces/table hierarchy retained
Companies light NB desktop, dark NB desktop Same state, Bokmål, 1440×900 Norwegian labels and æ/ø/å retained
Companies light EN phone, dark EN phone Populated existing mobile card, edit focus, EN, 390×900 Existing card workflow retained; visible action focus without page restructuring
Companies light NB phone, dark NB phone Same state, Bokmål, 390×900 No truncation of fixture labels; ring visible against both surfaces; drawer keyboard/return tested after screenshot

No final visual identity or layout approval is implied. Disabled controls retain disabled semantics and existing adjacent explanations; their text is not falsely counted as satisfying active-text contrast. Subtle decorative dividers are not used to claim essential-control contrast. Placeholder-only naming, transient drag opacity, remaining local chart/marketing colors, manual assistive technology and full loaded responsive CV interactions remain separately scoped.

Capture limitation: some company-page PNGs still partially omit sidebar glyphs despite unchanged visible DOM/computed styles. The paired diagnostic captures described in the completion report show those glyphs returning after painting without an application change. Company PNGs evidence the main loaded state and edit focus; use the dedicated jobs-nav-* captures and actual keyboard assertions for navigation evidence. This is not treated as a successful whole-sidebar screenshot comparison. No content was hidden or restyled to produce the evidence.

Review and rollback

Self-review: no action, data, event handler, ownership or route change; no newly focusable ordinary cards; keyboard rings remain distinct from hover/selection; both CSS variable schemes are exercised; B01–B05 suites retained. The one CV local change addresses an independently measured contrast cause. No sensitive traces are committed.

Rollback is a normal revert of this isolated P4-01 checkpoint; no schema/data migration or infrastructure rollback is needed. Do not start P4-02 or broader migration until Connor has reviewed this checkpoint. F04 and P2-D01 retain their separate closure requirements.