Recursive AI

Coverage matrix

All onehtml docs

Generated by CoverageMatrix.ToMarkdown(); do not edit by hand. To refresh it after the data changes, run the Validation tests with ONEHTML_UPDATE_DOCS=1. The sources and their pins are in docs/catalogue.md.

How to read it: In WCAG gives the first version with the criterion (2.0+ means that version and every later one). ACT rules are the W3C ACT rules that list the criterion as a requirement (any status; deprecated ones are marked). axe-core rules are the rules whose wcagNNN tag names the criterion in axe-core 4.14.0. Implemented lists the rules this package implements. Automation says how far a machine can decide the criterion: fully when every failure condition can be decided mechanically, partly when some can and the rest need a person, not when it needs human judgement or running behaviour a static check cannot see. Basis gives the reason. The assessments are data in Catalogue/Data/automation.json.

Criteria with at least one rule: 42 of 87.

WCAG versionAAAAAATotal
2.025132361
2.130202878
2.231243186

Profile summaries (criteria in the profile; the automation columns split them by assessment; Implemented counts criteria that have at least one rule in this package; Gaps counts criteria assessed fully or partly automatable that have none):

ProfileCriteriaImplementedImplemented, fullyImplemented, partlyImplemented, notNot automatableGaps (fully or partly, no rule)Some ACT or axe-core rule, none ours
wcag-2.0-aa382412211233
wcag-2.1-aa502812611856
wcag-2.2-aa552802712176
all8736133241126
CriterionNameLevelIn WCAGACT rulesaxe-core rulesImplementedAutomationBasis
1.1.1Non-text ContentA2.0+23a2a8, 46ca7f, 59796f, 7d6734, 8fc3b6, 9eb3f6 (deprecated), c487ae, e88epe, qt1vmoaria-meter-name, aria-progressbar-name, image-alt, input-image-alt, object-alt, role-img-alt, svg-img-altaria-meter-name, aria-progressbar-name, image-alt, image-decorative, image-name-descriptive, input-image-alt, object-alt, role-img-alt, svg-img-altpartlyWhether an image, input, object or SVG has a text alternative or name is mechanical; whether the text serves the same purpose is judgement.
1.2.1Audio-only and Video-only (Prerecorded)A2.0+1a02b0, c3232f, e7aa44, ee13b5, f51b46audio-caption (deprecated)audio-alternative, audio-caption, video-captions, video-only-alternative, video-only-audio-track, video-only-description-track, video-only-media-alternative, video-only-transcript, video-transcriptpartlyWhether an alternative or track exists is mechanical; whether it is equivalent is judgement.
1.2.2Captions (Prerecorded)A2.0+eac66bvideo-captionvideo-caption, video-captionspartlyWhether a captions track exists is mechanical; whether it is accurate and synchronised is judgement.
1.2.3Audio Description or Media Alternative (Prerecorded)A2.0+c5a4eavideo-media-alternative, video-visual-alternativepartlyWhether a description track or media alternative exists is mechanical; whether it conveys the visual content is judgement.
1.2.4Captions (Live)AA2.0+notLive captions can only be judged by watching a live event.
1.2.5Audio Description (Prerecorded)AA2.0+1ec09b, c5a4eavideo-audio-description, video-description-track, video-strict-alternative, video-visual-alternativepartlyWhether a description track or alternative exists is mechanical; its adequacy is judgement.
1.2.6Sign Language (Prerecorded)AAA2.0+notA sign-language video cannot be recognised mechanically.
1.2.7Extended Audio Description (Prerecorded)AAA2.0+notWhether extended description is needed and sufficient is judgement.
1.2.8Media Alternative (Prerecorded)AAA2.0+1a02b0, c5a4eavideo-transcript, video-visual-alternativepartlyWhether a transcript or alternative is linked is mechanical; its completeness is judgement.
1.2.9Audio-only (Live)AAA2.0+notLive audio can only be judged by listening to a live event.
1.3.1Info and RelationshipsA2.0+1a02b0, 4e8ab6, 5c01ea, 5f99a7, 674b10, 6a7281, a25f45, bc4a75, d0f69e, e086e5, ee13b5, ff89c9, in6db8 (deprecated), kb1m8saria-hidden-body, aria-required-children, aria-required-parent, definition-list, dlitem, list, listitem, p-as-heading, table-fake-caption, td-has-header, td-headers-attr, th-has-data-cellsaria-hidden-body, aria-required-children, aria-required-parent, definition-list, dlitem, list, listitem, p-as-heading, table-fake-caption, td-has-header, td-headers-attr, th-has-data-cells, video-only-transcript, video-transcriptpartlyMarkup that breaks structure (lists, tables, required ARIA parents and children, fake headings) is detectable; whether visual structure is also in the markup is judgement.
1.3.2Meaningful SequenceA2.0+notWhether the reading order is meaningful is judgement; a layout comparison only finds candidates.
1.3.3Sensory CharacteristicsA2.0+9bd38cnotInstructions that rely on shape, size or location are found by reading them.
1.3.4OrientationAA2.1+b33effcss-orientation-lockcss-orientation-lockpartlyCSS orientation locks are detectable; locks made by script are invisible to a static check.
1.3.5Identify Input PurposeAA2.1+73f2c2autocomplete-validautocomplete-validpartlyInvalid autocomplete tokens are detectable; whether a field's purpose matches its token is judgement.
1.3.6Identify PurposeAAA2.1+notWhether a component's purpose is programmatically identified needs judgement about purpose.
1.4.1Use of ColorA2.0+link-in-text-blocklink-in-text-blockpartlyLinks distinguished only by colour inside text are detectable; other uses of colour to convey meaning are judgement.
1.4.2Audio ControlA2.0+80f0bfno-autoplay-audioautoplay-audio-control, autoplay-audio-duration, no-autoplay-audiopartlyAutoplaying media markup is detectable; audio started by script is invisible.
1.4.3Contrast (Minimum)AA2.0+09o5cg, afw4f7color-contrastcolor-contrastpartlyContrast is exact where the foreground and a solid background are known; images, gradients and overlaps need rendered facts or review.
1.4.4Resize TextAA2.0+59br37, b4f0c3meta-viewportmeta-viewportpartlyMarkup that blocks zoom is detectable; whether content survives 200% zoom needs rendering.
1.4.5Images of TextAA2.0+0va7u6image-of-textnotRecognising text rendered as an image, and whether it is essential, is judgement.
1.4.6Contrast (Enhanced)AAA2.0+09o5cg, afw4f7color-contrast-enhancedcolor-contrast-enhancedpartlyAs 1.4.3, with the higher thresholds.
1.4.7Low or No Background AudioAAA2.0+notBackground audio levels need listening.
1.4.8Visual PresentationAAA2.0+partlyComputed line height, width, alignment and spacing are measurable; colour selection and the reading experience are judgement.
1.4.9Images of Text (No Exception)AAA2.0+0va7u6image-of-textnotAs 1.4.5, without the exceptions.
1.4.10ReflowAA2.1+b4f0c3partlyOverflow and clipping at 320 CSS pixels are measurable from a layout at that viewport; whether lost content matters is judgement.
1.4.11Non-text ContrastAA2.1+partlyContrast of boundaries and graphics is measurable where colours are known; which parts are needed to identify a component is judgement.
1.4.12Text SpacingAA2.1+24afc2, 78fd32, 9e45ecavoid-inline-spacingavoid-inline-spacingpartlyInline declarations that stop text spacing overrides are detectable; whether content survives the overrides needs rendering.
1.4.13Content on Hover or FocusAA2.1+notContent revealed on hover or focus is usually script-driven; whether it is dismissible, hoverable and persistent needs interaction.
2.1.1KeyboardA2.0+0ssw9k, akn7bnframe-focusable-content, scrollable-region-focusable, server-side-image-mapframe-focusable-content, scrollable-region-focusable, server-side-image-mappartlyScrollable regions and frames a keyboard cannot reach are detectable; handlers added by script are invisible.
2.1.2No Keyboard TrapA2.0+80af7bnotA keyboard trap shows only while tabbing through a running page.
2.1.3Keyboard (No Exception)AAA2.0+0ssw9k, akn7bnscrollable-region-focusablescrollable-region-focusablepartlyAs 2.1.1.
2.1.4Character Key ShortcutsA2.1+ffbc54notSingle-key shortcuts are installed by script.
2.2.1Timing AdjustableA2.0+bc659a, bisz58meta-refreshmeta-refreshpartlyMeta refresh time limits are detectable; timers in script are invisible.
2.2.2Pause, Stop, HideA2.0+efbfc7blink, marqueeblink, marqueepartlyBlinking and scrolling markup is detectable; other moving content needs judgement and timing.
2.2.3No TimingAAA2.0+notWhether time limits are essential is judgement.
2.2.4InterruptionsAAA2.0+bc659a, bisz58meta-refresh-no-exceptionsmeta-refresh-no-exceptionspartlyAutomatic page refresh is detectable; other interruptions come from script.
2.2.5Re-authenticatingAAA2.0+notSession expiry is server behaviour.
2.2.6TimeoutsAAA2.1+notWhether users are warned about data loss is judgement of content.
2.3.1Three Flashes or Below ThresholdA2.0+notFlash analysis needs the rendered frames of the content.
2.3.2Three FlashesAAA2.0+notFlash analysis needs the rendered frames of the content.
2.3.3Animation from InteractionsAAA2.1+notMotion triggered by interaction is script-driven.
2.4.1Bypass BlocksA2.0+cf77f2bypassbypasspartlySkip links and landmarks are detectable; whether they bypass the right blocks is judgement.
2.4.2Page TitledA2.0+2779a5, c4a8a4document-titledocument-title, document-title-descriptivepartlyA missing or empty title is detectable; whether it describes the page is judgement.
2.4.3Focus OrderA2.0+partlyPositive tabindex and focusable elements without a role are detectable; whether the order is meaningful is judgement.
2.4.4Link Purpose (In Context)A2.0+5effbb, c487ae, fd3a94area-alt, link-namearea-alt, identical-links-same-context, link-in-context-descriptive, link-namepartlyLinks without a name are detectable; whether the name and context state the purpose is judgement.
2.4.5Multiple WaysAA2.0+notWhether a site offers more than one way to find pages is a property of the whole site.
2.4.6Headings and LabelsAA2.0+b49b2e, cc0f0aheading-descriptive, label-descriptivepartlyEmpty headings and labels are detectable; whether they describe their content is judgement.
2.4.7Focus VisibleAA2.0+oj04fdfocus-visible-indicatorpartlyRules that remove the focus outline are detectable under a focus context; whether another indicator is visible needs rendering.
2.4.8LocationAAA2.0+notWhether a page tells the user where they are is judgement of the whole site.
2.4.9Link Purpose (Link Only)AAA2.0+5effbb, aizyf1, b20e66, c487ae, fd3a94identical-links-same-purposeidentical-links-same-context, identical-links-same-purpose, link-descriptive, link-in-context-descriptivepartlyIdentical link names with different targets are detectable; whether a name alone states the purpose is judgement.
2.4.10Section HeadingsAAA2.0+notWhether sections need headings is judgement.
2.4.11Focus Not Obscured (Minimum)AA2.2+partlyNeeds layout and paint order to know what covers the focused element; mechanical with rendered facts.
2.4.12Focus Not Obscured (Enhanced)AAA2.2+partlyAs 2.4.11, with the stricter condition.
2.4.13Focus AppearanceAAA2.2+partlyIndicator size and contrast are measurable with rendered facts; whether a custom indicator is distinguishable is judgement.
2.5.1Pointer GesturesA2.1+notMultipoint and path gestures are handled by script.
2.5.2Pointer CancellationA2.1+notPointer event handling is script behaviour.
2.5.3Label in NameA2.1+2ee8b8, e086e5label-content-name-mismatchlabel-content-name-mismatchpartlyComparing visible label text with the accessible name is mechanical for text labels; labels made of images are judgement.
2.5.4Motion ActuationA2.1+7677a9, c249d5notMotion actuation is script behaviour.
2.5.5Target Size (Enhanced)AAA2.1+partlyTarget size is measurable with rendered facts; the exceptions are judgement.
2.5.6Concurrent Input MechanismsAAA2.1+notInput mechanisms are script behaviour.
2.5.7Dragging MovementsAA2.2+notDragging interactions are script behaviour.
2.5.8Target Size (Minimum)AA2.2+target-sizetarget-sizepartlyTarget size and spacing are measurable; the exceptions (inline, equivalent control, essential) are judgement.
3.1.1Language of PageA2.0+5b7ae0 (deprecated), b5c3f8, bf051a, ucwvc8html-has-lang, html-lang-valid, html-xml-lang-mismatchhtml-has-lang, html-lang-matches-content, html-lang-valid, html-xml-lang-mismatchpartlyA missing or malformed lang is detectable; whether it is the right language needs language identification.
3.1.2Language of PartsAA2.0+de46e4, off6ekvalid-langelement-lang-matches-content, valid-langpartlyMalformed lang on parts is detectable; whether passages are in the declared language needs language identification.
3.1.3Unusual WordsAAA2.0+notUnusual words and their definitions are judgement.
3.1.4AbbreviationsAAA2.0+notAbbreviations and their expansions are judgement.
3.1.5Reading LevelAAA2.0+notReading level is judgement.
3.1.6PronunciationAAA2.0+notAmbiguous pronunciation is judgement.
3.2.1On FocusA2.0+notContext changes on focus come from script.
3.2.2On InputA2.0+partlyForms without a submit control are detectable; changes of context on input come from script.
3.2.3Consistent NavigationAA2.0+notConsistency is a property of several pages.
3.2.4Consistent IdentificationAA2.0+notConsistency is a property of several pages.
3.2.5Change on RequestAAA2.0+bc659a, bisz58meta-refresh-no-exceptionsmeta-refresh-no-exceptionspartlyAutomatic refresh is detectable; other changes of context come from script.
3.2.6Consistent HelpA2.2+notConsistency of help is a property of several pages.
3.3.1Error IdentificationA2.0+36b590partlyInvalid-state and error-message association markup is detectable; whether an error is identified in text depends on runtime validation.
3.3.2Labels or InstructionsA2.0+form-field-multiple-labelsform-field-multiple-labelspartlyControls without labels are detectable; whether labels and instructions are sufficient is judgement.
3.3.3Error SuggestionAA2.0+notError suggestions are runtime content.
3.3.4Error Prevention (Legal, Financial, Data)AA2.0+notWhether a page is legal or financial, and its safeguards, are judgement.
3.3.5HelpAAA2.0+notWhether help is available is judgement.
3.3.6Error Prevention (All)AAA2.0+notSubmission safeguards are runtime behaviour.
3.3.7Redundant EntryA2.2+notRedundant entry spans steps of a process.
3.3.8Accessible Authentication (Minimum)AA2.2+partlyMissing autocomplete on authentication fields is detectable; script blocking of paste is invisible and the alternatives are judgement.
3.3.9Accessible Authentication (Enhanced)AAA2.2+partlyAs 3.3.8.
4.1.1ParsingA2.0 (removed in 2.2)3ea0c8 (deprecated), e6952f (deprecated)duplicate-id (deprecated), duplicate-id-active (deprecated)duplicate-id, duplicate-id-activefullyDuplicate ids and malformed nesting are decided by the parser and the document; the criterion is obsolete from WCAG 2.2.
4.1.2Name, Role, ValueA2.0+2t702h, 307n5z, 4b1c6c, 4e8ab6, 59796f, 5c01ea, 5f99a7, 674b10, 6a7281, 6cfa84, 97a4e1, c487ae, cae760, e086e5, in6db8 (deprecated), m6b1q3area-alt, aria-allowed-attr, aria-braille-equivalent, aria-command-name, aria-conditional-attr, aria-deprecated-role, aria-hidden-body, aria-hidden-focus, aria-input-field-name, aria-prohibited-attr, aria-required-attr, aria-roledescription (deprecated), aria-roles, aria-tab-name, aria-toggle-field-name, aria-tooltip-name, aria-valid-attr, aria-valid-attr-value, button-name, duplicate-id-aria, frame-title, frame-title-unique, input-button-name, input-image-alt, label, link-name, nested-interactive, select-name, summary-namearea-alt, aria-allowed-attr, aria-braille-equivalent, aria-command-name, aria-conditional-attr, aria-deprecated-role, aria-hidden-body, aria-hidden-focus, aria-input-field-name, aria-prohibited-attr, aria-required-attr, aria-roles, aria-tab-name, aria-toggle-field-name, aria-tooltip-name, aria-valid-attr, aria-valid-attr-value, button-name, duplicate-id-aria, frame-title, frame-title-unique, input-button-name, input-image-alt, label, link-name, nested-interactive, select-name, summary-namepartlyRoles, names and states in markup and ARIA are decided mechanically; values changed by script are invisible.
4.1.3Status MessagesAA2.1+notStatus messages are announced at runtime; markup alone cannot show that a message appears.

Implemented best-practice rules, which check no criterion: accesskeys, aria-allowed-role, aria-dialog-name, aria-text, aria-treeitem-name, empty-heading, empty-table-header, focus-order-semantics, heading-order, hidden-content, image-redundant-alt, label-title-only, landmark-banner-is-top-level, landmark-complementary-is-top-level, landmark-contentinfo-is-top-level, landmark-main-is-top-level, landmark-no-duplicate-banner, landmark-no-duplicate-contentinfo, landmark-no-duplicate-main, landmark-one-main, landmark-unique, meta-viewport-large, page-has-heading-one, presentation-role-conflict, region, scope-attr-valid, skip-link, tabindex, table-duplicate-name.