Recursive AI

ACT rule coverage

All onehtml docs

Generated by ActCoverageTests; do not edit by hand. To refresh it after a rule or an expectation changes, run the Validation tests with ONEHTML_UPDATE_DOCS=1. The rule list and its status come from Catalogue/Data/act-rules.json (see catalogue.md); the cases are the W3C test cases vendored under testdata/act/.

Columns: Our rules are the rules of this package that take the ACT rule as a source (or that the ACT harness runs for it). The case columns count the vendored cases of the rule: pass the rule gave the expected outcome, review the rule asks a person (needs-review) where ACT expects passed or failed, which is the honest answer for a judgement rule, n/a cases a static check cannot judge (each is listed with its reason in the testdata/act/*-expectations.tsv files), and fail cases where the rule disagrees with ACT. Fail is 0 everywhere; ACT wins disagreements.

  • Approved: 37 rules, 37 implemented.
  • Proposed: 50 rules, 36 implemented, 14 not automatable or not implemented (reason in the table).
  • Deprecated: 7 rules, 4 implemented, 3 not automatable or not implemented (reason in the table).
ACT idNameStatusOur rulesCasespassreviewn/afail
09o5cgText has enhanced contrastapprovedcolor-contrast-enhanced2925040
0ssw9kScrollable content can be reached with sequential focus navigationapprovedscrollable-region-focusable106040
0va7u6HTML images contain no textapprovedimage-of-text1421200
23a2a8Image has non-empty accessible nameapprovedimage-alt, role-img-alt, svg-img-alt1818000
24afc2Important letter spacing in style attributes is wide enoughapprovedavoid-inline-spacing1616000
2779a5HTML page has non-empty titleapproveddocument-title1110010
2t702hSummary element has non-empty accessible nameapprovedsummary-name0
307n5zElement with presentational children has no focusable contentapprovednested-interactive77000
46ca7fElement marked as decorative is not exposedapprovedpresentation-role-conflict1010000
4e8ab6Element with role attribute has required states and propertiesapprovedaria-required-attr88000
59796fImage button has non-empty accessible nameapprovedinput-image-alt1212000
5f99a7ARIA attribute is defined in WAI-ARIAapprovedaria-valid-attr77000
674b10Role attribute has valid valueapprovedaria-roles1010000
6a7281ARIA state or property has valid valueapprovedaria-valid-attr-value2424000
6cfa84Element with aria-hidden has no content in sequential focus navigationapprovedaria-hidden-focus1413010
73f2c2Autocomplete attribute has valid valueapprovedautocomplete-valid2020000
78fd32Important line height in style attributes is wide enoughapprovedavoid-inline-spacing2114070
7d6734SVG element with explicit role has non-empty accessible nameapprovedsvg-img-alt1010000
8fc3b6Object element rendering non-text content has non-empty accessible nameapprovedobject-alt1414000
97a4e1Button has non-empty accessible nameapprovedaria-command-name, button-name, input-button-name1717000
9e45ecImportant word spacing in style attributes is wide enoughapprovedavoid-inline-spacing1616000
a25f45Headers attribute specified on a cell refers to cells in the same table elementapprovedtd-headers-attr1716010
afw4f7Text has minimum contrastapprovedcolor-contrast2824040
akn7bnIframe with interactive elements is not excluded from tab-orderapprovedframe-focusable-content65010
b33effOrientation of the page is not restricted using CSS transformsapprovedcss-orientation-lock1010000
b4f0c3Meta viewport allows for zoomapprovedmeta-viewport1111000
b5c3f8HTML page has lang attributeapprovedhtml-has-lang75020
bc659aMeta element has no refresh delayapprovedmeta-refresh1515000
bf051aHTML page lang attribute has valid language tagapprovedhtml-lang-valid77000
bisz58Meta element has no refresh delay (no exception)approvedmeta-refresh-no-exceptions1414000
c487aeLink has non-empty accessible nameapprovedarea-alt, aria-command-name, link-name2828000
c4a8a4HTML page title is descriptiveapproveddocument-title-descriptive61500
de46e4Element with lang attribute has valid language tagapprovedvalid-lang1919000
e086e5Form field has non-empty accessible nameapprovedaria-input-field-name, aria-toggle-field-name, label, select-name1717000
m6b1q3Menuitem has non-empty accessible nameapprovedaria-command-name88000
oj04fdElement in sequential focus order has visible focusapprovedfocus-visible-indicator98010
qt1vmoImage accessible name is descriptiveapprovedimage-name-descriptive1610600
047fe0Document has heading for non-repeated contentproposednot automatable — its verdict depends on which content repeats across the pages of a site; one page cannot say (bypass answers the page-level question of cf77f2)14
1a02b0Audio and visuals of video element have transcriptproposedvideo-transcript51400
1ea59cVideo element visual content has audio descriptionproposedvideo-audio-description71600
1ec09bVideo element visual content has strict accessible alternativeproposedvideo-strict-alternative71600
2eb176Audio element content has transcriptproposedaudio-caption1111000
2ee8b8Visible label is part of accessible nameproposedlabel-content-name-mismatch1312010
36b590Error message describes invalid form field valueproposednot automatable — the error indicators of a form field (wording, icons, colour, position) are presentation with no markup that names them, so no element set can be offered for review9
3e12e1Block of repeated content is collapsibleproposednot automatable — its verdict depends on which content repeats across pages and on what a script does to collapse it8
4b1c6cIframe elements with identical accessible names have equivalent purposeproposedframe-title-unique2312920
4c31dfAudio or video element that plays automatically has a control mechanismproposedautoplay-audio-control114700
59br37Zoomed text node is not clipped with CSS overflowproposednot automatable — it needs the text laid out at 200% zoom to see whether an overflow clips it; there is no layout without a browser14
5c01eaARIA state or property is permittedproposedaria-allowed-attr, aria-conditional-attr, aria-prohibited-attr1515000
5effbbLink in context is descriptiveproposedlink-in-context-descriptive1831500
7677a9Device motion based changes to the content can also be created from the user interfaceproposednot automatable — it depends on what a script does with device-motion events; scripts are inert text here6
80af7bFocusable element has no keyboard trapproposednot automatable — it depends on running focus and key handlers; a keyboard trap is made by script16
80f0bfAudio or video element avoids automatically playing audioproposedno-autoplay-audio83500
9bd38cContent has alternative for visual referenceproposednot automatable — it asks whether instructions rely only on shape, size, position or colour; that is a judgement about the wording of the content, with no element to point at21
a1b64eFocusable element has no keyboard trap via standard navigationproposednot automatable — it depends on running focus and key handlers; a keyboard trap is made by script10
aaa1bfAudio or video element that plays automatically has no audio that lasts more than 3 secondsproposedautoplay-audio-duration72500
ab4d13Video element content is media alternative for textproposedvideo-media-alternative71600
afb423Audio element content is media alternative for textproposedaudio-caption71600
aizyf1Link is descriptiveproposedlink-descriptive123900
b20e66Links with identical accessible names have equivalent purposeproposedidentical-links-same-purpose2161410
b40fd1Document has a landmark with non-repeated contentproposednot automatable — its verdict depends on which content repeats across the pages of a site; one page cannot say8
b49b2eHeading is descriptiveproposedheading-descriptive1741300
bc4a75ARIA required owned elementsproposedaria-required-children1919000
c249d5Device motion based changes to the content can be disabledproposednot automatable — it depends on what a script does with device-motion events; scripts are inert text here5
c3232fVideo element visual-only content has accessible alternativeproposedvideo-only-alternative91800
c5a4eaVideo element visual content has accessible alternativeproposedvideo-visual-alternative91800
cae760Iframe element has non-empty accessible nameproposedframe-title1010000
cc0f0aForm field label is descriptiveproposedlabel-descriptive1421110
cf77f2Bypass Blocks of Repeated Contentproposedbypass149050
d0f69eTable header cell has assigned cellsproposedth-has-data-cells1616000
d7ba54Video element visual-only content has audio track alternativeproposedvideo-only-audio-track51400
e7aa44Audio element content has text alternativeproposedaudio-alternative82600
e88epeImage not in the accessibility tree is decorativeproposedimage-decorative2071030
eac66bVideo element auditory content has accessible alternativeproposedvideo-caption61500
ebe86aFocusable element has no keyboard trap via non-standard navigationproposednot automatable — it depends on running focus and key handlers; a keyboard trap is made by script7
ee13b5Video element visual-only content has transcriptproposedvideo-only-transcript81700
efbfc7Text content that changes automatically can be paused, stopped or hiddenproposednot automatable — it depends on timing, scripts and animation to know that text changes by itself11
f51b46Video element auditory content has captionsproposedvideo-captions81700
fd26cfVideo element visual-only content is media alternative for textproposedvideo-only-media-alternative71600
fd3a94Links with identical accessible names and same context serve equivalent purposeproposedidentical-links-same-context1981100
ff89c9ARIA required context roleproposedaria-required-parent1513020
ffbc54No keyboard shortcut uses only printable charactersproposednot automatable — it depends on the key handlers a script installs10
ffd0e9Heading has non-empty accessible nameproposedempty-heading1514010
kb1m8sARIA global properties not used where prohibitedproposedaria-prohibited-attr0
off6ekHTML element language subtag matches languageproposedelement-lang-matches-content1412020
ucwvc8HTML page language subtag matches default languageproposedhtml-lang-matches-content1514010
ye5d6eDocument has an instrument to move focus to non-repeated contentproposednot automatable — its verdict depends on which content repeats across the pages of a site; one page cannot say12
3ea0c8Id attribute value is uniquedeprecatedduplicate-id, duplicate-id-active, duplicate-id-aria1010000
5b7ae0HTML page lang and xml:lang attributes have matching valuesdeprecatedhtml-xml-lang-mismatch1211010
9eb3f6Image filename is accessible name for imagedeprecatednot implemented — deprecated by the ACT task force; a file name is not an accessible name15
ac7dc6Video element visual-only content has description trackdeprecatedvideo-only-description-track51400
e6952fAttribute is not duplicateddeprecatednot implemented — duplicate attributes are dropped by the parser; only a document parsed with errors recorded could report them10
f196ceVideo element visual content has description trackdeprecatedvideo-description-track51400
in6db8ARIA required ID references existdeprecatednot implemented — deprecated by the ACT task force; the check lives on in aria-valid-attr-value (6a7281)0