Files
jobtrackingapp/docs/redesign/phase-5/p5-15/p5-15-02/DEFECTS.md
T

39 lines
11 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.
# P5-15-02 — Accessibility and responsive findings
Audit source `cf847e9b256d9aec733abf3f37c42852c9dd2421`,2026-10-10. These findings are not application fixes. [Native proof](evidence/native-issues.json), [fresh full-run evidence](evidence/fresh-audit.json), [coverage](TEST_COVERAGE.md), [baseline triage](AXE_TRIAGE.md) and [operator script](MANUAL_ACCEPTANCE.md) distinguish native failures, automated rule findings and missing human evidence. No production data/provider is used. Final execution supersedes only its named observations, retaining historical failures and evidence gaps.
## Confirmed behavioral failures
| ID / scope / PRES | Reproduction and actual versus expected | Impact / criterion / severity | Remediation / owner / checkpoint / status |
|---|---|---|---|
| **A11Y-01 — File-picker keyboard activation. W08/J10** | Native owned Job Documents at768px, EN/light: focus Upload, press Enter then Space; neither opens a picker. Settings General: repeat Import JSON and Convert CSV to Import JSON; neither keyboard key opens either picker. Click each same control: all three native pickers open. Six keyboard failures/three positive pointer controls; no file data written. | **P1, production-blocking** keyboard-only attachment upload/import unavailable; WCAG2.1.1 and button activation contract. `<label role=button tabindex=0>` with hidden file inputs and no click handler is the responsible boundary; MUI's nonnative keyboard handler does not invoke label default activation. This is more serious than the minor axe `aria-allowed-role` warning. No data/security exposure observed. | UI/attachments/import owner; independent **P5-15-04-A11Y-01** repair with native Enter/Space/pointer regressions, safe file/owner round-trip, locale/mobile/reader proof. **OPEN**. Do not bypass with focus on an inaccessible hidden input or mouse-only acceptance. |
| **A11Y-02 — Mobile drawer focus and immediate Escape. E07** | Jobs390×900 EN/light, reduced motion: focus Open navigation, Enter; drawer visible, Dashboard does not receive focus. Focus remains on the now-hidden background trigger before and after axe. Immediate Escape leaves drawer open. Tab then Escape can close it, but restores focus to another background button. CV390×844 NB/dark emulated tap also fails immediate Escape return. | **P2, release acceptance blocker**; focus order/modal containment/return (WCAG2.4.3/2.4.7 and PRES-E07). Recovery exists through an additional Tab, so this evidence does not establish every navigation action permanently unusable. Ordinary historical shell checks passing do not close the new reduced-motion path. No security/data finding. | Shell/accessibility owner; independent **P5-15-04-A11Y-02**, deterministic reduced-motion entry, containment, Escape/Tab and correct trigger return at breakpoints; retain existing shell behavior. Exact transition/focus race diagnosis remains required. **OPEN**. |
| **A11Y-03 — CV source-editor destination. C07** | Native CV Content, desktop EN/light: keyboard-activate Open Career Profile; actual href/destination `/career/profile`, which has no current route and resolves404. Expected existing `/career` or `/career?section=profile`, preserving canonical source isolation. Source action is equally incorrect for pointer activation. | **P2, functional acceptance blocker**; accessible destination/product source-versus-override contract. Canonical editor is reachable through shell; no canonical mutation, CV/history corruption or lost persisted data demonstrated. | CV/navigation owner; independent **P5-15-04-A11Y-03**, minimal existing-route correction and real source/action/Back/localisation tests. **OPEN**. Do not add a second embedded canonical editor. |
| **A11Y-11 — Initial mobile visible-page measurement. C06; C09/C12 supporting** | Open the synthetic CV directly at390×844 EN/light in initial Edit mode, wait for the native ready signal, Enter Preview and settle fonts/two animation frames. Hidden measurement width793.6875 is physical; visible page width/flow remains0 with ready=true/non-finite page dataset. Preview says1page and shows collapsed/clipped text. The same owned native export API returns200 and **1 A4 PDF page**: page count matches, content placement does not. [Native proof](evidence/mobile-preview-proof.json), [preview](evidence/screenshots/mobile-preview-measurement-390-en-light.png), [PDF page1](evidence/screenshots/mobile-preview-native-pdf-page1.png). Bokmål/dark emulated screenshot independently shows the same collapsed strip. | **P1, production/progression-blocking** materially incorrect content placement/clipping and unusable preview; no page-count mismatch is claimed for this fixture. [CV frame](../../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx) hides visible-page frames in compact Edit mode; [pagination](../../../../../job-tracker-ui/src/cvPreview.ts) reads their width under display:none and publishes ready/page data without visible-mode remeasurement. The finite direct-renderer/desktop-first16 fixtures can pass while this lifecycle fails. Native PDF remains correct/authoritative; no content/revision/source mutation observed. | CV/rendering owner; independent **P5-15-04-CV-01**, regression-first deterministic visible-page physical measurement when initially hidden, readiness/layout after mode switch, EN/NB/themes/mobile/direct reload and full fidelity gates. Do not alter print geometry/PDF to match collapsed preview. **OPEN**. |
## Automated findings requiring a contextual disposition
These are rule entries/nodes, not a count of independent defects. Best-practice tags are not mislabeled as WCAG-AA violations; absence of completed human-reader results is not a functional FAIL.
| ID / route / PRES | Measured evidence | Classification and next action |
|---|---|---|
| **A11Y-04 — Analytics status targets. S01; J05 supporting** | Applied/Søkt standalone status drill-down link atEN390/NB1024:18px high, nearest safe clickable diameter18px versus24px AA minimum; 27.3/47.8px wide. | **P2**, confirmed project target-size failure / axe WCAG2.2AA2.5.8 finding. Standalone report list links are not ordinary prose; verify applicable exceptions/any equivalent same-page target during repair rather than claiming universal WCAG failure from size alone. Increase usable target/spacing without changing metrics/query semantics; **P5-15-04-A11Y-04**, Analytics/UI owner. **OPEN**, release acceptance disposition required. |
| **A11Y-05 — Avatar initials contrast. Career Profile C01/C02** | Repeated initials RR: light1.19:1, dark1.76:1,28px bold;3:1 if meaningful text. Other contact text is not implicated. | **P3 review**, potentially incidental/redundant beside user's name. Human visual/semantic disposition required before asserting WCAG1.4.3 failure or exception. **PARTIAL**, design/accessibility owner. |
| **A11Y-06 — Main/headings. E02/C01/C06/A02** | Login has no main/H1; Profile/CV/Admin heading skips. Correspondence has both inbox and shell Job email H1. | **P3 structure review**, project hierarchy/reader workflow; axe best-practice findings are not alone WCAG violations. Operator must verify headings/landmarks and efficient navigation. **PARTIAL**, page/accessibility owners; bounded04 repairs if confirmed. |
| **A11Y-07 — CV cross-document landmarks. C06/C12** | Axe compares outer app main with `main.page` inside the named preview iframe. | **P3 manual nonvisual review**, best-practice `landmark-unique`; not duplicate outer Preview-region names. Preserve verified renderer geometry and named iframe. **PARTIAL**, CV/accessibility owner. |
| **A11Y-08 — Drawer child names. E07** | Axe reports four child commands in a scrolled/emulated drawer without an exposed name; source has translated ListItemText, and another snapshot includes their names. | **NOT VERIFIED**, may involve clipping/AX visibility rather than absent labels. Check native scroll, computed names and actual reader speech before severity/repair; do not claim four confirmed unnamed controls. Shell/accessibility operator. |
| **A11Y-09 — Rules/Settings tab associations. S03** | Rules behavior passes native retention/save/error tests; Settings desktop tabs lack explicit control/panel identity links in current markup. | **PARTIAL**, inspect actual tab/panel reading order and mobile select using M09. No data-loss recurrence found; do not conflate this with repaired Rules draft loss. Settings/accessibility owner. |
| **A11Y-10 — Small/clipped control triage. J05/A02/S03** | Real zoom collection flags some table/tab-scroller descendants, an edge Jobs pagination control on a one-page fixture, and the transparent oversized MUI switch input. Root UI page/main overflow is0. | **NOT VERIFIED as unusability**: intentional two-dimensional scrollers and offscreen scrollable content are not dead controls. Need enabled multipage pagination/visible switch hitbox/reader-device checks; root measurements alone do not establish inaccessible controls. |
## Missing acceptance evidence, not demonstrated failures
- **M-SR:** authorised screen-reader operator is available according to owner; actual reader/version/browser/device/announcements/results are not yet supplied. All mandatory spoken/live/error workflows remain NOT VERIFIED. DOM/axe/agent review is not human screen-reader acceptance.
- **M-DEVICE:** native phone/tablet touch, drag/cancel, software keyboard, physical rotation and mobile AT remain NOT VERIFIED. Emulated taps/CSS viewport changes do not satisfy them.
- **M-REFLOW:** Chromium tab zoom is measured at100/200/400, but text-only browser preference, forced colours, other supported browsers and every enabled action at zoom remain incomplete.
- **M-CONTRAST:** inherited overlap/obscured/too-short contrast incompletes require the [triage](AXE_TRIAGE.md) and contextual human review. Zero previous reported violations is not compliance.
- **M-CV:** production fonts/photos and broader device acceptance remain open; the unexplained [CV Unsaved intermittent assertion](../p5-15-01/INTERMITTENT_FAILURES.md) is not fixed by a passing rerun.
## Scope and stop conditions
**A11Y-01 and A11Y-11 make P5-15-02 NO-GO for P5-15-03 until both severe defects are independently repaired and verified, or their findings are overturned by adequate evidence.** Continue only safe audit collection; no upload of real user data, emergency broad UI change or automatic next slice. Other findings remain separately owned in P5-15-04; production additionally stays NO-GO for F04, backup/restore, configuration/schema/secrets, rollback and deployed acceptance. No new authentication/tenant-integrity regression is demonstrated by these UI findings. P5-13 remains deferred/unqualified/Production-withheld (0/366, no human semantic reviews/UI); no Docker/provider/B07/deployment work.