Product design skills

references/rgaa-automation.md

A supporting file of the ultra11y skill.

RGAA 4.1.2 automation matrix

Every one of the 258 official tests is classified. static and rendered mean that an explicitly mapped decisive rule can prove a failure; judgment remains for adjudication. A candidate signal is evidence only and never changes the verdict by itself. Conformity by silence is allowed only where explicitly shown.

Summary by criterion

The 106 criterion rows below are the one-by-one routing review. “AI + signals” means deterministic evidence is forwarded without changing the verdict; “deterministic NC + AI residual” means a precise failure can be decided mechanically while every remaining condition still goes to adjudication.

CriterionTests (static / rendered / judgment)Rules (decisive / candidate / advisory)C by silenceReviewed routing
1.11 / 1 / 63 / 8 / 0nodeterministic NC + AI residual
1.20 / 0 / 60 / 3 / 0noAI + signals
1.30 / 0 / 90 / 0 / 0noAI
1.40 / 0 / 70 / 0 / 0noAI
1.50 / 0 / 20 / 0 / 0noAI
1.60 / 0 / 100 / 0 / 0noAI
1.70 / 0 / 60 / 0 / 0noAI
1.80 / 0 / 60 / 0 / 0noAI
1.90 / 0 / 50 / 0 / 0noAI
2.11 / 0 / 02 / 1 / 0nodeterministic NC + AI residual
2.20 / 0 / 10 / 0 / 0noAI
3.10 / 0 / 60 / 0 / 0noAI
3.20 / 0 / 50 / 5 / 0noAI + signals
3.30 / 0 / 40 / 1 / 0noAI + signals
4.10 / 0 / 30 / 0 / 0noAI
4.20 / 0 / 30 / 0 / 0noAI
4.30 / 0 / 20 / 3 / 0noAI + signals
4.40 / 0 / 10 / 0 / 0noAI
4.50 / 0 / 20 / 0 / 0noAI
4.60 / 0 / 20 / 0 / 0noAI
4.70 / 0 / 10 / 0 / 0noAI
4.80 / 0 / 20 / 0 / 0noAI
4.90 / 0 / 10 / 0 / 0noAI
4.100 / 0 / 10 / 2 / 0noAI + signals
4.110 / 0 / 30 / 0 / 0noAI
4.120 / 0 / 20 / 0 / 0noAI
4.130 / 0 / 20 / 0 / 0noAI
5.10 / 0 / 10 / 0 / 0noAI
5.20 / 0 / 10 / 0 / 0noAI
5.30 / 0 / 10 / 0 / 0noAI
5.40 / 0 / 10 / 1 / 0noAI + signals
5.50 / 0 / 10 / 0 / 0noAI
5.60 / 0 / 40 / 4 / 0noAI + signals
5.73 / 0 / 22 / 3 / 0nodeterministic NC + AI residual
5.81 / 0 / 01 / 1 / 0nodeterministic NC + AI residual
6.10 / 0 / 50 / 0 / 1noAI
6.21 / 0 / 02 / 1 / 0nodeterministic NC + AI residual
7.12 / 0 / 15 / 20 / 0nodeterministic NC + AI residual
7.20 / 0 / 20 / 0 / 0noAI
7.30 / 0 / 20 / 1 / 0noAI + signals
7.40 / 0 / 10 / 0 / 0noAI
7.50 / 0 / 30 / 3 / 0noAI + signals
8.10 / 1 / 21 / 0 / 0nodeterministic NC + AI residual
8.21 / 0 / 05 / 0 / 0nodeterministic NC + AI residual
8.31 / 0 / 01 / 2 / 0yesdeterministic
8.41 / 0 / 03 / 1 / 0nodeterministic NC + AI residual
8.51 / 0 / 02 / 0 / 0yesdeterministic
8.60 / 0 / 10 / 0 / 0noAI
8.70 / 0 / 10 / 1 / 0noAI + signals
8.80 / 0 / 10 / 2 / 0noAI + signals
8.90 / 0 / 10 / 0 / 0noAI
8.101 / 0 / 11 / 0 / 0nodeterministic NC + AI residual
9.10 / 0 / 30 / 7 / 0noAI + signals
9.20 / 0 / 10 / 3 / 0noAI + signals
9.33 / 0 / 05 / 0 / 0nodeterministic NC + AI residual
9.40 / 0 / 20 / 0 / 0noAI
10.13 / 0 / 03 / 0 / 0nodeterministic NC + AI residual
10.20 / 0 / 10 / 1 / 0noAI + signals
10.30 / 0 / 10 / 0 / 0noAI
10.40 / 0 / 20 / 5 / 0noAI + signals
10.50 / 0 / 30 / 0 / 0noAI
10.60 / 0 / 10 / 1 / 0noAI + signals
10.70 / 1 / 01 / 1 / 0nodeterministic NC + AI residual
10.80 / 0 / 10 / 1 / 0noAI + signals
10.90 / 0 / 40 / 0 / 0noAI
10.100 / 0 / 40 / 0 / 0noAI
10.110 / 0 / 20 / 2 / 0noAI + signals
10.121 / 0 / 03 / 2 / 0nodeterministic NC + AI residual
10.130 / 0 / 30 / 1 / 0noAI + signals
10.140 / 0 / 20 / 0 / 0noAI
11.11 / 0 / 23 / 8 / 0nodeterministic NC + AI residual
11.20 / 0 / 60 / 0 / 0noAI
11.30 / 0 / 20 / 0 / 0noAI
11.40 / 0 / 30 / 0 / 0noAI
11.51 / 0 / 01 / 1 / 0nodeterministic NC + AI residual
11.61 / 0 / 02 / 0 / 0nodeterministic NC + AI residual
11.70 / 0 / 10 / 0 / 0noAI
11.81 / 0 / 21 / 0 / 0nodeterministic NC + AI residual
11.92 / 0 / 02 / 2 / 0nodeterministic NC + AI residual
11.100 / 0 / 70 / 2 / 0noAI + signals
11.110 / 0 / 20 / 0 / 0noAI
11.120 / 0 / 20 / 0 / 0noAI
11.130 / 0 / 10 / 3 / 0noAI + signals
12.10 / 0 / 10 / 0 / 0noAI
12.20 / 0 / 10 / 0 / 0noAI
12.30 / 0 / 30 / 0 / 0noAI
12.40 / 0 / 30 / 0 / 0noAI
12.50 / 0 / 30 / 0 / 0noAI
12.60 / 0 / 10 / 5 / 0noAI + signals
12.70 / 0 / 20 / 3 / 0noAI + signals
12.80 / 0 / 20 / 2 / 0noAI + signals
12.90 / 0 / 10 / 1 / 0noAI + signals
12.100 / 0 / 10 / 0 / 0noAI
12.110 / 0 / 10 / 0 / 0noAI
13.10 / 0 / 40 / 1 / 0noAI + signals
13.20 / 0 / 10 / 0 / 0noAI
13.30 / 0 / 10 / 0 / 0noAI
13.40 / 0 / 10 / 0 / 0noAI
13.50 / 0 / 10 / 0 / 0noAI
13.60 / 0 / 10 / 0 / 0noAI
13.70 / 0 / 30 / 0 / 0noAI
13.80 / 0 / 20 / 3 / 0noAI + signals
13.90 / 0 / 10 / 1 / 0noAI + signals
13.100 / 0 / 20 / 0 / 0noAI
13.110 / 0 / 10 / 0 / 0noAI
13.120 / 0 / 30 / 0 / 0noAI

