Carnforth
A GPL-3.0 Chrome DevTools extension that tests pages for accessible-name conformance against WCAG 4.1.2. Runtime testing against the rendered DOM — the opposite end of the spectrum from Paradise’s source-level analysis. A working proof-of-concept, presented at a11yTO Accessibility Camp 2024, intended as a demonstration of an approach rather than a productionised tool.
What it does
Installs as a Chrome DevTools panel called Accessible Names. Run the test from the panel and the extension walks the rendered DOM checking every element that needs an accessible name — images, form controls, buttons, links, landmarks, ARIA widgets, iframes, audio and video — against the WCAG accessible-name computation algorithm. Results land in the panel as failures, warnings, and passes, with detail on each issue. Click any issue to highlight the element on the page; click Inspect in Elements panel to jump to it in the standard DevTools tree.
One WCAG criterion, in depth. The extension focuses on WCAG 4.1.2 Name, Role, Value and the accessible-name computation algorithm specifically. That focus is deliberate: 4.1.2 is the criterion most commonly under-implemented in real codebases, and the accessible-name algorithm is subtle enough that a tool dedicated to it adds value beyond the broader commercial scanners. Carnforth is a single-criterion deep test, not a sweep.
Where it sits in the tools lineage
The naming is not coincidence. The lineage runs from the original CISNA Model (W4A 2008, with Steve Green and Elaine Pearson) through the PhD-era Carnforth-Java implementation, into the runtime-testing branch that Carnforth inhabits:
- CISNA Model— theory. The five-layer model of accessible adaptive hypermedia. See /research/cisna-model.
- Carnforth-Java— the doctoral Java implementation of CISNA, with Action Language XML. See /playgrounds/action-language for the in-browser worked examples.
- Carnforth (this tool) — the runtime DOM-testing branch, 2024. Bob-owned, GPL-3.0.
- automated-testing— AI-driven accessibility testing experiments; Bob-owned, GPL-3.0. Five PoCs covering classes of issue commercial tools cannot reach.
- autoA11y— the much more complete CNIB rebrand and production continuation. CNIB-owned; mentioned on /work.
- Paradise— source-level multi-model static analysis in TypeScript; Bob-owned. The complementary branch to the runtime line above.
One name across twenty years. Three Bob-owned open-source tools across three different testing approaches.
Install
No Chrome Web Store listing. The extension is distributed as a checkout of the source repo, loaded via Chrome’s developer mode. The choice is deliberate — see the colophon for the rationale.
- Clone the repository:
git clone https://github.com/bobdodd/carnforth.git - Open Chrome and navigate to
chrome://extensions/ - Enable Developer mode via the toggle in the top-right corner.
- Click Load unpacked and select the
chrome_plugin/directory inside the cloned repository. - A new Accessible Names panel will appear in Chrome DevTools (F12).
Use
- Open Chrome DevTools (F12) on any page.
- Switch to the Accessible Names panel.
- Click Run Test to analyse the page.
- View results organised by failures, warnings, and all elements; click an issue to see detail and highlight the element on the page; use Inspect in Elements Panel to jump to it.
Relationship to the other tools
Three Bob-owned approaches to accessibility testing, each with its own scope and limits:
- Carnforth (this tool)— runtime, DOM-based, one criterion in depth. Browser-side; no network round-trips; written in plain JavaScript so the source is readable end-to-end.
- automated-testing— AI-driven, applied to specific classes of issue commercial tools cannot reach. Five PoCs with captured prompts, responses, and discussion.
- Paradise— source-level multi-model static analysis. The technically deepest of the three; parses HTML, JavaScript, and CSS into separate semantic models and reasons over the integrated structure.
All three connect to the longer research arc in /research and to the 2029 framework as the theoretical end of the line.
The a11yTO Accessibility Camp 2024 talk
Carnforth was the demonstration at a11yTO Accessibility Camp 2024. The talk framed the tool as a worked example of where the runtime accessible-name algorithm sits relative to source-level analysis and AI-driven testing — the same three-approach framing the tooling page now uses on the site.
Contribute
GPL-3.0; contributions welcome via pull request on github.com/bobdodd/carnforth. Issues against the accessible-name computation specifically are the highest-leverage place for external help; the test logic in chrome_plugin/js/ is where most of the substance lives.