Skip to main content

Check Performance Data - Accessibility audit — effort estimate

Sub-tickets of epic #384 Accessibility Issues from Audit, raised from the Zoonou audit recorded on #373.

# Title Size What it needs
374 Page regions not identified with ARIA landmarks S The home link and feedback link sit outside any landmark. Wrap the header/phase-banner block in _Layout.cshtml; repeat in the three admin/share layouts. Fixes every page at once.
375 Missing Heading 1 M 8 multi-question pages in Remove_KS4June.json have no title, so Page.cshtml renders no <h1>. Code fix is one line; the work is writing 8 titles that content sign off. Add a test asserting every flow page yields an H1.
376 Semantic markup not used for headings M Guidance page text looks like headings but is not marked up as such. CMS content work, not code — a Heading widget already exists. Can run in parallel with the dev tickets.
377 "Skip to main content" lands on the breadcrumb M The breadcrumb is inside the main wrapper (Views/Page/Content.cshtml:38). Needs a new layout section so it renders before <main>. Small change, but retest every CMS page.
378 Multiple instances of identical link text S Add a govuk-visually-hidden pupil name to the View/Delete links in Views/AmendmentRequests/Index.cshtml. Same pattern the row checkbox already uses. Do with #385.
379 Buttons contain the same accessible name S Several "Continue" buttons on the landing page. Add the window title as hidden text inside each link (Views/LandingPage/Index.cshtml:66).
380 Dragon cannot reach the file upload S Raised for reference. A known Dragon bug against GOV.UK Frontend, not our code. The suggested role="link" workaround departs from the GDS pattern. Recommend won't-fix, or half a day for a spike.
381 Confusing announcements (umbrella) — Now split into #385–#389. Close once the split is agreed.
382 Related links not grouped in a <nav> S The side nav already uses <nav aria-label="Page contents">; the offenders are the Guidance card/rich-text link groups. Either a small Card widget change or a content re-author.
383 Radios not announced by TalkBack M _Radio.cshtml has no data-module="govuk-radios" and no aria-describedby on the fieldset. Central fix across _Radio, _Checkbox, _Date. Most of the cost is confirming on a real Android device.
385 "View"/"Delete" links announced identically S Same links and same fix as #378, reported under 4.1.2 instead of 2.4.4. Fix both in one change.
386 Separators announced by VoiceOver S Likely the visible govuk-section-break--visible rules in _FileUpload.cshtml and the landing page. Confirm on device, then hide the decorative ones from assistive tech.
387 List items announced as "em dash" M Find which list items hold a literal em dash. Spans views and CMS rich-text content, so the search is wider than it looks.
388 "Disclosure triangle" on expandable sections S TalkBack's own name for the native <details> element, not text we supply. Likely no action — confirm with the auditor before touching the markup, since ARIA would be worse here.
389 Redundant hidden instructions on Provide Evidence S The file input's aria-describedby names the visible hint, which is the standard GOV.UK pattern. Confirm which text is actually duplicated before removing anything; the id list and markup must change together.

Totals: 10 S, 4 M

Done

Fixed in code, with AccessibilityAuditViewTests pinning each one and the invariants written up in accessibility.md:

# What changed
374 <header role="banner"> around the masthead in _Layout, _AdminLayout and _ShareLayout.
375 Titles added to the eight untitled multi-question pages in Remove_KS4June.json. QuestionFlowValidatorAlignmentTests now pins both halves of the heading rule — the pre-existing test covered single-question pages only, which is why this half went unguarded.
377 The CMS breadcrumb moved into an @section Breadcrumbs that renders before <main>. Three CSS rules that keyed off its old position were rewritten; the guidance page and a template-H1 page were compared before and after, pixel for pixel.
378 + 385 Hidden request {reference} for {pupil} on every Edit / View / Delete link.
379 Hidden to {window title} on each landing-page Continue.
383 aria-describedby on the radios fieldset for its hint and error, per-option hints wired on both _Radio and _Checkbox, and data-module="govuk-radios". Still needs confirming on a real Android device before the ticket closes.
386 aria-hidden="true" on the decorative visible <hr> rules. The footer's own section break is left alone.

Still open

  • 376, 382, 387 — need content decisions, not just code: Guidance headings and link groups to re-author, and a hunt for literal em dashes that spans the CMS as well as the views.
  • 380, 388 — both likely close with no code. Confirm with Zoonou.
  • 389 — confirm with the auditor which text is actually duplicated before removing anything.

Sequencing the work

  • #374, #377 and #383 are single-point fixes in shared layouts or shared partials. One PR fixes them across every page.
  • #378 + #385 are the same fix, and #379 is that fix applied elsewhere. One PR.
  • #376 and part of #382 are content work, not code.

Two tickets may close with no code: #380 (Dragon) and #388 (disclosure triangle). Confirm with Zoonou.