Test-by-test contract

TestOwnerDecisive rulesCandidate signals
1.1.1judgment—axe:image-alt, axe:role-img-alt, chart-no-accessible-name, img-alt-missing
1.1.2renderedaxe:area-alt—
1.1.3staticaxe:input-image-alt, input-image-alt-missing—
1.1.4judgment——
1.1.5judgment—axe:svg-img-alt, chart-no-accessible-name
1.1.6judgment—axe:object-alt, object-embed-no-name
1.1.7judgment—object-embed-no-name
1.1.8judgment—canvas-fallback-missing, chart-no-accessible-name
1.2.1judgment—axe:image-redundant-alt, decorative-alt-misuse, decorative-marked-exposed
1.2.2judgment—axe:image-redundant-alt, decorative-alt-misuse, decorative-marked-exposed
1.2.3judgment—axe:image-redundant-alt, decorative-alt-misuse, decorative-marked-exposed
1.2.4judgment—axe:image-redundant-alt, decorative-alt-misuse, decorative-marked-exposed
1.2.5judgment—axe:image-redundant-alt, decorative-alt-misuse, decorative-marked-exposed
1.2.6judgment—axe:image-redundant-alt, decorative-alt-misuse, decorative-marked-exposed
1.3.1judgment——
1.3.2judgment——
1.3.3judgment——
1.3.4judgment——
1.3.5judgment——
1.3.6judgment——
1.3.7judgment——
1.3.8judgment——
1.3.9judgment——
1.4.1judgment——
1.4.2judgment——
1.4.3judgment——
1.4.4judgment——
1.4.5judgment——
1.4.6judgment——
1.4.7judgment——
1.5.1judgment——
1.5.2judgment——
1.6.1judgment——
1.6.2judgment——
1.6.3judgment——
1.6.4judgment——
1.6.5judgment——
1.6.6judgment——
1.6.7judgment——
1.6.8judgment——
1.6.9judgment——
1.6.10judgment——
1.7.1judgment——
1.7.2judgment——
1.7.3judgment——
1.7.4judgment——
1.7.5judgment——
1.7.6judgment——
1.8.1judgment——
1.8.2judgment——
1.8.3judgment——
1.8.4judgment——
1.8.5judgment——
1.8.6judgment——
1.9.1judgment——
1.9.2judgment——
1.9.3judgment——
1.9.4judgment——
1.9.5judgment——
2.1.1staticaxe:frame-title, iframe-title-missingaxe:frame-title-unique
2.2.1judgment——
3.1.1judgment——
3.1.2judgment——
3.1.3judgment——
3.1.4judgment——
3.1.5judgment——
3.1.6judgment——
3.2.1judgment—axe:color-contrast, axe:color-contrast-enhanced, contrast-literal, rendered-contrast, rendered-contrast-pixel
3.2.2judgment—axe:color-contrast, axe:color-contrast-enhanced, contrast-literal, rendered-contrast, rendered-contrast-pixel
3.2.3judgment—axe:color-contrast, axe:color-contrast-enhanced, contrast-literal, rendered-contrast, rendered-contrast-pixel
3.2.4judgment—axe:color-contrast, axe:color-contrast-enhanced, contrast-literal, rendered-contrast, rendered-contrast-pixel
3.2.5judgment—axe:color-contrast, axe:color-contrast-enhanced, contrast-literal, rendered-contrast, rendered-contrast-pixel
3.3.1judgment—rendered-nontext-contrast
3.3.2judgment—rendered-nontext-contrast
3.3.3judgment—rendered-nontext-contrast
3.3.4judgment—rendered-nontext-contrast
4.1.1judgment——
4.1.2judgment——
4.1.3judgment——
4.2.1judgment——
4.2.2judgment——
4.2.3judgment——
4.3.1judgment—axe:audio-caption, axe:video-caption, media-no-track
4.3.2judgment——
4.4.1judgment——
4.5.1judgment——
4.5.2judgment——
4.6.1judgment——
4.6.2judgment——
4.7.1judgment——
4.8.1judgment——
4.8.2judgment——
4.9.1judgment——
4.10.1judgment—autoplay-media, axe:no-autoplay-audio
4.11.1judgment——
4.11.2judgment——
4.11.3judgment——
4.12.1judgment——
4.12.2judgment——
4.13.1judgment——
4.13.2judgment——
5.1.1judgment——
5.2.1judgment——
5.3.1judgment——
5.4.1judgment—table-caption-missing
5.5.1judgment——
5.6.1judgment—axe:td-has-header, axe:th-has-data-cells, data-table-no-headers, th-no-data-cells
5.6.2judgment—axe:td-has-header, axe:th-has-data-cells, data-table-no-headers, th-no-data-cells
5.6.3judgment—axe:th-has-data-cells, data-table-no-headers, th-no-data-cells
5.6.4judgment—th-no-data-cells
5.7.1judgment—data-table-no-headers
5.7.2statictable-scope-invalidaxe:scope-attr-valid, data-table-no-headers
5.7.3statictable-scope-invalidaxe:scope-attr-valid, data-table-no-headers
5.7.4staticheaders-attr-danglingaxe:td-headers-attr, data-table-no-headers
5.7.5judgment—data-table-no-headers
5.8.1staticlayout-table-data-markupaxe:table-fake-caption
6.1.1judgment——
6.1.2judgment——
6.1.3judgment——
6.1.4judgment——
6.1.5judgment——
6.2.1staticaxe:link-name, link-empty-nameicon-only-control-unnamed
7.1.1staticaxe:button-name, axe:input-button-name, button-empty-name, menuitem-empty-namearia-hidden-focusable, aria-ref-missing-id, aria-required-children, axe:aria-allowed-attr, axe:aria-allowed-role, axe:aria-hidden-focus, axe:aria-required-attr, axe:aria-required-children, axe:aria-required-parent, axe:aria-roles, axe:aria-valid-attr, axe:aria-valid-attr-value, axe:nested-interactive, axe:presentation-role-conflict, cross-prop-drilled-name-lost, disabled-context-content, invalid-aria-role, nested-interactive, presentational-children-focusable, redundant-aria
7.1.2judgment—aria-hidden-focusable, aria-ref-missing-id, aria-required-children, axe:aria-allowed-attr, axe:aria-allowed-role, axe:aria-hidden-focus, axe:aria-required-attr, axe:aria-required-children, axe:aria-required-parent, axe:aria-roles, axe:aria-valid-attr, axe:aria-valid-attr-value, axe:nested-interactive, axe:presentation-role-conflict, cross-prop-drilled-name-lost, disabled-context-content, invalid-aria-role, nested-interactive, presentational-children-focusable, redundant-aria
7.1.3staticlabel-in-name-mismatcharia-hidden-focusable, aria-ref-missing-id, aria-required-children, axe:aria-allowed-attr, axe:aria-allowed-role, axe:aria-hidden-focus, axe:aria-required-attr, axe:aria-required-children, axe:aria-required-parent, axe:aria-roles, axe:aria-valid-attr, axe:aria-valid-attr-value, axe:nested-interactive, axe:presentation-role-conflict, cross-prop-drilled-name-lost, disabled-context-content, invalid-aria-role, nested-interactive, redundant-aria
7.2.1judgment——
7.2.2judgment——
7.3.1judgment—clickable-noninteractive
7.3.2judgment——
7.4.1judgment——
7.5.1judgment—dyn-live-region, live-region-conflict, status-message-not-assertive
7.5.2judgment—dyn-live-region, live-region-conflict, status-message-not-assertive
7.5.3judgment—dyn-live-region, live-region-conflict, status-message-not-assertive
8.1.1renderedpack:rgaa:doctype-missing—
8.1.2judgment——
8.1.3judgment——
8.2.1staticaxe:duplicate-id, axe:duplicate-id-active, axe:duplicate-id-aria, duplicate-attribute, duplicate-id—
8.3.1staticdocument-language-missingaxe:html-has-lang, html-lang-missing
8.4.1staticaxe:html-lang-valid, html-lang-xml-lang-mismatch, lang-invalidaxe:html-xml-lang-mismatch
8.5.1staticaxe:document-title, title-missing-empty—
8.6.1judgment——
8.7.1judgment—inline-lang-change-missing
8.8.1judgment—axe:valid-lang, lang-invalid
8.9.1judgment——
8.10.1judgment——
8.10.2staticpack:rgaa:dir-value-invalid—
9.1.1judgment—axe:heading-order, axe:page-has-heading-one, h1-missing, h1-multiple, heading-order-skip
9.1.2judgment—axe:empty-heading, empty-heading
9.1.3judgment—axe:page-has-heading-one, h1-missing
9.2.1judgment—missing-main-landmark, multiple-main-landmark, nav-landmark-missing
9.3.1staticaxe:list, axe:listitem, list-structure—
9.3.2staticaxe:list, axe:listitem, list-structure—
9.3.3staticaxe:definition-list, axe:dlitem, list-structure—
9.4.1judgment——
9.4.2judgment——
10.1.1staticpresentational-element—
10.1.2staticpresentational-attribute—
10.1.3staticpresentational-spacing—
10.2.1judgment—css-generated-content-informative
10.3.1judgment——
10.4.1judgment—dyn-input-overflow-zoom, dyn-reflow-zoom
10.4.2judgment—axe:meta-viewport, axe:meta-viewport-large, meta-viewport-zoom-block
10.5.1judgment——
10.5.2judgment——
10.5.3judgment——
10.6.1judgment—rendered-link-colour-only
10.7.1rendereddyn-focus-visiblerendered-focus-not-visible
10.8.1judgment—disabled-context-content
10.9.1judgment——
10.9.2judgment——
10.9.3judgment——
10.9.4judgment——
10.10.1judgment——
10.10.2judgment——
10.10.3judgment——
10.10.4judgment——
10.11.1judgment—dyn-input-overflow-reflow, dyn-reflow
10.11.2judgment——
10.12.1staticletter-spacing-important, line-height-important, word-spacing-importantdyn-input-overflow-spacing, dyn-text-spacing
10.13.1judgment—dyn-hover
10.13.2judgment—dyn-hover
10.13.3judgment—dyn-hover
10.14.1judgment——
10.14.2judgment——
11.1.1staticaxe:label, axe:select-name, control-label-missingaxe:label-title-only, control-name-title-only, field-purpose-incomplete, placeholder-as-label, select-has-option
11.1.2judgment—axe:form-field-multiple-labels, form-field-multiple-labels, label-for-dangling
11.1.3judgment—axe:label-title-only, control-name-title-only, field-purpose-incomplete, placeholder-as-label
11.2.1judgment——
11.2.2judgment——
11.2.3judgment——
11.2.4judgment——
11.2.5judgment——
11.2.6judgment——
11.3.1judgment——
11.3.2judgment——
11.4.1judgment——
11.4.2judgment——
11.4.3judgment——
11.5.1staticradio-checkbox-group-ungroupeddate-fields-ungrouped
11.6.1staticaxe:fieldset, fieldset-legend-missing—
11.7.1judgment——
11.8.1judgment——
11.8.2staticpack:rgaa:optgroup-without-label—
11.8.3judgment——
11.9.1staticform-button-empty-namecross-icon-only-unnamed, icon-only-control-unnamed
11.9.2staticform-label-in-name-mismatch—
11.10.1judgment——
11.10.2judgment——
11.10.3judgment—aria-invalid-no-description, error-not-associated
11.10.4judgment—aria-invalid-no-description, error-not-associated
11.10.5judgment——
11.10.6judgment—aria-invalid-no-description, error-not-associated
11.10.7judgment—aria-invalid-no-description, error-not-associated
11.11.1judgment——
11.11.2judgment——
11.12.1judgment——
11.12.2judgment——
11.13.1judgment—autocomplete-token-invalid, axe:autocomplete-valid, field-purpose-incomplete
12.1.1judgment——
12.2.1judgment——
12.3.1judgment——
12.3.2judgment——
12.3.3judgment——
12.4.1judgment——
12.4.2judgment——
12.4.3judgment——
12.5.1judgment——
12.5.2judgment——
12.5.3judgment——
12.6.1judgment—axe:landmark-one-main, missing-main-landmark, multiple-main-landmark, nav-landmark-missing, nav-landmark-unnamed
12.7.1judgment—axe:bypass
12.7.2judgment—axe:skip-link, skip-link-target-missing
12.8.1judgment—axe:tabindex, positive-tabindex
12.8.2judgment——
12.9.1judgment—dyn-keyboard-trap
12.10.1judgment——
12.11.1judgment——
13.1.1judgment——
13.1.2judgment—meta-refresh-redirect
13.1.3judgment——
13.1.4judgment——
13.2.1judgment——
13.3.1judgment——
13.4.1judgment——
13.5.1judgment——
13.6.1judgment——
13.7.1judgment——
13.7.2judgment——
13.7.3judgment——
13.8.1judgment—axe:marquee, blink-marquee
13.8.2judgment—axe:blink, blink-marquee
13.9.1judgment—rendered-orientation-lock
13.10.1judgment——
13.10.2judgment——
13.11.1judgment——
13.12.1judgment——
13.12.2judgment——
13.12.3judgment——

On this page