Skip to content

Accessibility / content QA: media sweep + html-proofer gate (V2.0) #110

Description

@jonfroehlich

Accessibility / content QA (V2.0)

Umbrella for the V2.0 a11y + content-QA work. Two PRs:

PR #112 (merged) — media a11y content sweep

Fixed 103 source-level a11y issues across 16 pages (iframe title=, video aria-label, image alt), written to describe the actual media.

PR #113 — off-the-shelf content-QA gate + baseline triage

  • Adopt html-proofer (link-check job) for broken links/anchors/missing-alt/HTML — industry-standard, no new toolchain (Ruby). External checks disabled (deferrable to a separate non-blocking job).
  • Keep a slimmed check_a11y (media-a11y job) for the source conventions html-proofer can't see (empty alt="", iframe/video labels) — the a11y analogue of check_seo_frontmatter.
  • Fix everything the gate surfaced: broken media, a site-wide protocol-relative aux link, and 13 broken internal links/anchors.
  • Document both gates + local-run/libcurl/WSL2 notes in website-dev.md.

Decision

Use industry-standard tooling for commodity problems (links/HTML → html-proofer); reserve small bespoke checks (check_a11y, check_seo_frontmatter) only for conventions with no off-the-shelf equivalent. Chose html-proofer over pa11y/axe to avoid a Node + Chromium toolchain; deep WCAG (contrast/ARIA) via axe/pa11y remains an optional later layer.

Tracked debt (gate ignores, each annotated in content-lint.yml)

Out of scope

Closed by #113 (residual content debt tracked in #114/#115).

Metadata

Metadata

Assignees

No one assigned

    Labels

    accessibilityAccessibility (a11y): alt text, ARIA, contrast, keyboard/screen-reader supportcontentLesson content: errata, corrections, new sections, pedagogyv2.0Targeted for the Version 2.0 release

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions