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

8.4 KiB

P5-15-02 — Inherited axe triage

Source checkpoint cf847e9b256d9aec733abf3f37c42852c9dd2421. The raw-derived baseline inventory independently reconciles 267 result attachments / zero violations / 2,041 incomplete node occurrences from the final R-03 ordinary run. This is fresh parsing of inherited execution, not a new browser run. The approximate 2,040 in the request is superseded by the actual 2,041 count.

One occurrence is one incomplete[].nodes[] entry. Repeated states, languages, themes, generated IDs and CSS classes remain counted. Exact-node hashes and normalized grouping are provided to reduce duplicated investigation; neither is a count of distinct defects. The five rules have 5/38/4/304/2 normalized groups respectively. Full scan ledger, messages, representative targets, HTML excerpts and hashes are retained in the JSON. Attachments without result JSON are excluded; 267 is not every axe invocation in the application.

Priority / rule Occurrences Underlying evidence and representative component Required verification / status
High: aria-hidden-focus 41 Five normalized groups; retained MUI modal drawer and modal focus scopes. Every message asks whether descendants are tabbable in the current state. Traverse real Tab/Shift+Tab with drawer open/closed; inspect active modal/hidden background and Escape return, then human screen reader. PARTIAL; potentially serious if hidden content receives focus. A retained hidden node alone is not a failure.
High: aria-valid-attr-value 18 Four groups in named-controls/modal fixtures. Generated aria-labelledby IDs are missing on Quick Search and other MUI Dialog papers, even when an explicit aria-label exists. Inspect settled DOM/AX name; match dialog title reference or explicit name, then test spoken name with operator. PARTIAL; unresolved semantic reference candidate, not automatically an unnamed dialog.
Medium: aria-prohibited-attr 209 204 generic spans and five generic divs; 38 groups. Includes CV/status labels, Board states and the admin version badge (div with aria-label, no supported naming role). Determine whether essential state is independently conveyed as readable text/control semantics; operator review. PARTIAL; unsupported ARIA use requires scope-specific correction if it carries essential meaning. No global removal or automatic violation inference.
Medium: th-has-data-cells 4 Two groups in Jobs Table empty/missing action-data cells, both languages. Message: table data cells missing or empty. Inspect populated and empty table header associations, row action names and nonvisual table navigation. PARTIAL; empty/action-column structure and tool limitation must be distinguished.
Medium: color-contrast 1,769 1,383 overlapped background +193 partially obscured +4 partial overlap +189 too-short-text checks; 304 groups. Includes badges, sticky/pane intersections and dialog states. Human rendered-pair review and measured foreground/background in the actual unobscured state. Separate real obstructed controls from intentional off-screen/hidden/transitional content. PARTIAL; incomplete contrast is neither passing nor demonstrated low contrast.

No category is closed solely from zero violations. Real low contrast, focus traps, inaccessible states or missing names found by the fresh audit belong in its defect register. Remaining incompletes require the operator programme, including speech rather than an accessibility snapshot. Representative messages may come from third-party MUI/axe behavior; that does not exempt the product from acceptance.

Acceptance standard and supplemental coverage

The Phase 3 accessibility plan requires ordinary text 4.5:1, large text 3:1, essential controls/focus 3:1, usable 320 CSS-px ordinary content and a 44px touch-target aim. Phase 4 acceptance and original PRES contracts remain binding. WCAG 2.2 AA obligations are not weakened: the 2.5.8 minimum/spacing exceptions and project 44px aim are distinct.

Installed axe-core 4.13.0 metadata maps the inherited rules to 1.4.3/4.1.2/1.3.1. Earlier fixture tags principally select WCAG 2.0/2.1 A/AA. target-size is disabled by default; a zero earlier result does not qualify 2.2 target size. Fresh supplemental audit runs all enabled rules plus explicit target-size. The installed builder options override previous tag selection; best-practice results remain identified by per-rule tags. Supplemental scan totals are recorded separately from the inherited 267. No rules are disabled and no failed control is hidden to improve results. Local standards and installed metadata were inspected; external websites were not queried.

Human/device availability boundary

The read-only local probe found Narrator installed, no active screen-reader process and no detected physical test device; that is availability information, not testing. The owner subsequently reported a screen-reader operator available. An operator packet was issued; actual observed spoken results remain NOT VERIFIED until supplied. Installed software and operator availability cannot substitute for a completed workflow record. Physical touch, software keyboard, mobile screen reader, other browser/device combinations and production fonts remain open.

Fresh final run

Different rule sets are not directly comparable. Ordinary full-run retained cases and supplemental all-enabled audit remain separately counted. No duplicate focused runs are added. See raw-derived final inventory.

Final full-run total 312 scans /47 violation-node occurrences /2,412 incomplete-node occurrences comprises 267 retained scans /0violations /2,038 incompletes and 45 new scans /47violation nodes /374incompletes. These are occurrences, not unique defects or universal WCAG failures. Retained contrast incompletes changed1,769→1,766 (three fewer sampled occurrences); scan/test counts are unchanged and no manual disposition is closed by that variation. The separately added mobile/PDF diagnostic does not run axe and is not an extra scan.

Scope / rule Violation node occurrences Incomplete node occurrences Required disposition
retained / aria-hidden-focus 0 41 Native modal entry/return plus actual SR; A11Y-02 is already confirmed
retained / aria-prohibited-attr 0 209 Generic span/div state meaning and supported roles; human speech
retained / aria-valid-attr-value 0 18 Settled generated ID references and actual spoken dialog name
retained / color-contrast 0 1766 Human rendered-pair review; avatar exception/context; overlap/occlusion not a pass
retained / th-has-data-cells 0 4 Populated/empty table header relationships and row actions
new / aria-allowed-role 9 0 Upload labels; native picker keyboard P1 is confirmed independently
new / aria-command-name 4 0 Clipped drawer names need settled AX/actual speech; not four proven absent labels
new / aria-hidden-focus 0 7 Native modal entry/return plus actual SR; A11Y-02 is already confirmed
new / aria-prohibited-attr 0 26 Generic span/div state meaning and supported roles; human speech
new / aria-valid-attr-value 0 2 Settled generated ID references and actual spoken dialog name
new / color-contrast 2 338 Human rendered-pair review; avatar exception/context; overlap/occlusion not a pass
new / heading-order 13 0 Project heading navigation and human SR; best-practice rule alone not AA failure
new / landmark-one-main 1 0 Sign-in landmark structure and human reading order
new / landmark-unique 5 0 Cross-document CV iframe context and human navigation; renderer geometry preserved
new / page-has-heading-one 1 0 Sign-in page identity and human heading navigation
new / region 10 0 Sign-in content/landmark navigation
new / target-size 2 1 Actual hit areas/spacing/exceptions; A11Y-04 status links require repair/disposition

The raw JSON retains tags/impact, scan occurrences and representative failure messages. Third-party MUI/axe limitations and repeated transient/clipped nodes are triaged contextually; none is an exemption from product acceptance. Whole-application WCAG conformance is not claimed.