From 4b80053d383b7092069078fec7f02ca4af1ac6d7 Mon Sep 17 00:00:00 2001 From: Giacomo Petri Date: Mon, 10 Jun 2024 16:18:39 +0200 Subject: [PATCH 01/12] [73f2c2] Autocomplete invalid - Accessibility note clarifies HTML spec's disallowed autocomplete values for specific form controls (#2161) * solving discussion in 1967 Added accessibility support note and removed "ambiguous example" * Update autocomplete-valid-value-73f2c2.md Replaced "Certain `autocomplete` attribute values are appropriate only for specific form controls. However, despite some combinations of `autocomplete` attribute values and form controls not being allowed by HTML specifications, the input purpose is programmatically available, and autocomplete functions correctly. Thus, if the input possesses the suitable autocomplete value, it fulfills the [Success Criterion 1.3.5 Identify Input Purpose](https://www.w3.org/TR/WCAG22/#identify-input-purpose), regardless of the input type." with "Authors may assign inappropriate `autocomplete` attribute values. Moreover, HTML specifications restrict certain `autocomplete` attribute values to specific form controls. Mismatches between `autocomplete` attribute values and form control types may or may not lead to a failure of [Success Criterion 1.3.5 Identify Input Purpose](https://www.w3.org/TR/WCAG22/#identify-input-purpose). However, this rule focuses exclusively on validating valid `autocomplete` attribute values, disregarding their contextual appropriateness." --------- Co-authored-by: Jean-Yves Moyen --- _rules/autocomplete-valid-value-73f2c2.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/_rules/autocomplete-valid-value-73f2c2.md b/_rules/autocomplete-valid-value-73f2c2.md index 8ce17821e7..7d6f1c4e23 100755 --- a/_rules/autocomplete-valid-value-73f2c2.md +++ b/_rules/autocomplete-valid-value-73f2c2.md @@ -58,6 +58,7 @@ The purpose of a control is programmatically identifiable even when its `autocom - Implementation of [Presentational Roles Conflict Resolution][] varies from one browser or assistive technology to another. Depending on this, some elements can have a [semantic role][] of `none` and fail this rule with some technology but users of other technologies would not experience any accessibility issue. - Some user agents treat the value of the `aria-disabled` attribute as case-sensitive. - In some user agents, querying the value of the `autocomplete` property returns an empty string ("") even when the attribute was set according to the rule's expectations. It affects assistive technologies which rely on this property to personalize input fields collecting information about the user. +- Authors may assign inappropriate `autocomplete` attribute values. Moreover, HTML specifications restrict certain `autocomplete` attribute values to specific form controls. Mismatches between `autocomplete` attribute values and form control types may or may not lead to a failure of [Success Criterion 1.3.5 Identify Input Purpose](https://www.w3.org/TR/WCAG22/#identify-input-purpose). However, this rule focuses exclusively on validating valid `autocomplete` attribute values, disregarding their contextual appropriateness. ## Background @@ -147,14 +148,6 @@ This `autocomplete` [attribute value][] list includes all allowed types of token #### Passed Example 8 -This `autocomplete` [attribute value][] only has the required token "bday-day". It remains programmatically identifiable even though it is inappropriate for the control's `type` [attribute value][] "tel". - -```html - -``` - -#### Passed Example 9 - This `autocomplete` [attribute value][] has the required token "current-password", followed by the optional "webauthn" token. ```html From dff94b2f66aa4be26af25b3d6c4c5f27364b22c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Jun 2024 13:01:46 +0200 Subject: [PATCH 02/12] Bump ws from 7.5.9 to 7.5.10 (#2197) Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9a98394489..f167048d46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11792,9 +11792,9 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "engines": { "node": ">=8.3.0" @@ -21065,9 +21065,9 @@ } }, "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "requires": {} }, From a77f604b1b29d4d9f1b01d59f9f6706ce3c30ba3 Mon Sep 17 00:00:00 2001 From: Giacomo Petri Date: Thu, 1 Aug 2024 16:06:12 +0200 Subject: [PATCH 03/12] Update Form field has non-empty accessible name [e086e5]: Added secondary requirements for 1.3.1 and 2.5.3 (#2188) * Added secondary requirements * Update _rules/form-field-non-empty-accessible-name-e086e5.md Co-authored-by: Jean-Yves Moyen * Update _rules/form-field-non-empty-accessible-name-e086e5.md Co-authored-by: Jean-Yves Moyen * Update _rules/form-field-non-empty-accessible-name-e086e5.md Co-authored-by: Kathy Eng --------- Co-authored-by: Jean-Yves Moyen Co-authored-by: Kathy Eng --- _rules/form-field-non-empty-accessible-name-e086e5.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/_rules/form-field-non-empty-accessible-name-e086e5.md b/_rules/form-field-non-empty-accessible-name-e086e5.md index d71625aff7..6882f012e5 100755 --- a/_rules/form-field-non-empty-accessible-name-e086e5.md +++ b/_rules/form-field-non-empty-accessible-name-e086e5.md @@ -10,6 +10,10 @@ accessibility_requirements: failed: not satisfied passed: further testing needed inapplicable: further testing needed + wcag20:1.3.1: # Info and Relationships (A) + secondary: This success criterion is **more strict** than this rule. This is because 1.3.1 Info and Relationship requires that information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text, while 4.1.2 Name, Role, Value only requires an accessible name. + wcag20:2.5.3: # Label in Name (A) + secondary: This success criterion is **more strict** than this rule. This is because 2.5.3 Label in Name requires that if a label is visible, the accessible name contains the label that is presented visually, while 4.1.2 Name, Role, Value only requires an accessible name. input_aspects: - Accessibility Tree - CSS styling From f8afb8fcfdca864fd7c849f6f5d5c63641e43c48 Mon Sep 17 00:00:00 2001 From: Giacomo Petri Date: Thu, 1 Aug 2024 18:45:27 +0200 Subject: [PATCH 04/12] Update non-empty title HTML reference (#2203) Co-authored-by: Carlos Duarte --- _rules/html-page-non-empty-title-2779a5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_rules/html-page-non-empty-title-2779a5.md b/_rules/html-page-non-empty-title-2779a5.md index c594dc09fe..8dedc650f7 100755 --- a/_rules/html-page-non-empty-title-2779a5.md +++ b/_rules/html-page-non-empty-title-2779a5.md @@ -51,7 +51,7 @@ For each target element, the first [HTML][] `title` element that is a [descendan ## Assumptions -This rule assumes that [Success Criterion 2.4.2 Page Titled](https://www.w3.org/TR/WCAG22/#page-titled) does not require that a document only has one `title` element, nor that it is a child of the `head` element of a document. While this is invalid in HTML, the HTML 5.2 specification describes what should happen in case of multiple titles, and titles outside the `head` element. Because of this, neither of these validation issues causes a conformance problem for WCAG. Regardless of whether this is required by 2.4.2 Page Titled, failing this rule means the success criterion is not satisfied. +This rule assumes that [Success Criterion 2.4.2 Page Titled](https://www.w3.org/TR/WCAG22/#page-titled) does not require that a document only has one `title` element, nor that it is a child of the `head` element of a document. While this is invalid in HTML, the [HTML specification](https://html.spec.whatwg.org/multipage/dom.html#the-title-element-2) describes what should happen in case of multiple titles, and titles outside the `head` element. Because of this, neither of these validation issues causes a conformance problem for WCAG. Regardless of whether this is required by 2.4.2 Page Titled, failing this rule means the success criterion is not satisfied. This rule assumes that the title of the page is not provided by a higher-level protocol. For example, the subject field of an email authored in HTML can provide a title without requiring a `title` element. In such a case, this rule will fail while [Success Criterion 2.4.2 Page Titled](https://www.w3.org/TR/WCAG22/#page-titled) may still be satisfied. From d9a44b4089f35e74dca054501fb329cfef1e2ff2 Mon Sep 17 00:00:00 2001 From: Giacomo Petri Date: Thu, 1 Aug 2024 18:55:37 +0200 Subject: [PATCH 05/12] Links with identical accessible names and same context serve equivalent purpose" [fd3a94]: Reduced images size for failed examples [4,8] (#2178) * Update links-with-identical-names-and-context-serve-equivalent-purpose-fd3a94.md * Update links-with-identical-names-and-context-serve-equivalent-purpose-fd3a94.md --------- Co-authored-by: Carlos Duarte --- ...context-serve-equivalent-purpose-fd3a94.md | 36 +++++++------------ 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/_rules/links-with-identical-names-and-context-serve-equivalent-purpose-fd3a94.md b/_rules/links-with-identical-names-and-context-serve-equivalent-purpose-fd3a94.md index fe6557e46e..162a8ca945 100755 --- a/_rules/links-with-identical-names-and-context-serve-equivalent-purpose-fd3a94.md +++ b/_rules/links-with-identical-names-and-context-serve-equivalent-purpose-fd3a94.md @@ -289,8 +289,8 @@ These two HTML `a` elements have the same [accessible name][] and [context][prog
Contact us - Chat - Phone + Chat + Phone Contact us - Chat - Phone + Chat + Phone Contact us - Chat - Phone + Chat + Phone

- + Contact us - - + + - - + +

@@ -399,8 +389,8 @@ These two HTML `a` elements with the same [accessible name][] and [context][prog

Contact us - Chat - Phone + Chat + Phone Contact Us From 7e71738a94f006c15ebe2a244bd0824d40d44b83 Mon Sep 17 00:00:00 2001 From: Wilco Fiers Date: Mon, 26 Aug 2024 18:16:35 +0200 Subject: [PATCH 06/12] New rule: Summary element has non-empty accessible name (#2202) * New rule: Summary element has non-empty accessible name * Fix tests * Apply suggestions from code review Co-authored-by: Tom Brunet * Update summary-non-empty-accessible-name-2t702h.md * Update _rules/summary-non-empty-accessible-name-2t702h.md * Apply suggestions from code review Co-authored-by: Jean-Yves Moyen * Update _rules/summary-non-empty-accessible-name-2t702h.md * Update _rules/summary-non-empty-accessible-name-2t702h.md * Update _rules/summary-non-empty-accessible-name-2t702h.md * Apply suggestions from code review Co-authored-by: Jean-Yves Moyen Co-authored-by: Giacomo Petri * Update _rules/summary-non-empty-accessible-name-2t702h.md Co-authored-by: Giacomo Petri * Update _rules/summary-non-empty-accessible-name-2t702h.md * Update _rules/summary-non-empty-accessible-name-2t702h.md * Apply suggestions from code review Co-authored-by: Jean-Yves Moyen * Update _rules/summary-non-empty-accessible-name-2t702h.md --------- Co-authored-by: Tom Brunet Co-authored-by: Jean-Yves Moyen Co-authored-by: Giacomo Petri --- ...ummary-non-empty-accessible-name-2t702h.md | 206 ++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100755 _rules/summary-non-empty-accessible-name-2t702h.md diff --git a/_rules/summary-non-empty-accessible-name-2t702h.md b/_rules/summary-non-empty-accessible-name-2t702h.md new file mode 100755 index 0000000000..130183b321 --- /dev/null +++ b/_rules/summary-non-empty-accessible-name-2t702h.md @@ -0,0 +1,206 @@ +--- +id: 2t702h +name: Summary element has non-empty accessible name +rule_type: atomic +description: | + This rule checks that each `summary` element has a non-empty accessible name. +accessibility_requirements: + wcag20:4.1.2: # Name, Role, Value (A) + forConformance: true + failed: not satisfied + passed: further testing needed + inapplicable: further testing needed +input_aspects: + - Accessibility Tree + - DOM Tree + - CSS Styling +acknowledgments: + authors: + - Wilco Fiers +--- + +## Applicability + +This rule applies to HTML `summary` elements for which all the following is true: + +- the element is [included in the accessibility tree][]; and +- the element works as the [summary button for its parent `details` element][details summary]; and +- the element has no [explicit role][], or the [explicit role][] is ignored due to a [presentational role conflict][]. + +## Expectation + +Each target element has an [accessible name][] that is not empty (`""`), nor just the name of the `::marker` pseudo element. + +## Assumptions + +The rule assumes that all `summary` elements are [user interface components as defined by WCAG 2](https://www.w3.org/TR/WCAG22/#dfn-user-interface-components). + +## Accessibility Support + +There is a difference in how user agents expose the triangle indicating the control's expand state. As a result, some user agents include the triangle in the accessible name of the summary element. + +## Background + +This rule is only applicable to `summary` elements that the browser will use as controls for a `details` element. While this rule is not applicable to `summary` elements with an [explicit semantic role][], most of the time these likely do still require an [accessible name][]. This is covered by other rules, such as the [Button has non-empty accessible name][97a4e1]. + +If the `summary` element is not included in the accessibility tree, but is still included in sequential focus navigation, this can result in accessibility issues not tested by this rule. This is covered under [Element with aria-hidden has no content in sequential focus navigation][6cfa84]. + +Note that some user agents expose the `summary` element with a `button` role. This deviates from the implicit ARIA semantics described in [ARIA in HTML](https://www.w3.org/TR/html-aria/#el-summary). Because some browsers do not give `summary` elements a button role, these elements need to be tested separately from the [Button has non-empty accessible name](https://www.w3.org/WAI/standards-guidelines/act/rules/97a4e1/) ACT rule. + +### Bibliography + +- [Understanding Success Criterion 4.1.2: Name, Role, Value](https://www.w3.org/WAI/WCAG22/Understanding/name-role-value) +- [ARIA14: Using aria-label to provide an invisible label where a visible label cannot be used](https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA14) +- [ARIA16: Using aria-labelledby to provide a name for user interface controls](https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA16) +- [Summary element entry for ARIA in HTML](https://www.w3.org/TR/html-aria/#el-summary) + +## Test Cases + +### Passed + +#### Passed Example 1 + +This `summary` element has an [accessible name][] because of its text content. + +```html +

+ Opening times +

This is a website. We are available 24/7.

+
+``` + +#### Passed Example 2 + +This `summary` element has an [accessible name][] because of its `aria-label` attribute. + +```html +
+ +

This is a website. We are available 24/7.

+
+``` + +#### Passed Example 3 + +This `summary` element has an [accessible name][] because of its `aria-labelledby` attribute. + +```html +Opening times +
+ +

This is a website. We are available 24/7.

+
+``` + +#### Passed Example 4 + +This `summary` element has an [accessible name][] because of its text content. It does not need to be the first child element of `details`. + +```html +
+

This is a website. We are available 24/7.

+ Opening times +
+``` + +#### Passed Example 5 + +This first `summary` element has an [accessible name][] because of its text content. The second `summary` element is inapplicable because only the first `summary` element will be used as a control for the `details` element. + +```html +
+ Opening times + +

This is a website. We are available 24/7.

+
+``` + +### Failed + +#### Failed Example 1 + +This `summary` element has no [accessible name][], or an accessible name with just the `::marker` pseudo element, because it has no content or attribute that can provide it. + +```html +
+ +

This is a website. We are available 24/7.

+
+``` + +#### Failed Example 2 + +This `summary` element has an [explicit role][] of `none`. However, it is [focusable][] (by default) which causes [Presentational Roles Conflict Resolution][]. It fails because it has an empty [accessible name][]. + +```html +
+ +

This is a website. We are available 24/7.

+
+``` + +#### Failed Example 3 + +This first `summary` element has no [accessible name][] because it is empty. The second `summary` element is inapplicable because only the first `summary` element will be used as a control for the `details` element. + +```html +
+ + Opening times +

This is a website. We are available 24/7.

+
+``` + +### Inapplicable + +#### Inapplicable Example 1 + +This `summary` element is not a child of a `details` element and so will not be interactive. + +```html + +``` + +#### Inapplicable Example 2 + +This `summary` element is not a direct child of a `details` element and so will not be interactive. + +```html +
+
+ +
+

This is a website. We are available 24/7.

+
+``` + +#### Inapplicable Example 3 + +This `summary` element has an explicit semantic role of `button`. These are tested under [Button has non-empty accessible name][97a4e1] instead. Note that while this example does not fail WCAG, under [ARIA in HTML](https://www.w3.org/TR/html-aria/#dfn-no-role) it is not allowed to override the role of a [summary for its parent details][details summary]. + +```html +
+ Opening hours +

This is a website. We are available 24/7.

+
+``` + +#### Inapplicable Example 4 + +This `summary` element is hidden to everyone. + +```html +
+ +

This is a website. We are available 24/7.

+
+``` + +[accessible name]: #accessible-name 'Definition of accessible name' +[explicit role]: #explicit-role 'Definition of explicit role' +[focusable]: #focusable 'Definition of focusable' +[included in the accessibility tree]: #included-in-the-accessibility-tree 'Definition of included in the accessibility tree' +[presentational roles conflict resolution]: https://www.w3.org/TR/wai-aria-1.2/#conflict_resolution_presentation_none 'Presentational Roles Conflict Resolution' +[details summary]: https://html.spec.whatwg.org/multipage/interactive-elements.html#summary-for-its-parent-details ' HTML 5 definition of summary for its parent details' +[97a4e1]: https://www.w3.org/WAI/standards-guidelines/act/rules/97a4e1/ +[6cfa84]: https://www.w3.org/WAI/standards-guidelines/act/rules/6cfa84/ From b4663d26fcc27ca54e35ead78f3cc449bf3bafbd Mon Sep 17 00:00:00 2001 From: Giacomo Petri Date: Fri, 30 Aug 2024 10:41:15 +0200 Subject: [PATCH 07/12] Added text-shadow failure - Text has minimum contrast [afw4f7] (#2184) * Added text-shadow failed example * Update _rules/text-contrast-afw4f7.md Co-authored-by: Wilco Fiers * Update text-contrast-afw4f7.md * Update text-contrast-afw4f7.md * Update spelling-ignore.yml --------- Co-authored-by: Wilco Fiers Co-authored-by: Carlos Duarte Co-authored-by: Jean-Yves Moyen --- __tests__/spelling-ignore.yml | 1 + _rules/text-contrast-afw4f7.md | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/__tests__/spelling-ignore.yml b/__tests__/spelling-ignore.yml index 436581b01b..3a0101090e 100644 --- a/__tests__/spelling-ignore.yml +++ b/__tests__/spelling-ignore.yml @@ -239,6 +239,7 @@ - unitless - luminance - disambiguated +- grey # Parts of Unicode - 000A diff --git a/_rules/text-contrast-afw4f7.md b/_rules/text-contrast-afw4f7.md index ea2ba59977..b9cf8b8d60 100755 --- a/_rules/text-contrast-afw4f7.md +++ b/_rules/text-contrast-afw4f7.md @@ -296,6 +296,16 @@ This text in a [semantic button][semantic role] has a contrast ratio of 3.85:1.
My button!
``` +#### Failed Example 11 + +The grey text has a contrast between 2.7:1 and 2.9:1 against the grey text shadow. + +```html +

+ Some text in a human language +

+``` + ### Inapplicable #### Inapplicable Example 1 From b379b0c185d8d1adf28b067bce7877fc54947b9b Mon Sep 17 00:00:00 2001 From: Giacomo Petri Date: Fri, 30 Aug 2024 11:00:45 +0200 Subject: [PATCH 08/12] Removed ambiguity for "Passed Example 2" of "HTML page has non-empty title" (#2181) Co-authored-by: Jean-Yves Moyen Co-authored-by: Wilco Fiers --- _rules/html-page-non-empty-title-2779a5.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/_rules/html-page-non-empty-title-2779a5.md b/_rules/html-page-non-empty-title-2779a5.md index 8dedc650f7..9da72c8ff8 100755 --- a/_rules/html-page-non-empty-title-2779a5.md +++ b/_rules/html-page-non-empty-title-2779a5.md @@ -90,12 +90,16 @@ This page has a `title` element with content. #### Passed Example 2 -This page has a `title` element that serves as the title for the page and the `iframe` since the `iframe` does not have its own. +This page has a `title` element that serves as the title for the page. This rule doesn't take into account HTML pages embedded into the target document. ```html - This page gives a title to an iframe - + + This page gives a title to an iframe + + + + ``` From 70e6e12a8a9cf614c8d0421060e319b1cf479d73 Mon Sep 17 00:00:00 2001 From: Wilco Fiers Date: Tue, 3 Sep 2024 14:45:18 +0200 Subject: [PATCH 09/12] fix-broken-summary-link (#2213) * fix-broken-summary-link * Add link destination to ensure it works properly * Update summary-non-empty-accessible-name-2t702h.md --------- Co-authored-by: Daniel --- _rules/summary-non-empty-accessible-name-2t702h.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_rules/summary-non-empty-accessible-name-2t702h.md b/_rules/summary-non-empty-accessible-name-2t702h.md index 130183b321..f3703a7d57 100755 --- a/_rules/summary-non-empty-accessible-name-2t702h.md +++ b/_rules/summary-non-empty-accessible-name-2t702h.md @@ -21,11 +21,11 @@ acknowledgments: ## Applicability -This rule applies to HTML `summary` elements for which all the following is true: +This rule applies to HTML `summary` elements for which all the following are true: - the element is [included in the accessibility tree][]; and - the element works as the [summary button for its parent `details` element][details summary]; and -- the element has no [explicit role][], or the [explicit role][] is ignored due to a [presentational role conflict][]. +- the element has no [explicit role][], or the [explicit role][] is ignored due to a [presentational role conflict][presentational roles conflict]. ## Expectation @@ -130,7 +130,7 @@ This `summary` element has no [accessible name][], or an accessible name with ju #### Failed Example 2 -This `summary` element has an [explicit role][] of `none`. However, it is [focusable][] (by default) which causes [Presentational Roles Conflict Resolution][]. It fails because it has an empty [accessible name][]. +This `summary` element has an [explicit role][] of `none`. However, it is [focusable][] (by default) which causes [Presentational Roles Conflict Resolution][presentational roles conflict]. It fails because it has an empty [accessible name][]. ```html
@@ -200,7 +200,7 @@ This `summary` element is hidden to everyone. [explicit role]: #explicit-role 'Definition of explicit role' [focusable]: #focusable 'Definition of focusable' [included in the accessibility tree]: #included-in-the-accessibility-tree 'Definition of included in the accessibility tree' -[presentational roles conflict resolution]: https://www.w3.org/TR/wai-aria-1.2/#conflict_resolution_presentation_none 'Presentational Roles Conflict Resolution' +[presentational roles conflict]: https://www.w3.org/TR/wai-aria-1.2/#conflict_resolution_presentation_none 'Presentational Roles Conflict Resolution' [details summary]: https://html.spec.whatwg.org/multipage/interactive-elements.html#summary-for-its-parent-details ' HTML 5 definition of summary for its parent details' [97a4e1]: https://www.w3.org/WAI/standards-guidelines/act/rules/97a4e1/ [6cfa84]: https://www.w3.org/WAI/standards-guidelines/act/rules/6cfa84/ From d77d6fced330d12fcdeaf903cec5511923021127 Mon Sep 17 00:00:00 2001 From: Giacomo Petri Date: Mon, 30 Sep 2024 16:20:53 +0200 Subject: [PATCH 10/12] HTML page has non-empty title [2779a5]: Shadow root example - Included as failed example 6 (#2180) * Shadow root example included as failed example 6 * Update _rules/html-page-non-empty-title-2779a5.md Co-authored-by: Wilco Fiers --------- Co-authored-by: Wilco Fiers Co-authored-by: Jean-Yves Moyen --- _rules/html-page-non-empty-title-2779a5.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/_rules/html-page-non-empty-title-2779a5.md b/_rules/html-page-non-empty-title-2779a5.md index 9da72c8ff8..e8380db567 100755 --- a/_rules/html-page-non-empty-title-2779a5.md +++ b/_rules/html-page-non-empty-title-2779a5.md @@ -202,6 +202,27 @@ This page has a `title` element that only contains a separator character. ``` +#### Failed Example 6 + +This page does not have a title because the shadow root is not a [descendant](https://dom.spec.whatwg.org/#concept-tree-descendant) of the [document element](https://dom.spec.whatwg.org/#document-element). + +```html + + + + + + +``` + ### Inapplicable #### Inapplicable Example 1 From 6be08459ccc04f412a64c4ac6690bd92cce5b7f4 Mon Sep 17 00:00:00 2001 From: Wilco Fiers Date: Thu, 31 Oct 2024 15:01:08 +0100 Subject: [PATCH 11/12] Tweaks to autocomplete-valid-value-73f2c2.md (#2221) --- _rules/autocomplete-valid-value-73f2c2.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/_rules/autocomplete-valid-value-73f2c2.md b/_rules/autocomplete-valid-value-73f2c2.md index 7d6f1c4e23..44413a6835 100755 --- a/_rules/autocomplete-valid-value-73f2c2.md +++ b/_rules/autocomplete-valid-value-73f2c2.md @@ -46,7 +46,7 @@ Each test target's `autocomplete` [attribute value][] is a [space separated][] l The `autocomplete` attribute is used on form fields that correspond to [Input Purposes for User Interface Components](https://www.w3.org/TR/WCAG22/#input-purposes) and collect information about the user. -If the `autocomplete` attribute is used to describe "custom" taxonomy, for example using the custom autocomplete value "banner" (``), success Criterion [1.3.5 Identify Input Purpose][sc135] may be satisfied even if this rule failed. +If the `autocomplete` attribute is used to describe "custom" taxonomy, for example using the custom autocomplete value "banner" (``), success criterion [1.3.5 Identify Input Purpose][sc135] may be satisfied even if this rule failed. The `aria-disabled` state is used on `input` elements which are not part of [sequential focus navigation][] and are not otherwise [operable](https://www.w3.org/TR/wai-aria-1.2/#dfn-operable). If this is not the case, this rule may be inapplicable on elements that are still operable and require a valid `autocomplete` attribute to satisfy success criterion [1.3.5 Identify Input Purpose][sc135]. @@ -56,9 +56,8 @@ The purpose of a control is programmatically identifiable even when its `autocom - While `autocomplete` is a promising technique for supporting personalization in HTML, support for this in assistive technologies is fairly limited. - Implementation of [Presentational Roles Conflict Resolution][] varies from one browser or assistive technology to another. Depending on this, some elements can have a [semantic role][] of `none` and fail this rule with some technology but users of other technologies would not experience any accessibility issue. -- Some user agents treat the value of the `aria-disabled` attribute as case-sensitive. - In some user agents, querying the value of the `autocomplete` property returns an empty string ("") even when the attribute was set according to the rule's expectations. It affects assistive technologies which rely on this property to personalize input fields collecting information about the user. -- Authors may assign inappropriate `autocomplete` attribute values. Moreover, HTML specifications restrict certain `autocomplete` attribute values to specific form controls. Mismatches between `autocomplete` attribute values and form control types may or may not lead to a failure of [Success Criterion 1.3.5 Identify Input Purpose](https://www.w3.org/TR/WCAG22/#identify-input-purpose). However, this rule focuses exclusively on validating valid `autocomplete` attribute values, disregarding their contextual appropriateness. +- Authors may assign inappropriate `autocomplete` attribute values. Moreover, HTML specifications restrict certain `autocomplete` attribute values to specific form controls. Mismatches between `autocomplete` attribute values and form control types may or may not lead to a failure of [success criterion 1.3.5 Identify Input Purpose](https://www.w3.org/TR/WCAG22/#identify-input-purpose). However, this rule focuses exclusively on validating valid `autocomplete` attribute values, disregarding their contextual appropriateness. ## Background @@ -66,9 +65,9 @@ The intent of this rule is to ensure that the `autocomplete` attribute can be us Many browsers provide auto-filling suggestions even when the control's `type` [attribute value][] is not [appropriate][appropriate field name for the form control] for its `autocomplete` [attribute value][]. The same happens when the `autocomplete` property is queried. However, the `autocomplete` property is not programmatically identifiable if the requirements for the optional tokens are not met. -The auto-completing feature of the `autocomplete` attribute benefits many users, but it is not required to satisfy success Criterion [1.3.5 Identify Input Purpose][sc135]. Setting `autocomplete="off"` on the element's [form owner](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#form-owner) prevents the user agent from completing it, but it does not prevent the `autocomplete` [attribute value][] from being programmatically identifiable. +The auto-completing feature of the `autocomplete` attribute benefits many users, but it is not required to satisfy success criterion [1.3.5 Identify Input Purpose][sc135]. Setting `autocomplete="off"` on the element's [form owner](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#form-owner) prevents the user agent from completing it, but it does not prevent the `autocomplete` [attribute value][] from being programmatically identifiable. -The [fixed value](#73f2c2:fixed-value) condition in the Applicability is excluding `input` elements who do not consider the `autocomplete` attribute, based on their `type` [attribute value][]; `input` elements with a `type` [attribute value][] of `hidden` are excluded by the [hidden](#73f2c2:hidden) condition. +The [fixed value](#73f2c2:fixed-value) condition in the Applicability is excluding `input` elements that do not consider the `autocomplete` attribute, based on their `type` [attribute value][]; `input` elements with a `type` [attribute value][] of `hidden` are excluded by the [hidden](#73f2c2:hidden) condition. On an `input` element with a `type` [attribute value][] of `hidden`, the autocomplete attribute wears the [autofill anchor mantle](https://html.spec.whatwg.org/#autofill-anchor-mantle), describing the meaning of the given value. In all other cases, it wears the [autofill expectation mantle](https://html.spec.whatwg.org/#autofill-expectation-mantle). From e17ea0c6641378413c0a92a9c49b00befddfc423 Mon Sep 17 00:00:00 2001 From: Giacomo Petri Date: Thu, 21 Nov 2024 14:40:25 +0100 Subject: [PATCH 12/12] Updated "Scrollable content can be reached with sequential focus navigation" [0ssw9k]: scrollable regions pass when there is an open modal (#2219) * scrollable regions should pass when there is an open modal - updated expectation to exclude inert elements from sequential focus - added passing example * Update _rules/scrollable-element-keyboard-accessible-0ssw9k.md Co-authored-by: Jean-Yves Moyen * Update scrollable-element-keyboard-accessible-0ssw9k.md --------- Co-authored-by: Jean-Yves Moyen Co-authored-by: Wilco Fiers --- ...able-element-keyboard-accessible-0ssw9k.md | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/_rules/scrollable-element-keyboard-accessible-0ssw9k.md b/_rules/scrollable-element-keyboard-accessible-0ssw9k.md index c23d3f03d3..045624b171 100755 --- a/_rules/scrollable-element-keyboard-accessible-0ssw9k.md +++ b/_rules/scrollable-element-keyboard-accessible-0ssw9k.md @@ -39,7 +39,10 @@ This rule applies to any [HTML element][] that has [visible][] [children][] in t ## Expectation -Each test target is either included in [sequential focus navigation][] or has a [descendant][] in the [flat tree][] that is included in [sequential focus navigation][]. +For each target element, at least one of the following is true: +- the element is included in [sequential focus navigation][]; or +- the element has a [descendant][] in the [flat tree][] that is included in [sequential focus navigation][]; or +- the element is [inert][]. ## Assumptions @@ -108,6 +111,46 @@ This [scrollable][] `section` element contains a link that is included in [seque ``` +#### Passed Example 3 + +This [scrollable][] `section` element is [inert][] because of the modal dialog, so neither the `section` nor its [descendant][] elements are included in [sequential focus navigation][]. + +```html + +
+

WCAG 2.1 Abstract

+

+ Web Content Accessibility Guidelines (WCAG) 2.1 covers a wide range of recommendations for making Web content more + accessible. Following these guidelines will make content more accessible to a wider range of people with + disabilities, including accommodations for blindness and low vision, deafness and hearing loss, limited movement, + speech disabilities, photosensitivity, and combinations of these, and some accommodation for learning disabilities + and cognitive limitations; but will not address every user need for people with these disabilities. These guidelines + address accessibility of web content on desktops, laptops, tablets, and mobile devices. Following these guidelines + will also often make Web content more usable to users in general. + +

+
+ +

WCAG 2.2

+

+ WCAG 2.2 +

+ +
+ +``` + ### Failed #### Failed Example 1 @@ -262,6 +305,7 @@ This `iframe` element is not a scrollable element, but instead contains a nested [sequential focus navigation]: https://html.spec.whatwg.org/multipage/interaction.html#sequential-focus-navigation 'HTML sequential focus navigation, 2020/04/03' [flat tree]: https://drafts.csswg.org/css-scoping/#flat-tree 'CSS draft, flat tree, 2020/04/03' [computed]: https://www.w3.org/TR/css-cascade-3/#computed-value +[inert]: #inert 'Definition of Inert' [overflow]: https://www.w3.org/TR/CSS22/visufx.html#overflow [padding]: https://www.w3.org/TR/CSS22/box.html#propdef-padding [padding-left]: https://www.w3.org/TR/CSS22/box.html#propdef-padding-left