@verndale/accessibility-standards 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/OPERATING.md +1 -1
- package/README.md +1 -1
- package/dist/manifest.json +156 -116
- package/dist/profiles/ai-orchestration/coverage-manifest.json +702 -153
- package/dist/profiles/ai-orchestration/implementation/accessibility.md +523 -42
- package/dist/profiles/ai-orchestration/pattern-contracts.json +892 -306
- package/dist/profiles/ai-orchestration/patterns/accordion.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/alert.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/carousel.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/checkbox.md +27 -0
- package/dist/profiles/ai-orchestration/patterns/combobox.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/consequential-submission.md +8 -3
- package/dist/profiles/ai-orchestration/patterns/dialog.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/disclosure.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/dynamic-status.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/field.md +7 -1
- package/dist/profiles/ai-orchestration/patterns/image.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/listbox.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/media-player.md +9 -1
- package/dist/profiles/ai-orchestration/patterns/menu-button.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/menu.md +30 -0
- package/dist/profiles/ai-orchestration/patterns/pagination.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/popover.md +7 -1
- package/dist/profiles/ai-orchestration/patterns/progress.md +7 -1
- package/dist/profiles/ai-orchestration/patterns/radio-group.md +27 -0
- package/dist/profiles/ai-orchestration/patterns/slider.md +31 -0
- package/dist/profiles/ai-orchestration/patterns/spinbutton.md +28 -0
- package/dist/profiles/ai-orchestration/patterns/tabs.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/tooltip.md +6 -1
- package/dist/profiles/ai-orchestration/patterns/tree-view.md +31 -0
- package/dist/profiles/ai-orchestration/patterns/validation.md +7 -1
- package/dist/profiles/ai-orchestration/review/accessibility.md +14 -6
- package/dist/profiles/ai-orchestration/semantics/accessible-authentication.md +13 -0
- package/dist/profiles/ai-orchestration/semantics/accessible-name.md +8 -2
- package/dist/profiles/ai-orchestration/semantics/alert.md +7 -1
- package/dist/profiles/ai-orchestration/semantics/consequential-action.md +6 -2
- package/dist/profiles/ai-orchestration/semantics/consistent-help.md +13 -0
- package/dist/profiles/ai-orchestration/semantics/data-table.md +7 -2
- package/dist/profiles/ai-orchestration/semantics/dragging-alternative.md +13 -0
- package/dist/profiles/ai-orchestration/semantics/expanded-state.md +6 -1
- package/dist/profiles/ai-orchestration/semantics/focus.initial.md +4 -1
- package/dist/profiles/ai-orchestration/semantics/focus.return.md +4 -1
- package/dist/profiles/ai-orchestration/semantics/focus.visible.md +8 -2
- package/dist/profiles/ai-orchestration/semantics/form-error.md +8 -2
- package/dist/profiles/ai-orchestration/semantics/form-label.md +7 -1
- package/dist/profiles/ai-orchestration/semantics/form-required.md +7 -1
- package/dist/profiles/ai-orchestration/semantics/headings.md +7 -1
- package/dist/profiles/ai-orchestration/semantics/keyboard.escape.md +4 -1
- package/dist/profiles/ai-orchestration/semantics/keyboard.md +7 -1
- package/dist/profiles/ai-orchestration/semantics/landmarks.md +6 -1
- package/dist/profiles/ai-orchestration/semantics/live-status.md +7 -2
- package/dist/profiles/ai-orchestration/semantics/media-alternatives.md +11 -1
- package/dist/profiles/ai-orchestration/semantics/motion-control.md +8 -2
- package/dist/profiles/ai-orchestration/semantics/name-role-value.md +6 -2
- package/dist/profiles/ai-orchestration/semantics/native-dialog.md +7 -1
- package/dist/profiles/ai-orchestration/semantics/native-elements.md +5 -1
- package/dist/profiles/ai-orchestration/semantics/non-text-alternative.md +5 -1
- package/dist/profiles/ai-orchestration/semantics/redundant-entry.md +13 -0
- package/dist/profiles/ai-orchestration/semantics/roles-states-properties.md +6 -1
- package/dist/profiles/ai-orchestration/semantics/selected-state.md +6 -1
- package/dist/profiles/ai-orchestration/semantics/target-size.md +6 -2
- package/dist/profiles/ai-orchestration/semantics.json +826 -130
- package/dist/profiles/ai-orchestration/testing/accessibility.md +33 -3
- package/dist/profiles/ai-orchestration/ui-design-brain-bindings.json +287 -307
- package/dist/profiles/conductor/a11y-semantics.md +249 -10
- package/dist/profiles/conductor/accessibility-quality.md +275 -33
- package/dist/profiles/conductor/applicability-matrix.json +226 -269
- package/dist/profiles/conductor/coverage-manifest.json +702 -153
- package/dist/profiles/conductor/pattern-contracts.json +892 -306
- package/dist/profiles/conductor/patterns/accordion.json +35 -27
- package/dist/profiles/conductor/patterns/alert.json +29 -21
- package/dist/profiles/conductor/patterns/carousel.json +36 -28
- package/dist/profiles/conductor/patterns/checkbox.json +67 -0
- package/dist/profiles/conductor/patterns/combobox.json +37 -29
- package/dist/profiles/conductor/patterns/consequential-submission.json +34 -25
- package/dist/profiles/conductor/patterns/dialog.json +37 -29
- package/dist/profiles/conductor/patterns/disclosure.json +33 -25
- package/dist/profiles/conductor/patterns/dynamic-status.json +31 -22
- package/dist/profiles/conductor/patterns/field.json +41 -25
- package/dist/profiles/conductor/patterns/image.json +31 -22
- package/dist/profiles/conductor/patterns/listbox.json +35 -27
- package/dist/profiles/conductor/patterns/media-player.json +59 -29
- package/dist/profiles/conductor/patterns/menu-button.json +34 -26
- package/dist/profiles/conductor/patterns/menu.json +78 -0
- package/dist/profiles/conductor/patterns/pagination.json +34 -25
- package/dist/profiles/conductor/patterns/popover.json +42 -26
- package/dist/profiles/conductor/patterns/progress.json +38 -23
- package/dist/profiles/conductor/patterns/radio-group.json +69 -0
- package/dist/profiles/conductor/patterns/slider.json +84 -0
- package/dist/profiles/conductor/patterns/spinbutton.json +74 -0
- package/dist/profiles/conductor/patterns/tabs.json +34 -26
- package/dist/profiles/conductor/patterns/tooltip.json +31 -23
- package/dist/profiles/conductor/patterns/tree-view.json +77 -0
- package/dist/profiles/conductor/patterns/validation.json +42 -26
- package/dist/profiles/conductor/semantics.json +826 -130
- package/dist/profiles/conductor/ui-design-brain-bindings.json +287 -307
- package/dist/projection-manifest.json +120 -104
- package/dist/requirements-to-implementation.md +7 -1
- package/lib/build.mjs +3 -3
- package/lib/digest.mjs +8 -0
- package/lib/load.mjs +13 -0
- package/lib/provenance.mjs +2 -0
- package/lib/render.mjs +51 -7
- package/lib/sync.mjs +2 -2
- package/lib/validate.mjs +335 -33
- package/package.json +6 -2
- package/profiles/ai-orchestration/profile.json +1 -1
- package/profiles/ai-orchestration/templates/patterns/README.md +1 -1
- package/profiles/ai-orchestration/templates/review/README.md +1 -1
- package/profiles/ai-orchestration/templates/semantics/README.md +1 -1
- package/profiles/ai-orchestration/templates/testing/README.md +1 -1
- package/profiles/conductor/profile.json +1 -1
- package/profiles/conductor/templates/evidence/README.md +1 -1
- package/profiles/conductor/templates/patterns/README.md +1 -1
- package/profiles/conductor/templates/semantics/README.md +1 -1
- package/schemas/consumer-config.schema.json +1 -1
- package/schemas/contract.schema.json +1 -1
- package/schemas/manifest.schema.json +1 -1
- package/schemas/pattern.schema.json +98 -1
- package/schemas/profile.schema.json +1 -1
- package/schemas/projection-manifest.schema.json +6 -6
- package/schemas/semantic.schema.json +26 -1
- package/schemas/standards-reference.schema.json +105 -0
- package/schemas/wcag-coverage.schema.json +93 -0
- package/src/applicability/facts.yml +3 -5
- package/src/applicability/matrix.yml +5 -7
- package/src/applicability/ui-design-brain-bindings.yml +8 -22
- package/src/contract.yml +1 -1
- package/src/coverage/wcag-2.2.yml +68 -0
- package/src/patterns/disclosure/accordion.yml +1 -1
- package/src/patterns/disclosure/disclosure.yml +1 -1
- package/src/patterns/feedback/alert.yml +1 -1
- package/src/patterns/feedback/dynamic-status.yml +1 -1
- package/src/patterns/feedback/progress.yml +1 -1
- package/src/patterns/forms/consequential-submission.yml +1 -1
- package/src/patterns/forms/field.yml +1 -1
- package/src/patterns/forms/spinbutton.yml +1 -0
- package/src/patterns/forms/validation.yml +1 -1
- package/src/patterns/media/carousel.yml +1 -1
- package/src/patterns/media/image.yml +1 -1
- package/src/patterns/media/media-player.yml +1 -1
- package/src/patterns/navigation/menu-button.yml +1 -1
- package/src/patterns/navigation/menu.yml +1 -0
- package/src/patterns/navigation/pagination.yml +1 -1
- package/src/patterns/navigation/tabs.yml +1 -1
- package/src/patterns/navigation/tree-view.yml +1 -0
- package/src/patterns/overlays/dialog.yml +1 -1
- package/src/patterns/overlays/popover.yml +1 -1
- package/src/patterns/overlays/tooltip.yml +1 -1
- package/src/patterns/selection/checkbox.yml +1 -0
- package/src/patterns/selection/combobox.yml +1 -1
- package/src/patterns/selection/listbox.yml +1 -1
- package/src/patterns/selection/radio-group.yml +1 -0
- package/src/patterns/selection/slider.yml +1 -0
- package/src/semantics/accessible-names.yml +1 -1
- package/src/semantics/forms.yml +1 -1
- package/src/semantics/headings-landmarks.yml +1 -1
- package/src/semantics/keyboard-focus.yml +1 -1
- package/src/semantics/live-regions.yml +1 -1
- package/src/semantics/media.yml +1 -1
- package/src/semantics/native-elements.yml +1 -1
- package/src/semantics/roles-states-properties.yml +1 -1
- package/src/semantics/tables.yml +1 -1
- package/src/semantics/wcag-2.2.yml +1 -0
- package/src/sources.yml +1 -1
|
@@ -1,336 +1,1032 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_generated": "GENERATED by @verndale/accessibility-standards; DO NOT EDIT",
|
|
3
3
|
"_provenance": {
|
|
4
|
-
"package": "@verndale/accessibility-standards@
|
|
4
|
+
"package": "@verndale/accessibility-standards@3.0.0",
|
|
5
5
|
"profile": "ai-orchestration",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"schema_version":
|
|
9
|
-
"source_digest": "
|
|
6
|
+
"profile_digest": "de396e9a23010dff2e8abf3ae7e8500153599583ffa31a595b3a94fbe9df3da4",
|
|
7
|
+
"profile_version": "3.0.0",
|
|
8
|
+
"schema_version": 3,
|
|
9
|
+
"source_digest": "708ac82783bfb5ebcce31e4dada15d8580863f5e37b32d1807adf61e415ed5af"
|
|
10
10
|
},
|
|
11
|
-
"schema_version": 2,
|
|
12
11
|
"foundations": [
|
|
13
12
|
{
|
|
14
13
|
"id": "foundation.conformance-boundary",
|
|
15
|
-
"version": "1.0.0",
|
|
16
|
-
"title": "Conformance boundary",
|
|
17
14
|
"kind": "foundation",
|
|
18
|
-
"requirement": "Automated checks provide evidence but do not establish conformance; every applicable outcome needs its declared proof routes."
|
|
15
|
+
"requirement": "Automated checks provide evidence but do not establish conformance; every applicable outcome needs its declared proof routes.",
|
|
16
|
+
"title": "Conformance boundary",
|
|
17
|
+
"version": "1.0.0"
|
|
19
18
|
},
|
|
20
19
|
{
|
|
21
20
|
"id": "foundation.standards-hierarchy",
|
|
22
|
-
"version": "1.0.0",
|
|
23
|
-
"title": "Standards hierarchy",
|
|
24
21
|
"kind": "foundation",
|
|
25
|
-
"requirement": "Prefer native platform semantics; apply WCAG conformance, ARIA only where needed, APG interaction guidance, then non-conflicting product policy."
|
|
22
|
+
"requirement": "Prefer native platform semantics; apply WCAG conformance, ARIA only where needed, APG interaction guidance, then non-conflicting product policy.",
|
|
23
|
+
"title": "Standards hierarchy",
|
|
24
|
+
"version": "1.0.0"
|
|
26
25
|
},
|
|
27
26
|
{
|
|
28
27
|
"id": "foundation.wcag-2.2",
|
|
29
|
-
"version": "1.0.0",
|
|
30
|
-
"title": "WCAG 2.2 AA baseline",
|
|
31
28
|
"kind": "foundation",
|
|
32
|
-
"requirement": "Meet WCAG 2.2 Level A and AA. Target size minimum is 24 by 24 CSS pixels or an allowed exception; 44 by 44 is enhanced guidance only."
|
|
29
|
+
"requirement": "Meet WCAG 2.2 Level A and AA. Target size minimum is 24 by 24 CSS pixels or an allowed exception; 44 by 44 is enhanced guidance only.",
|
|
30
|
+
"title": "WCAG 2.2 AA baseline",
|
|
31
|
+
"version": "1.0.0"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"policies": [
|
|
35
|
+
{
|
|
36
|
+
"id": "policy.enhanced-quality",
|
|
37
|
+
"kind": "policy",
|
|
38
|
+
"requirement": "Enhanced guidance is advisory and cannot be represented as a conformance failure unless the consumer explicitly adopts it as product policy.",
|
|
39
|
+
"title": "Enhanced quality",
|
|
40
|
+
"version": "1.0.0"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "policy.target-size",
|
|
44
|
+
"kind": "policy",
|
|
45
|
+
"requirement": "Enforce WCAG 2.5.8 at 24 by 24 CSS pixels or a documented exception; report 44 by 44 as enhanced guidance, never as the AA minimum.",
|
|
46
|
+
"title": "Target size policy",
|
|
47
|
+
"version": "1.0.0"
|
|
33
48
|
}
|
|
34
49
|
],
|
|
50
|
+
"schema_version": 3,
|
|
35
51
|
"semantics": [
|
|
52
|
+
{
|
|
53
|
+
"id": "semantics.accessible-authentication",
|
|
54
|
+
"kind": "semantic",
|
|
55
|
+
"proof": [
|
|
56
|
+
"e2e",
|
|
57
|
+
"human"
|
|
58
|
+
],
|
|
59
|
+
"requirement": "Do not require a cognitive function test at any authentication step unless that step provides a non-cognitive alternative or an assistive mechanism such as password-manager support or copy and paste, including pasting a complete one-time code, or the test is limited to the object-recognition or user-provided personal-content exception.",
|
|
60
|
+
"standards_refs": [
|
|
61
|
+
{
|
|
62
|
+
"authority": "wcag-2.2",
|
|
63
|
+
"identifier": "3.3.8",
|
|
64
|
+
"level": "AA",
|
|
65
|
+
"normative": true,
|
|
66
|
+
"url": "https://www.w3.org/TR/WCAG22/#accessible-authentication-minimum"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"authority": "wcag-2.2-understanding",
|
|
70
|
+
"identifier": "3.3.8",
|
|
71
|
+
"level": "AA",
|
|
72
|
+
"normative": false,
|
|
73
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/accessible-authentication-minimum.html"
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"title": "Accessible authentication",
|
|
77
|
+
"version": "1.0.0"
|
|
78
|
+
},
|
|
36
79
|
{
|
|
37
80
|
"id": "semantics.accessible-name",
|
|
38
|
-
"version": "1.0.0",
|
|
39
|
-
"title": "Accessible name",
|
|
40
81
|
"kind": "semantic",
|
|
41
|
-
"requirement": "Every interactive or meaning-bearing control has a concise programmatic name derived from visible text when available.",
|
|
42
82
|
"proof": [
|
|
43
83
|
"unit",
|
|
44
84
|
"axe",
|
|
45
85
|
"human"
|
|
46
|
-
]
|
|
86
|
+
],
|
|
87
|
+
"requirement": "Every interactive or meaning-bearing control has a concise programmatic name. For user interface components whose visible labels include text or images of text, the accessible name contains the text presented visually; preserve that text's order where practical.",
|
|
88
|
+
"standards_refs": [
|
|
89
|
+
{
|
|
90
|
+
"authority": "wcag-2.2",
|
|
91
|
+
"identifier": "2.5.3",
|
|
92
|
+
"level": "A",
|
|
93
|
+
"normative": true,
|
|
94
|
+
"url": "https://www.w3.org/TR/WCAG22/#label-in-name"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"authority": "wcag-2.2",
|
|
98
|
+
"identifier": "4.1.2",
|
|
99
|
+
"level": "A",
|
|
100
|
+
"normative": true,
|
|
101
|
+
"url": "https://www.w3.org/TR/WCAG22/#name-role-value"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"authority": "wcag-2.2-understanding",
|
|
105
|
+
"identifier": "2.5.3",
|
|
106
|
+
"level": "A",
|
|
107
|
+
"normative": false,
|
|
108
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/label-in-name.html"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"authority": "wcag-2.2-understanding",
|
|
112
|
+
"identifier": "4.1.2",
|
|
113
|
+
"level": "A",
|
|
114
|
+
"normative": false,
|
|
115
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html"
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"title": "Accessible name",
|
|
119
|
+
"version": "1.0.0"
|
|
47
120
|
},
|
|
48
121
|
{
|
|
49
122
|
"id": "semantics.alert",
|
|
50
|
-
"version": "1.0.0",
|
|
51
|
-
"title": "Urgent alert",
|
|
52
123
|
"kind": "semantic",
|
|
53
|
-
"requirement": "Use alert semantics only for urgent, time-sensitive messages that require immediate announcement.",
|
|
54
124
|
"proof": [
|
|
55
125
|
"unit",
|
|
56
126
|
"human"
|
|
57
|
-
]
|
|
127
|
+
],
|
|
128
|
+
"requirement": "Use alert semantics only for urgent, time-sensitive messages that require immediate announcement.",
|
|
129
|
+
"standards_refs": [
|
|
130
|
+
{
|
|
131
|
+
"authority": "aria-apg",
|
|
132
|
+
"identifier": "alert",
|
|
133
|
+
"normative": false,
|
|
134
|
+
"url": "https://www.w3.org/WAI/ARIA/apg/patterns/alert/"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"authority": "wai-aria-1.2",
|
|
138
|
+
"identifier": "alert",
|
|
139
|
+
"normative": true,
|
|
140
|
+
"url": "https://www.w3.org/TR/wai-aria-1.2/#alert"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"authority": "wcag-2.2",
|
|
144
|
+
"identifier": "4.1.3",
|
|
145
|
+
"level": "AA",
|
|
146
|
+
"normative": true,
|
|
147
|
+
"url": "https://www.w3.org/TR/WCAG22/#status-messages"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"authority": "wcag-2.2-understanding",
|
|
151
|
+
"identifier": "4.1.3",
|
|
152
|
+
"level": "AA",
|
|
153
|
+
"normative": false,
|
|
154
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html"
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
"title": "Urgent alert",
|
|
158
|
+
"version": "1.0.0"
|
|
58
159
|
},
|
|
59
160
|
{
|
|
60
161
|
"id": "semantics.consequential-action",
|
|
61
|
-
"
|
|
162
|
+
"kind": "semantic",
|
|
163
|
+
"proof": [
|
|
164
|
+
"e2e",
|
|
165
|
+
"human"
|
|
166
|
+
],
|
|
167
|
+
"requirement": "For web pages that cause legal commitments or financial transactions, modify or delete user-controllable data in data storage systems, or submit user test responses, at least one safeguard is provided: submissions are reversible; user-entered data is checked for input errors and the user can correct them; or a mechanism lets the user review, confirm, and correct information before finalizing the submission.",
|
|
168
|
+
"standards_refs": [
|
|
169
|
+
{
|
|
170
|
+
"authority": "wcag-2.2",
|
|
171
|
+
"identifier": "3.3.4",
|
|
172
|
+
"level": "AA",
|
|
173
|
+
"normative": true,
|
|
174
|
+
"url": "https://www.w3.org/TR/WCAG22/#error-prevention-legal-financial-data"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"authority": "wcag-2.2-understanding",
|
|
178
|
+
"identifier": "3.3.4",
|
|
179
|
+
"level": "AA",
|
|
180
|
+
"normative": false,
|
|
181
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/error-prevention-legal-financial-data.html"
|
|
182
|
+
}
|
|
183
|
+
],
|
|
62
184
|
"title": "Consequential action",
|
|
185
|
+
"version": "1.0.0"
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"id": "semantics.consistent-help",
|
|
63
189
|
"kind": "semantic",
|
|
64
|
-
"requirement": "Legal, financial, destructive, or data-submitting actions support review, confirmation, or reversal as required.",
|
|
65
190
|
"proof": [
|
|
66
191
|
"e2e",
|
|
67
192
|
"human"
|
|
68
|
-
]
|
|
193
|
+
],
|
|
194
|
+
"requirement": "When human contact details or mechanisms, self-help, or fully automated contact mechanisms repeat across pages in the same set, they occur in the same serialized order relative to other content for the same page variation unless the user initiates a change. This does not require adding help.",
|
|
195
|
+
"standards_refs": [
|
|
196
|
+
{
|
|
197
|
+
"authority": "wcag-2.2",
|
|
198
|
+
"identifier": "3.2.6",
|
|
199
|
+
"level": "A",
|
|
200
|
+
"normative": true,
|
|
201
|
+
"url": "https://www.w3.org/TR/WCAG22/#consistent-help"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"authority": "wcag-2.2-understanding",
|
|
205
|
+
"identifier": "3.2.6",
|
|
206
|
+
"level": "A",
|
|
207
|
+
"normative": false,
|
|
208
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/consistent-help.html"
|
|
209
|
+
}
|
|
210
|
+
],
|
|
211
|
+
"title": "Consistent help",
|
|
212
|
+
"version": "1.0.0"
|
|
69
213
|
},
|
|
70
214
|
{
|
|
71
215
|
"id": "semantics.data-table",
|
|
72
|
-
"version": "1.0.0",
|
|
73
|
-
"title": "Data table",
|
|
74
216
|
"kind": "semantic",
|
|
75
|
-
"requirement": "Tabular relationships use table markup with associated headers; interactive grids implement their full keyboard model.",
|
|
76
217
|
"proof": [
|
|
77
218
|
"axe",
|
|
78
219
|
"e2e",
|
|
79
220
|
"human"
|
|
80
|
-
]
|
|
221
|
+
],
|
|
222
|
+
"requirement": "Tabular relationships use table semantics with programmatically associated row and column headers.",
|
|
223
|
+
"standards_refs": [
|
|
224
|
+
{
|
|
225
|
+
"authority": "aria-apg",
|
|
226
|
+
"identifier": "table",
|
|
227
|
+
"normative": false,
|
|
228
|
+
"url": "https://www.w3.org/WAI/ARIA/apg/patterns/table/"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"authority": "wcag-2.2",
|
|
232
|
+
"identifier": "1.3.1",
|
|
233
|
+
"level": "A",
|
|
234
|
+
"normative": true,
|
|
235
|
+
"url": "https://www.w3.org/TR/WCAG22/#info-and-relationships"
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"authority": "wcag-2.2-understanding",
|
|
239
|
+
"identifier": "1.3.1",
|
|
240
|
+
"level": "A",
|
|
241
|
+
"normative": false,
|
|
242
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html"
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
"title": "Data table",
|
|
246
|
+
"version": "1.0.0"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"id": "semantics.dragging-alternative",
|
|
250
|
+
"kind": "semantic",
|
|
251
|
+
"proof": [
|
|
252
|
+
"e2e",
|
|
253
|
+
"human"
|
|
254
|
+
],
|
|
255
|
+
"requirement": "Author-provided functionality operated by dragging also provides an equivalent single-pointer method that does not require dragging, unless dragging is essential or the functionality is determined by the user agent and not modified by the author.",
|
|
256
|
+
"standards_refs": [
|
|
257
|
+
{
|
|
258
|
+
"authority": "wcag-2.2",
|
|
259
|
+
"identifier": "2.5.7",
|
|
260
|
+
"level": "AA",
|
|
261
|
+
"normative": true,
|
|
262
|
+
"url": "https://www.w3.org/TR/WCAG22/#dragging-movements"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"authority": "wcag-2.2-understanding",
|
|
266
|
+
"identifier": "2.5.7",
|
|
267
|
+
"level": "AA",
|
|
268
|
+
"normative": false,
|
|
269
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/dragging-movements.html"
|
|
270
|
+
}
|
|
271
|
+
],
|
|
272
|
+
"title": "Dragging alternative",
|
|
273
|
+
"version": "1.0.0"
|
|
81
274
|
},
|
|
82
275
|
{
|
|
83
276
|
"id": "semantics.expanded-state",
|
|
84
|
-
"version": "1.0.0",
|
|
85
|
-
"title": "Expanded state",
|
|
86
277
|
"kind": "semantic",
|
|
87
|
-
"requirement": "Expandable controls expose aria-expanded and identify the controlled region when needed.",
|
|
88
278
|
"proof": [
|
|
89
279
|
"unit",
|
|
90
280
|
"axe",
|
|
91
281
|
"e2e"
|
|
92
|
-
]
|
|
282
|
+
],
|
|
283
|
+
"requirement": "Expandable controls expose aria-expanded and identify the controlled region when needed.",
|
|
284
|
+
"standards_refs": [
|
|
285
|
+
{
|
|
286
|
+
"authority": "wai-aria-1.2",
|
|
287
|
+
"identifier": "aria-expanded",
|
|
288
|
+
"normative": true,
|
|
289
|
+
"url": "https://www.w3.org/TR/wai-aria-1.2/#aria-expanded"
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"authority": "wcag-2.2",
|
|
293
|
+
"identifier": "4.1.2",
|
|
294
|
+
"level": "A",
|
|
295
|
+
"normative": true,
|
|
296
|
+
"url": "https://www.w3.org/TR/WCAG22/#name-role-value"
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"authority": "wcag-2.2-understanding",
|
|
300
|
+
"identifier": "4.1.2",
|
|
301
|
+
"level": "A",
|
|
302
|
+
"normative": false,
|
|
303
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html"
|
|
304
|
+
}
|
|
305
|
+
],
|
|
306
|
+
"title": "Expanded state",
|
|
307
|
+
"version": "1.0.0"
|
|
93
308
|
},
|
|
94
309
|
{
|
|
95
310
|
"id": "semantics.focus.initial",
|
|
96
|
-
"version": "1.0.0",
|
|
97
|
-
"title": "Initial focus",
|
|
98
311
|
"kind": "semantic",
|
|
99
|
-
"requirement": "On activation, focus moves to the deterministic target appropriate to the pattern.",
|
|
100
312
|
"proof": [
|
|
101
313
|
"unit",
|
|
102
314
|
"e2e"
|
|
103
|
-
]
|
|
315
|
+
],
|
|
316
|
+
"requirement": "On activation, focus moves to the deterministic target appropriate to the pattern.",
|
|
317
|
+
"standards_refs": [
|
|
318
|
+
{
|
|
319
|
+
"authority": "aria-apg",
|
|
320
|
+
"identifier": "dialog-modal",
|
|
321
|
+
"normative": false,
|
|
322
|
+
"url": "https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/#keyboard_interaction"
|
|
323
|
+
}
|
|
324
|
+
],
|
|
325
|
+
"title": "Initial focus",
|
|
326
|
+
"version": "1.0.0"
|
|
104
327
|
},
|
|
105
328
|
{
|
|
106
329
|
"id": "semantics.focus.return",
|
|
107
|
-
"version": "1.0.0",
|
|
108
|
-
"title": "Focus return",
|
|
109
330
|
"kind": "semantic",
|
|
110
|
-
"requirement": "On dismissal, focus returns to the invoking control or a documented logical successor.",
|
|
111
331
|
"proof": [
|
|
112
332
|
"unit",
|
|
113
333
|
"e2e"
|
|
114
|
-
]
|
|
334
|
+
],
|
|
335
|
+
"requirement": "On dismissal, focus returns to the invoking control or a documented logical successor.",
|
|
336
|
+
"standards_refs": [
|
|
337
|
+
{
|
|
338
|
+
"authority": "aria-apg",
|
|
339
|
+
"identifier": "dialog-modal",
|
|
340
|
+
"normative": false,
|
|
341
|
+
"url": "https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/#keyboard_interaction"
|
|
342
|
+
}
|
|
343
|
+
],
|
|
344
|
+
"title": "Focus return",
|
|
345
|
+
"version": "1.0.0"
|
|
115
346
|
},
|
|
116
347
|
{
|
|
117
348
|
"id": "semantics.focus.visible",
|
|
118
|
-
"version": "1.0.0",
|
|
119
|
-
"title": "Visible focus",
|
|
120
349
|
"kind": "semantic",
|
|
121
|
-
"requirement": "Keyboard focus is visible, sufficiently contrasted, and not fully obscured.",
|
|
122
350
|
"proof": [
|
|
123
351
|
"e2e",
|
|
124
352
|
"human"
|
|
125
|
-
]
|
|
353
|
+
],
|
|
354
|
+
"requirement": "A visible keyboard focus indicator is available, and focused components are not entirely hidden by author-created content.",
|
|
355
|
+
"standards_refs": [
|
|
356
|
+
{
|
|
357
|
+
"authority": "wcag-2.2",
|
|
358
|
+
"identifier": "2.4.11",
|
|
359
|
+
"level": "AA",
|
|
360
|
+
"normative": true,
|
|
361
|
+
"url": "https://www.w3.org/TR/WCAG22/#focus-not-obscured-minimum"
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"authority": "wcag-2.2",
|
|
365
|
+
"identifier": "2.4.7",
|
|
366
|
+
"level": "AA",
|
|
367
|
+
"normative": true,
|
|
368
|
+
"url": "https://www.w3.org/TR/WCAG22/#focus-visible"
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"authority": "wcag-2.2-understanding",
|
|
372
|
+
"identifier": "2.4.11",
|
|
373
|
+
"level": "AA",
|
|
374
|
+
"normative": false,
|
|
375
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html"
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"authority": "wcag-2.2-understanding",
|
|
379
|
+
"identifier": "2.4.7",
|
|
380
|
+
"level": "AA",
|
|
381
|
+
"normative": false,
|
|
382
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/focus-visible.html"
|
|
383
|
+
}
|
|
384
|
+
],
|
|
385
|
+
"title": "Visible focus",
|
|
386
|
+
"version": "1.0.0"
|
|
126
387
|
},
|
|
127
388
|
{
|
|
128
389
|
"id": "semantics.form-error",
|
|
129
|
-
"version": "1.0.0",
|
|
130
|
-
"title": "Form error",
|
|
131
390
|
"kind": "semantic",
|
|
132
|
-
"requirement": "Identify errors in text, associate them with fields, and provide correction guidance.",
|
|
133
391
|
"proof": [
|
|
134
392
|
"unit",
|
|
135
393
|
"axe",
|
|
136
394
|
"e2e",
|
|
137
395
|
"human"
|
|
138
|
-
]
|
|
396
|
+
],
|
|
397
|
+
"requirement": "When an input error is automatically detected, identify the item in error and describe the error to the user in text. When correction suggestions are known, provide them unless doing so would jeopardize the security or purpose of the content.",
|
|
398
|
+
"standards_refs": [
|
|
399
|
+
{
|
|
400
|
+
"authority": "wcag-2.2",
|
|
401
|
+
"identifier": "3.3.1",
|
|
402
|
+
"level": "A",
|
|
403
|
+
"normative": true,
|
|
404
|
+
"url": "https://www.w3.org/TR/WCAG22/#error-identification"
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"authority": "wcag-2.2",
|
|
408
|
+
"identifier": "3.3.3",
|
|
409
|
+
"level": "AA",
|
|
410
|
+
"normative": true,
|
|
411
|
+
"url": "https://www.w3.org/TR/WCAG22/#error-suggestion"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"authority": "wcag-2.2-understanding",
|
|
415
|
+
"identifier": "3.3.1",
|
|
416
|
+
"level": "A",
|
|
417
|
+
"normative": false,
|
|
418
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/error-identification.html"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"authority": "wcag-2.2-understanding",
|
|
422
|
+
"identifier": "3.3.3",
|
|
423
|
+
"level": "AA",
|
|
424
|
+
"normative": false,
|
|
425
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/error-suggestion.html"
|
|
426
|
+
}
|
|
427
|
+
],
|
|
428
|
+
"title": "Form error",
|
|
429
|
+
"version": "1.0.0"
|
|
139
430
|
},
|
|
140
431
|
{
|
|
141
432
|
"id": "semantics.form-label",
|
|
142
|
-
"version": "1.0.0",
|
|
143
|
-
"title": "Form label",
|
|
144
433
|
"kind": "semantic",
|
|
145
|
-
"requirement": "Every form control has a persistent programmatically associated label.",
|
|
146
434
|
"proof": [
|
|
147
435
|
"unit",
|
|
148
436
|
"axe"
|
|
149
|
-
]
|
|
437
|
+
],
|
|
438
|
+
"requirement": "Every form control has a persistent programmatically associated label.",
|
|
439
|
+
"standards_refs": [
|
|
440
|
+
{
|
|
441
|
+
"authority": "wcag-2.2",
|
|
442
|
+
"identifier": "1.3.1",
|
|
443
|
+
"level": "A",
|
|
444
|
+
"normative": true,
|
|
445
|
+
"url": "https://www.w3.org/TR/WCAG22/#info-and-relationships"
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
"authority": "wcag-2.2",
|
|
449
|
+
"identifier": "3.3.2",
|
|
450
|
+
"level": "A",
|
|
451
|
+
"normative": true,
|
|
452
|
+
"url": "https://www.w3.org/TR/WCAG22/#labels-or-instructions"
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"authority": "wcag-2.2-understanding",
|
|
456
|
+
"identifier": "1.3.1",
|
|
457
|
+
"level": "A",
|
|
458
|
+
"normative": false,
|
|
459
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html"
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"authority": "wcag-2.2-understanding",
|
|
463
|
+
"identifier": "3.3.2",
|
|
464
|
+
"level": "A",
|
|
465
|
+
"normative": false,
|
|
466
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/labels-or-instructions.html"
|
|
467
|
+
}
|
|
468
|
+
],
|
|
469
|
+
"title": "Form label",
|
|
470
|
+
"version": "1.0.0"
|
|
150
471
|
},
|
|
151
472
|
{
|
|
152
473
|
"id": "semantics.form-required",
|
|
153
|
-
"version": "1.0.0",
|
|
154
|
-
"title": "Required field",
|
|
155
474
|
"kind": "semantic",
|
|
156
|
-
"requirement": "Requiredness is communicated visually and programmatically before submission.",
|
|
157
475
|
"proof": [
|
|
158
476
|
"unit",
|
|
159
477
|
"axe"
|
|
160
|
-
]
|
|
478
|
+
],
|
|
479
|
+
"requirement": "Requiredness is communicated visually and programmatically before submission.",
|
|
480
|
+
"standards_refs": [
|
|
481
|
+
{
|
|
482
|
+
"authority": "wcag-2.2",
|
|
483
|
+
"identifier": "1.3.1",
|
|
484
|
+
"level": "A",
|
|
485
|
+
"normative": true,
|
|
486
|
+
"url": "https://www.w3.org/TR/WCAG22/#info-and-relationships"
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"authority": "wcag-2.2",
|
|
490
|
+
"identifier": "3.3.2",
|
|
491
|
+
"level": "A",
|
|
492
|
+
"normative": true,
|
|
493
|
+
"url": "https://www.w3.org/TR/WCAG22/#labels-or-instructions"
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"authority": "wcag-2.2-understanding",
|
|
497
|
+
"identifier": "1.3.1",
|
|
498
|
+
"level": "A",
|
|
499
|
+
"normative": false,
|
|
500
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html"
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"authority": "wcag-2.2-understanding",
|
|
504
|
+
"identifier": "3.3.2",
|
|
505
|
+
"level": "A",
|
|
506
|
+
"normative": false,
|
|
507
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/labels-or-instructions.html"
|
|
508
|
+
}
|
|
509
|
+
],
|
|
510
|
+
"title": "Required field",
|
|
511
|
+
"version": "1.0.0"
|
|
161
512
|
},
|
|
162
513
|
{
|
|
163
514
|
"id": "semantics.headings",
|
|
164
|
-
"version": "1.0.0",
|
|
165
|
-
"title": "Heading structure",
|
|
166
515
|
"kind": "semantic",
|
|
167
|
-
"requirement": "Headings describe document structure without choosing levels for visual appearance.",
|
|
168
516
|
"proof": [
|
|
169
517
|
"axe",
|
|
170
518
|
"human"
|
|
171
|
-
]
|
|
519
|
+
],
|
|
520
|
+
"requirement": "Headings describe document structure without choosing levels for visual appearance.",
|
|
521
|
+
"standards_refs": [
|
|
522
|
+
{
|
|
523
|
+
"authority": "wcag-2.2",
|
|
524
|
+
"identifier": "1.3.1",
|
|
525
|
+
"level": "A",
|
|
526
|
+
"normative": true,
|
|
527
|
+
"url": "https://www.w3.org/TR/WCAG22/#info-and-relationships"
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"authority": "wcag-2.2",
|
|
531
|
+
"identifier": "2.4.6",
|
|
532
|
+
"level": "AA",
|
|
533
|
+
"normative": true,
|
|
534
|
+
"url": "https://www.w3.org/TR/WCAG22/#headings-and-labels"
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
"authority": "wcag-2.2-understanding",
|
|
538
|
+
"identifier": "1.3.1",
|
|
539
|
+
"level": "A",
|
|
540
|
+
"normative": false,
|
|
541
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html"
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"authority": "wcag-2.2-understanding",
|
|
545
|
+
"identifier": "2.4.6",
|
|
546
|
+
"level": "AA",
|
|
547
|
+
"normative": false,
|
|
548
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/headings-and-labels.html"
|
|
549
|
+
}
|
|
550
|
+
],
|
|
551
|
+
"title": "Heading structure",
|
|
552
|
+
"version": "1.0.0"
|
|
172
553
|
},
|
|
173
554
|
{
|
|
174
555
|
"id": "semantics.keyboard",
|
|
175
|
-
"version": "1.0.0",
|
|
176
|
-
"title": "Keyboard operation",
|
|
177
556
|
"kind": "semantic",
|
|
178
|
-
"requirement": "All functionality is operable with a keyboard without traps.",
|
|
179
557
|
"proof": [
|
|
180
558
|
"e2e",
|
|
181
559
|
"human"
|
|
182
|
-
]
|
|
560
|
+
],
|
|
561
|
+
"requirement": "All functionality is operable with a keyboard without traps.",
|
|
562
|
+
"standards_refs": [
|
|
563
|
+
{
|
|
564
|
+
"authority": "wcag-2.2",
|
|
565
|
+
"identifier": "2.1.1",
|
|
566
|
+
"level": "A",
|
|
567
|
+
"normative": true,
|
|
568
|
+
"url": "https://www.w3.org/TR/WCAG22/#keyboard"
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
"authority": "wcag-2.2",
|
|
572
|
+
"identifier": "2.1.2",
|
|
573
|
+
"level": "A",
|
|
574
|
+
"normative": true,
|
|
575
|
+
"url": "https://www.w3.org/TR/WCAG22/#no-keyboard-trap"
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"authority": "wcag-2.2-understanding",
|
|
579
|
+
"identifier": "2.1.1",
|
|
580
|
+
"level": "A",
|
|
581
|
+
"normative": false,
|
|
582
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/keyboard.html"
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
"authority": "wcag-2.2-understanding",
|
|
586
|
+
"identifier": "2.1.2",
|
|
587
|
+
"level": "A",
|
|
588
|
+
"normative": false,
|
|
589
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/no-keyboard-trap.html"
|
|
590
|
+
}
|
|
591
|
+
],
|
|
592
|
+
"title": "Keyboard operation",
|
|
593
|
+
"version": "1.0.0"
|
|
183
594
|
},
|
|
184
595
|
{
|
|
185
596
|
"id": "semantics.keyboard.escape",
|
|
186
|
-
"version": "1.0.0",
|
|
187
|
-
"title": "Escape dismissal",
|
|
188
597
|
"kind": "semantic",
|
|
189
|
-
"requirement": "Escape closes the topmost dismissible overlay without activating its trigger.",
|
|
190
598
|
"proof": [
|
|
191
599
|
"unit",
|
|
192
600
|
"e2e"
|
|
193
|
-
]
|
|
601
|
+
],
|
|
602
|
+
"requirement": "Escape closes the topmost dismissible overlay without activating its trigger.",
|
|
603
|
+
"standards_refs": [
|
|
604
|
+
{
|
|
605
|
+
"authority": "aria-apg",
|
|
606
|
+
"identifier": "dialog-modal",
|
|
607
|
+
"normative": false,
|
|
608
|
+
"url": "https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/#keyboard_interaction"
|
|
609
|
+
}
|
|
610
|
+
],
|
|
611
|
+
"title": "Escape dismissal",
|
|
612
|
+
"version": "1.0.0"
|
|
194
613
|
},
|
|
195
614
|
{
|
|
196
615
|
"id": "semantics.landmarks",
|
|
197
|
-
"version": "1.0.0",
|
|
198
|
-
"title": "Landmarks",
|
|
199
616
|
"kind": "semantic",
|
|
200
|
-
"requirement": "Use native landmarks and name repeated landmarks only when a name is required to distinguish them.",
|
|
201
617
|
"proof": [
|
|
202
618
|
"axe",
|
|
203
619
|
"human"
|
|
204
|
-
]
|
|
620
|
+
],
|
|
621
|
+
"requirement": "Use native landmarks and name repeated landmarks only when a name is required to distinguish them.",
|
|
622
|
+
"standards_refs": [
|
|
623
|
+
{
|
|
624
|
+
"authority": "aria-apg",
|
|
625
|
+
"identifier": "landmark-regions",
|
|
626
|
+
"normative": false,
|
|
627
|
+
"url": "https://www.w3.org/WAI/ARIA/apg/practices/landmark-regions/"
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
"authority": "wcag-2.2",
|
|
631
|
+
"identifier": "1.3.1",
|
|
632
|
+
"level": "A",
|
|
633
|
+
"normative": true,
|
|
634
|
+
"url": "https://www.w3.org/TR/WCAG22/#info-and-relationships"
|
|
635
|
+
},
|
|
636
|
+
{
|
|
637
|
+
"authority": "wcag-2.2-understanding",
|
|
638
|
+
"identifier": "1.3.1",
|
|
639
|
+
"level": "A",
|
|
640
|
+
"normative": false,
|
|
641
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/info-and-relationships.html"
|
|
642
|
+
}
|
|
643
|
+
],
|
|
644
|
+
"title": "Landmarks",
|
|
645
|
+
"version": "1.0.0"
|
|
205
646
|
},
|
|
206
647
|
{
|
|
207
648
|
"id": "semantics.live-status",
|
|
208
|
-
"version": "1.0.0",
|
|
209
|
-
"title": "Status announcements",
|
|
210
649
|
"kind": "semantic",
|
|
211
|
-
"requirement": "Important asynchronous status updates are exposed through a correctly scoped, non-duplicative live region.",
|
|
212
650
|
"proof": [
|
|
213
651
|
"unit",
|
|
214
652
|
"e2e",
|
|
215
653
|
"human"
|
|
216
|
-
]
|
|
654
|
+
],
|
|
655
|
+
"requirement": "Status messages that can be programmatically determined are exposed to assistive technology through appropriate roles or properties without receiving focus, using correctly scoped and non-duplicative live regions where needed.",
|
|
656
|
+
"standards_refs": [
|
|
657
|
+
{
|
|
658
|
+
"authority": "wai-aria-1.2",
|
|
659
|
+
"identifier": "status",
|
|
660
|
+
"normative": true,
|
|
661
|
+
"url": "https://www.w3.org/TR/wai-aria-1.2/#status"
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
"authority": "wcag-2.2",
|
|
665
|
+
"identifier": "4.1.3",
|
|
666
|
+
"level": "AA",
|
|
667
|
+
"normative": true,
|
|
668
|
+
"url": "https://www.w3.org/TR/WCAG22/#status-messages"
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
"authority": "wcag-2.2-understanding",
|
|
672
|
+
"identifier": "4.1.3",
|
|
673
|
+
"level": "AA",
|
|
674
|
+
"normative": false,
|
|
675
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/status-messages.html"
|
|
676
|
+
}
|
|
677
|
+
],
|
|
678
|
+
"title": "Status announcements",
|
|
679
|
+
"version": "1.0.0"
|
|
217
680
|
},
|
|
218
681
|
{
|
|
219
682
|
"id": "semantics.media-alternatives",
|
|
220
|
-
"version": "1.0.0",
|
|
221
|
-
"title": "Media alternatives",
|
|
222
683
|
"kind": "semantic",
|
|
223
|
-
"requirement": "Prerecorded media provides applicable captions, transcripts, and audio description.",
|
|
224
684
|
"proof": [
|
|
225
685
|
"human"
|
|
226
|
-
]
|
|
686
|
+
],
|
|
687
|
+
"requirement": "Prerecorded media provides applicable captions, transcripts, and audio description.",
|
|
688
|
+
"standards_refs": [
|
|
689
|
+
{
|
|
690
|
+
"authority": "wcag-2.2",
|
|
691
|
+
"identifier": "1.2.1",
|
|
692
|
+
"level": "A",
|
|
693
|
+
"normative": true,
|
|
694
|
+
"url": "https://www.w3.org/TR/WCAG22/#audio-only-and-video-only-prerecorded"
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
"authority": "wcag-2.2",
|
|
698
|
+
"identifier": "1.2.2",
|
|
699
|
+
"level": "A",
|
|
700
|
+
"normative": true,
|
|
701
|
+
"url": "https://www.w3.org/TR/WCAG22/#captions-prerecorded"
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
"authority": "wcag-2.2",
|
|
705
|
+
"identifier": "1.2.3",
|
|
706
|
+
"level": "A",
|
|
707
|
+
"normative": true,
|
|
708
|
+
"url": "https://www.w3.org/TR/WCAG22/#audio-description-or-media-alternative-prerecorded"
|
|
709
|
+
},
|
|
710
|
+
{
|
|
711
|
+
"authority": "wcag-2.2",
|
|
712
|
+
"identifier": "1.2.5",
|
|
713
|
+
"level": "AA",
|
|
714
|
+
"normative": true,
|
|
715
|
+
"url": "https://www.w3.org/TR/WCAG22/#audio-description-prerecorded"
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
"authority": "wcag-2.2-understanding",
|
|
719
|
+
"identifier": "1.2.1",
|
|
720
|
+
"level": "A",
|
|
721
|
+
"normative": false,
|
|
722
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/audio-only-and-video-only-prerecorded.html"
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
"authority": "wcag-2.2-understanding",
|
|
726
|
+
"identifier": "1.2.2",
|
|
727
|
+
"level": "A",
|
|
728
|
+
"normative": false,
|
|
729
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/captions-prerecorded.html"
|
|
730
|
+
},
|
|
731
|
+
{
|
|
732
|
+
"authority": "wcag-2.2-understanding",
|
|
733
|
+
"identifier": "1.2.3",
|
|
734
|
+
"level": "A",
|
|
735
|
+
"normative": false,
|
|
736
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/audio-description-or-media-alternative-prerecorded.html"
|
|
737
|
+
},
|
|
738
|
+
{
|
|
739
|
+
"authority": "wcag-2.2-understanding",
|
|
740
|
+
"identifier": "1.2.5",
|
|
741
|
+
"level": "AA",
|
|
742
|
+
"normative": false,
|
|
743
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/audio-description-prerecorded.html"
|
|
744
|
+
}
|
|
745
|
+
],
|
|
746
|
+
"title": "Media alternatives",
|
|
747
|
+
"version": "1.0.0"
|
|
227
748
|
},
|
|
228
749
|
{
|
|
229
750
|
"id": "semantics.motion-control",
|
|
230
|
-
"version": "1.0.0",
|
|
231
|
-
"title": "Motion control",
|
|
232
751
|
"kind": "semantic",
|
|
233
|
-
"requirement": "Respect reduced-motion preferences and provide controls for moving or time-limited content where required.",
|
|
234
752
|
"proof": [
|
|
235
753
|
"e2e",
|
|
236
754
|
"human"
|
|
237
|
-
]
|
|
755
|
+
],
|
|
756
|
+
"requirement": "Moving, blinking, or scrolling content that starts automatically, lasts more than five seconds, and appears alongside other content provides pause, stop, or hide controls unless essential. Automatically starting, parallel auto-updating content provides pause, stop, or hide controls or lets the user control update frequency unless essential. Honor reduced-motion preferences as a mechanism for disabling non-essential interaction-triggered animation.",
|
|
757
|
+
"standards_refs": [
|
|
758
|
+
{
|
|
759
|
+
"authority": "wcag-2.2",
|
|
760
|
+
"identifier": "2.2.2",
|
|
761
|
+
"level": "A",
|
|
762
|
+
"normative": true,
|
|
763
|
+
"url": "https://www.w3.org/TR/WCAG22/#pause-stop-hide"
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
"authority": "wcag-2.2",
|
|
767
|
+
"identifier": "2.3.3",
|
|
768
|
+
"level": "AAA",
|
|
769
|
+
"normative": true,
|
|
770
|
+
"url": "https://www.w3.org/TR/WCAG22/#animation-from-interactions"
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
"authority": "wcag-2.2-understanding",
|
|
774
|
+
"identifier": "2.2.2",
|
|
775
|
+
"level": "A",
|
|
776
|
+
"normative": false,
|
|
777
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/pause-stop-hide.html"
|
|
778
|
+
},
|
|
779
|
+
{
|
|
780
|
+
"authority": "wcag-2.2-understanding",
|
|
781
|
+
"identifier": "2.3.3",
|
|
782
|
+
"level": "AAA",
|
|
783
|
+
"normative": false,
|
|
784
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/animation-from-interactions.html"
|
|
785
|
+
}
|
|
786
|
+
],
|
|
787
|
+
"title": "Motion control",
|
|
788
|
+
"version": "1.0.0"
|
|
238
789
|
},
|
|
239
790
|
{
|
|
240
791
|
"id": "semantics.name-role-value",
|
|
241
|
-
"version": "1.0.0",
|
|
242
|
-
"title": "Name role value",
|
|
243
792
|
"kind": "semantic",
|
|
244
|
-
"requirement": "Expose the correct accessible name, role, value, and state through the platform accessibility API.",
|
|
245
793
|
"proof": [
|
|
246
794
|
"unit",
|
|
247
795
|
"axe",
|
|
248
796
|
"human"
|
|
249
|
-
]
|
|
797
|
+
],
|
|
798
|
+
"requirement": "For every user interface component, the name and role can be programmatically determined; states, properties, and values that users can set can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.",
|
|
799
|
+
"standards_refs": [
|
|
800
|
+
{
|
|
801
|
+
"authority": "wcag-2.2",
|
|
802
|
+
"identifier": "4.1.2",
|
|
803
|
+
"level": "A",
|
|
804
|
+
"normative": true,
|
|
805
|
+
"url": "https://www.w3.org/TR/WCAG22/#name-role-value"
|
|
806
|
+
},
|
|
807
|
+
{
|
|
808
|
+
"authority": "wcag-2.2-understanding",
|
|
809
|
+
"identifier": "4.1.2",
|
|
810
|
+
"level": "A",
|
|
811
|
+
"normative": false,
|
|
812
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html"
|
|
813
|
+
}
|
|
814
|
+
],
|
|
815
|
+
"title": "Name role value",
|
|
816
|
+
"version": "1.0.0"
|
|
250
817
|
},
|
|
251
818
|
{
|
|
252
819
|
"id": "semantics.native-dialog",
|
|
253
|
-
"version": "1.0.0",
|
|
254
|
-
"title": "Native dialog semantics",
|
|
255
820
|
"kind": "semantic",
|
|
256
|
-
"requirement": "Use dialog semantics with a programmatic name and modal state only when interaction is modal.",
|
|
257
821
|
"proof": [
|
|
258
822
|
"axe",
|
|
259
823
|
"e2e",
|
|
260
824
|
"human"
|
|
261
|
-
]
|
|
825
|
+
],
|
|
826
|
+
"requirement": "Use dialog semantics with a programmatic name and modal state only when interaction is modal.",
|
|
827
|
+
"standards_refs": [
|
|
828
|
+
{
|
|
829
|
+
"authority": "aria-apg",
|
|
830
|
+
"identifier": "dialog-modal",
|
|
831
|
+
"normative": false,
|
|
832
|
+
"url": "https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/"
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
"authority": "wai-aria-1.2",
|
|
836
|
+
"identifier": "dialog",
|
|
837
|
+
"normative": true,
|
|
838
|
+
"url": "https://www.w3.org/TR/wai-aria-1.2/#dialog"
|
|
839
|
+
},
|
|
840
|
+
{
|
|
841
|
+
"authority": "wcag-2.2",
|
|
842
|
+
"identifier": "4.1.2",
|
|
843
|
+
"level": "A",
|
|
844
|
+
"normative": true,
|
|
845
|
+
"url": "https://www.w3.org/TR/WCAG22/#name-role-value"
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
"authority": "wcag-2.2-understanding",
|
|
849
|
+
"identifier": "4.1.2",
|
|
850
|
+
"level": "A",
|
|
851
|
+
"normative": false,
|
|
852
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html"
|
|
853
|
+
}
|
|
854
|
+
],
|
|
855
|
+
"title": "Native dialog semantics",
|
|
856
|
+
"version": "1.0.0"
|
|
262
857
|
},
|
|
263
858
|
{
|
|
264
859
|
"id": "semantics.native-elements",
|
|
265
|
-
"version": "1.0.0",
|
|
266
|
-
"title": "Native elements",
|
|
267
860
|
"kind": "semantic",
|
|
268
|
-
"requirement": "Use the native HTML element whose semantics and behavior match the control before adding ARIA.",
|
|
269
861
|
"proof": [
|
|
270
862
|
"axe",
|
|
271
863
|
"human"
|
|
272
|
-
]
|
|
864
|
+
],
|
|
865
|
+
"requirement": "Use the native HTML element whose semantics and behavior match the control before adding ARIA.",
|
|
866
|
+
"standards_refs": [
|
|
867
|
+
{
|
|
868
|
+
"authority": "aria-apg",
|
|
869
|
+
"identifier": "read-me-first",
|
|
870
|
+
"normative": false,
|
|
871
|
+
"url": "https://www.w3.org/WAI/ARIA/apg/practices/read-me-first/"
|
|
872
|
+
},
|
|
873
|
+
{
|
|
874
|
+
"authority": "wai-aria-1.2",
|
|
875
|
+
"identifier": "host_general_conflict",
|
|
876
|
+
"normative": true,
|
|
877
|
+
"url": "https://www.w3.org/TR/wai-aria-1.2/#host_general_conflict"
|
|
878
|
+
}
|
|
879
|
+
],
|
|
880
|
+
"title": "Native elements",
|
|
881
|
+
"version": "1.0.0"
|
|
273
882
|
},
|
|
274
883
|
{
|
|
275
884
|
"id": "semantics.non-text-alternative",
|
|
276
|
-
"version": "1.0.0",
|
|
277
|
-
"title": "Non-text alternative",
|
|
278
885
|
"kind": "semantic",
|
|
279
|
-
"requirement": "Meaningful non-text content has an equivalent alternative and decorative content is ignored by assistive technology.",
|
|
280
886
|
"proof": [
|
|
281
887
|
"axe",
|
|
282
888
|
"human"
|
|
283
|
-
]
|
|
889
|
+
],
|
|
890
|
+
"requirement": "Meaningful non-text content has an equivalent alternative and decorative content is ignored by assistive technology.",
|
|
891
|
+
"standards_refs": [
|
|
892
|
+
{
|
|
893
|
+
"authority": "wcag-2.2",
|
|
894
|
+
"identifier": "1.1.1",
|
|
895
|
+
"level": "A",
|
|
896
|
+
"normative": true,
|
|
897
|
+
"url": "https://www.w3.org/TR/WCAG22/#non-text-content"
|
|
898
|
+
},
|
|
899
|
+
{
|
|
900
|
+
"authority": "wcag-2.2-understanding",
|
|
901
|
+
"identifier": "1.1.1",
|
|
902
|
+
"level": "A",
|
|
903
|
+
"normative": false,
|
|
904
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/non-text-content.html"
|
|
905
|
+
}
|
|
906
|
+
],
|
|
907
|
+
"title": "Non-text alternative",
|
|
908
|
+
"version": "1.0.0"
|
|
909
|
+
},
|
|
910
|
+
{
|
|
911
|
+
"id": "semantics.redundant-entry",
|
|
912
|
+
"kind": "semantic",
|
|
913
|
+
"proof": [
|
|
914
|
+
"e2e",
|
|
915
|
+
"human"
|
|
916
|
+
],
|
|
917
|
+
"requirement": "Information previously entered by or provided to the user and required again in the same process is auto-populated or available to select, unless re-entry is essential, required for security, or the prior information is no longer valid.",
|
|
918
|
+
"standards_refs": [
|
|
919
|
+
{
|
|
920
|
+
"authority": "wcag-2.2",
|
|
921
|
+
"identifier": "3.3.7",
|
|
922
|
+
"level": "A",
|
|
923
|
+
"normative": true,
|
|
924
|
+
"url": "https://www.w3.org/TR/WCAG22/#redundant-entry"
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
"authority": "wcag-2.2-understanding",
|
|
928
|
+
"identifier": "3.3.7",
|
|
929
|
+
"level": "A",
|
|
930
|
+
"normative": false,
|
|
931
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/redundant-entry.html"
|
|
932
|
+
}
|
|
933
|
+
],
|
|
934
|
+
"title": "Redundant entry",
|
|
935
|
+
"version": "1.0.0"
|
|
284
936
|
},
|
|
285
937
|
{
|
|
286
938
|
"id": "semantics.roles-states-properties",
|
|
287
|
-
"version": "1.0.0",
|
|
288
|
-
"title": "Roles states and properties",
|
|
289
939
|
"kind": "semantic",
|
|
290
|
-
"requirement": "Apply only valid ARIA roles, states, and properties and keep exposed state synchronized with rendered behavior.",
|
|
291
940
|
"proof": [
|
|
292
941
|
"unit",
|
|
293
942
|
"axe",
|
|
294
943
|
"e2e"
|
|
295
|
-
]
|
|
944
|
+
],
|
|
945
|
+
"requirement": "Apply only valid ARIA roles, states, and properties and keep exposed state synchronized with rendered behavior.",
|
|
946
|
+
"standards_refs": [
|
|
947
|
+
{
|
|
948
|
+
"authority": "wai-aria-1.2",
|
|
949
|
+
"identifier": "roles",
|
|
950
|
+
"normative": true,
|
|
951
|
+
"url": "https://www.w3.org/TR/wai-aria-1.2/#roles"
|
|
952
|
+
},
|
|
953
|
+
{
|
|
954
|
+
"authority": "wcag-2.2",
|
|
955
|
+
"identifier": "4.1.2",
|
|
956
|
+
"level": "A",
|
|
957
|
+
"normative": true,
|
|
958
|
+
"url": "https://www.w3.org/TR/WCAG22/#name-role-value"
|
|
959
|
+
},
|
|
960
|
+
{
|
|
961
|
+
"authority": "wcag-2.2-understanding",
|
|
962
|
+
"identifier": "4.1.2",
|
|
963
|
+
"level": "A",
|
|
964
|
+
"normative": false,
|
|
965
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html"
|
|
966
|
+
}
|
|
967
|
+
],
|
|
968
|
+
"title": "Roles states and properties",
|
|
969
|
+
"version": "1.0.0"
|
|
296
970
|
},
|
|
297
971
|
{
|
|
298
972
|
"id": "semantics.selected-state",
|
|
299
|
-
"version": "1.0.0",
|
|
300
|
-
"title": "Selected state",
|
|
301
973
|
"kind": "semantic",
|
|
302
|
-
"requirement": "Selection widgets expose current selection with the state required by their role.",
|
|
303
974
|
"proof": [
|
|
304
975
|
"unit",
|
|
305
976
|
"e2e"
|
|
306
|
-
]
|
|
977
|
+
],
|
|
978
|
+
"requirement": "Selection widgets expose current selection with the state required by their role.",
|
|
979
|
+
"standards_refs": [
|
|
980
|
+
{
|
|
981
|
+
"authority": "wai-aria-1.2",
|
|
982
|
+
"identifier": "aria-selected",
|
|
983
|
+
"normative": true,
|
|
984
|
+
"url": "https://www.w3.org/TR/wai-aria-1.2/#aria-selected"
|
|
985
|
+
},
|
|
986
|
+
{
|
|
987
|
+
"authority": "wcag-2.2",
|
|
988
|
+
"identifier": "4.1.2",
|
|
989
|
+
"level": "A",
|
|
990
|
+
"normative": true,
|
|
991
|
+
"url": "https://www.w3.org/TR/WCAG22/#name-role-value"
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
"authority": "wcag-2.2-understanding",
|
|
995
|
+
"identifier": "4.1.2",
|
|
996
|
+
"level": "A",
|
|
997
|
+
"normative": false,
|
|
998
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html"
|
|
999
|
+
}
|
|
1000
|
+
],
|
|
1001
|
+
"title": "Selected state",
|
|
1002
|
+
"version": "1.0.0"
|
|
307
1003
|
},
|
|
308
1004
|
{
|
|
309
1005
|
"id": "semantics.target-size",
|
|
310
|
-
"version": "1.0.0",
|
|
311
|
-
"title": "Target size",
|
|
312
1006
|
"kind": "semantic",
|
|
313
|
-
"requirement": "Pointer targets meet 24 by 24 CSS pixels or a WCAG 2.5.8 exception; 44 by 44 is an enhanced recommendation.",
|
|
314
1007
|
"proof": [
|
|
315
1008
|
"e2e",
|
|
316
1009
|
"human"
|
|
317
|
-
]
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
1010
|
+
],
|
|
1011
|
+
"requirement": "Each pointer target contains an axis-aligned 24 by 24 CSS pixel square unless one of these exceptions applies: an undersized target is positioned so that a 24 CSS pixel diameter circle centered on its bounding box does not intersect another target or the corresponding circle for another undersized target; an equivalent control on the same page meets this criterion; the target is in a sentence or its size is otherwise constrained by the line-height of non-target text; the target size is determined by an unmodified user agent; or the target's particular presentation is essential or legally required for the information being conveyed.",
|
|
1012
|
+
"standards_refs": [
|
|
1013
|
+
{
|
|
1014
|
+
"authority": "wcag-2.2",
|
|
1015
|
+
"identifier": "2.5.8",
|
|
1016
|
+
"level": "AA",
|
|
1017
|
+
"normative": true,
|
|
1018
|
+
"url": "https://www.w3.org/TR/WCAG22/#target-size-minimum"
|
|
1019
|
+
},
|
|
1020
|
+
{
|
|
1021
|
+
"authority": "wcag-2.2-understanding",
|
|
1022
|
+
"identifier": "2.5.8",
|
|
1023
|
+
"level": "AA",
|
|
1024
|
+
"normative": false,
|
|
1025
|
+
"url": "https://www.w3.org/WAI/WCAG22/Understanding/target-size-minimum.html"
|
|
1026
|
+
}
|
|
1027
|
+
],
|
|
1028
|
+
"title": "Target size",
|
|
1029
|
+
"version": "1.0.0"
|
|
334
1030
|
}
|
|
335
1031
|
]
|
|
336
1032
|
}
|