Accessibility
The target is WCAG 2.2 Level AA on every page, in every theme, at every width, with a mouse, a keyboard, a screen reader, or a touchscreen.
What is checked on every change
- axe-core runs over every page in four viewing modes: light, dark, Windows High Contrast (forced colors), and reduced motion at a phone width. Zero violations is the pass condition.
- Color contrast is computed from the design tokens themselves, 4.5:1 for text and 3:1 for controls and chart series, in both themes.
- Reflow at 320, 375, 414, 768, 1024, 1280 and 1920 CSS pixels with no horizontal scrolling, which covers 400% zoom on a desktop screen.
- Pointer targets at least 24 by 24 CSS pixels, and 44 for the primary controls at phone widths.
- Focus visible on every interactive element and never hidden under the sticky header; text spacing per WCAG 1.4.12 causes no clipping.
- Structure: one h1 per page, landmarks, a skip link, a tagged PDF, data tables behind every chart, and no client JavaScript required to read anything.
Last automated pass: 2026-09-02. The commands are npm run test:a11y and npm run test:responsive, and they run on every pull request.
What has not been done yet
A person has not yet gone through the site with a screen reader. Automated checks prove the absence of known defects; they do not prove the site is pleasant to use with VoiceOver or NVDA. The open questions are listed in the accessibility checklist, and this page will say when that pass has happened.
Known limits
- The answer board replays recorded timings as an animation. With reduced motion switched on it shows the finished state instead, and every fact the animation conveys is also text.
- Charts are SVG with a data table under each one; the table is the accessible version.
Report a problem
Open an issue at github.com/en-dash-consulting/hotdogbenchmark/issues with the page, what you used (browser, assistive technology), and what happened. Accessibility bugs are treated as bugs, not requests.
See also how it is measured and about.