39 lines
11 KiB
Markdown
39 lines
11 KiB
Markdown
# 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.
|