Repository navigation
a11y(downloads): native progressbar semantics + status announcements (#2342) - #2362
Conversation
|
Internal review: LGTM (advisory — human approval required) Authored by Mattingly; reviewed by Lovell.
|
|
Rebased onto merged base a8718a7. Conflicts resolved in ests/a11y.spec.ts (branch's new tests renumbered to A59–A62) and ACCESSIBILITY.md (union merge). Final suite: 65 passed / 7 skipped / 0 failed. — Mattingly |
580c689 to
c55b766
Compare
|
Rebase round 2 — rebased onto \kpoin/ui-testing\ @ e0d1c92 (#2360 backend merged) Conflicts resolved in \ ests/a11y.spec.ts\ and \ACCESSIBILITY.md\ by keeping both sides (base's A35–A45 presets + A51–A58 backend AND this branch's A59–A62 download tests). No renumbering needed — ranges already disjoint. Final suite: 73 passed / 7 skipped / 0 failed — Mattingly |
…announcements Closes #2342 - DownloadManager.tsx: replace bare aria-label="NN%" div with proper role="progressbar" + aria-valuenow / aria-valuemin=0 / aria-valuemax=100. aria-label now includes the model name e.g. "Downloading Llama-3.1-8B: 42%". Visual percent span gets aria-hidden="true" to prevent double-reading. - Added always-present sr-only role="status" aria-live="polite" aria-atomic="true" live region inside the panel. Announces status transitions (start / complete / error / cancelled / paused / resumed) -- never fires on every percentage tick. Clears when the panel closes to prevent stale announcements on reopen. - Tests A35-A38 added (4 new): role=progressbar present, valuenow/min/max correct, model name in label, sr-only live region exists. - ACCESSIBILITY.md updated: #2342 entry, test count 34->38 in table. Test result: 54 passed, 7 skipped, 0 failed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
c55b766 to
4ed6f6c
Compare
|
Rebase round 3 complete — rebased onto \kpoin/ui-testing\ @ 7eb0c6c (post #2359 models merge). Conflicts resolved by keeping both sides:
Full suite result: 78 passed / 7 skipped / 0 failed. Branch force-pushed to \origin/feat/gui3-download-a11y. — Mattingly |
…announcements (#2362) Closes #2342 - DownloadManager.tsx: replace bare aria-label="NN%" div with proper role="progressbar" + aria-valuenow / aria-valuemin=0 / aria-valuemax=100. aria-label now includes the model name e.g. "Downloading Llama-3.1-8B: 42%". Visual percent span gets aria-hidden="true" to prevent double-reading. - Added always-present sr-only role="status" aria-live="polite" aria-atomic="true" live region inside the panel. Announces status transitions (start / complete / error / cancelled / paused / resumed) -- never fires on every percentage tick. Clears when the panel closes to prevent stale announcements on reopen. - Tests A35-A38 added (4 new): role=progressbar present, valuenow/min/max correct, model name in label, sr-only live region exists. - ACCESSIBILITY.md updated: #2342 entry, test count 34->38 in table. Test result: 54 passed, 7 skipped, 0 failed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Summary
Fixes download progress in DownloadManager.tsx which was visual-only — only an �ria-label="NN%" on a plain
What changed
prototype/ui-redesign/src/components/DownloadManager.tsx (~line 283 / ~line 252):
Progress bar — replaced the bare
ole="progressbar" element carrying �ria-valuenow, �ria-valuemin={0}, �ria-valuemax={100}, and an �ria-label that includes the model name (e.g. "Downloading Llama-3.1-8B: 42%"). The visual percentage text gets �ria-hidden="true" to prevent double-reading.
Status live region — added an always-present
ole="status" aria-live="polite" aria-atomic="true" sr-only live region inside the panel. It announces status transitions only (start / complete / error / cancelled / paused / resumed) — never on every percentage tick. Clears when the panel closes to prevent stale announcements on reopen.
prototype/ui-redesign/tests/a11y.spec.ts — 4 new tests (A35–A38):
ole="progressbar" is present on the active download row
prototype/ui-redesign/ACCESSIBILITY.md — updated #2342 entry, test count table 34→38.
Note on prior work
fl0rianr's earlier �ria-label="NN%" was a good first step and showed the right intent. This PR extends it to the full ARIA progressbar pattern required by WCAG 4.1.2 and expected by NVDA/JAWS/VoiceOver.
Test result
54 passed, 7 skipped, 0 failed(baseline was 50 passed / 7 skipped; +4 new a11y tests)
Closes #2342