You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Conversion pattern (shared by every #5044 sub-issue)
Replace ARIA-attribute reads — vNode.attr('aria-*') / vNode.hasAttr('aria-*'), incl. variable-attr forms — with getAriaValue / hasAriaValue, only where reading an internals-supplied value makes sense.
Add ElementInternals test fixtures (_internals and axeInternalsMap) mirroring existing virtual-node tests.
Update messages that name an ARIA attribute/role to reflect value source where confusing (e.g. avoid "ARIA attribute not allowed: aria-label" when the value came from internals).
Out of scope
role-attribute reads (#5039); the validity checks aria-valid-attr, aria-valid-attr-value, aria-unsupported-attr (they inspect the literal HTML attribute set on purpose — do not convert); rule selector matching; form-label work (#5045).
Dependencies
Blocked by #5043; requires getAriaValue/hasAriaValue (#5042). Prefer landing after the lib/commons/aria sub-issue.
Acceptance criteria
Existing suite green with elementInternals: false.
New internals fixtures pass with elementInternals: true.
Messages updated where they name an attribute/role.
Part of #5044 — incremental, per-subdirectory conversion of ARIA-attribute reads to the new internals-aware resolvers.
Scope:
lib/checks/aria(the largest sub-issue — consider splitting into 2 PRs if a single diff gets unwieldy)Representative files/usages:
aria-allowed-attr,aria-prohibited-attraria-required-attr(aria-valuetext,aria-expanded, variablerequiredAttr)aria-required-children(aria-busy)aria-conditional-attr/aria-conditional-row-attr/aria-conditional-checkbox-attraria-errormessage(aria-errormessage,aria-invalid)aria-level,aria-busyhas-global-aria-attributebraille-label-equivalent(aria-braillelabel)braille-roledescription-equivalent(aria-brailleroledescription,aria-roledescription)Conversion pattern (shared by every #5044 sub-issue)
vNode.attr('aria-*')/vNode.hasAttr('aria-*'), incl. variable-attr forms — withgetAriaValue/hasAriaValue, only where reading an internals-supplied value makes sense.idref(s)); filter unattached elements (see ElementInternals: accessing empty internals idrefs property crashes Firefox #5139).ElementInternalstest fixtures (_internalsandaxeInternalsMap) mirroring existing virtual-node tests.Out of scope
role-attribute reads (#5039); the validity checksaria-valid-attr,aria-valid-attr-value,aria-unsupported-attr(they inspect the literal HTML attribute set on purpose — do not convert); ruleselectormatching; form-label work (#5045).Dependencies
Blocked by #5043; requires
getAriaValue/hasAriaValue(#5042). Prefer landing after thelib/commons/ariasub-issue.Acceptance criteria
elementInternals: false.elementInternals: true.