testilo 34.0.2 → 35.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/LICENSE +1 -1
- package/README.md +49 -12
- package/batch.js +22 -0
- package/call.js +22 -0
- package/compare.js +22 -0
- package/credit.js +22 -0
- package/difgest.js +22 -0
- package/digest.js +22 -0
- package/merge.js +22 -0
- package/package.json +5 -5
- package/procs/analyze/axeFrac.js +22 -0
- package/procs/analyze/coverage.js +22 -0
- package/procs/analyze/ruleCounts.js +22 -0
- package/procs/analyze/toolScores.js +22 -0
- package/procs/compare/cpA11yMessage/index.js +22 -0
- package/procs/compare/cpProductPrice/index.js +22 -0
- package/procs/compare/tcp40/index.js +22 -0
- package/procs/difgest/tfp40/index.js +22 -0
- package/procs/digest/dpProductPrice/index.js +22 -0
- package/procs/digest/dpa11yMessage/index.js +22 -0
- package/procs/digest/tdp40/index.js +22 -0
- package/procs/digest/tdp41/index.js +22 -0
- package/procs/digest/tdp42/index.js +22 -0
- package/procs/score/tic40.js +22 -0
- package/procs/score/tic41.js +22 -0
- package/procs/score/tsp40.js +22 -0
- package/procs/score/tsp41.js +22 -0
- package/procs/score/tspA11yMessage.js +22 -0
- package/procs/score/tspProductPrice.js +22 -0
- package/procs/test.js +22 -0
- package/procs/track/ttp40/index.js +22 -0
- package/procs/util.js +22 -0
- package/reconcile.js +22 -0
- package/rescore.js +22 -0
- package/score.js +22 -0
- package/script.js +22 -0
- package/summarize.js +22 -0
- package/track.js +22 -0
- package/validation/compare/comparer.js +22 -0
- package/validation/compare/validate.js +22 -0
- package/validation/digest/digester.js +22 -0
- package/validation/digest/validate.js +22 -0
- package/validation/merge/validate.js +22 -0
- package/validation/score/scorer.js +22 -0
- package/validation/score/validate.js +22 -0
- package/toolRules/alfa.tsv +0 -82
- package/toolRules/axe.js +0 -390
- package/toolRules/htmlcs.js +0 -543
- package/toolRules/ibm.tsv +0 -159
- package/toolRules/qualWeb.tsv +0 -121
- package/toolRules/tenon.tsv +0 -14
- package/toolRules/wave.json +0 -1617
- package/toolRules/wave.tsv +0 -55
package/toolRules/alfa.tsv
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
er62 The link is not distinguishable from the surrounding text
|
|
2
|
-
er65 The element does not have a visible focus indicator
|
|
3
|
-
er87 The document has no valid tabbable descendants or its first one is invalid
|
|
4
|
-
r1 The document has no valid title element
|
|
5
|
-
r10 The autocomplete attribute does not have a valid value
|
|
6
|
-
r109 The lang attribute does not match the document language
|
|
7
|
-
r11 The link does not have an accessible name
|
|
8
|
-
r12 The button does not have an accessible name
|
|
9
|
-
r13 The iframe does not have an accessible name
|
|
10
|
-
r14 The visible text content of the element is not included within its accessible name
|
|
11
|
-
r15 The iframe elements do not embed the same or equivalent resources
|
|
12
|
-
r16 The element does not have all required states and properties
|
|
13
|
-
r17 The element is either tabbable or has tabbable descendants
|
|
14
|
-
r18 The attribute is not allowed for the element on which it is specified
|
|
15
|
-
r19 The attribute does not have a valid value
|
|
16
|
-
r2 The image does not have an accessible name
|
|
17
|
-
r20 The attribute is not defined
|
|
18
|
-
r21 The element does not have a valid role
|
|
19
|
-
r22 The video element does not have captions
|
|
20
|
-
r25 The visual information of the video element is not available through audio
|
|
21
|
-
r27 The video element has no text alternative for its audio content
|
|
22
|
-
r28 The input type=image element does not have an accessible name
|
|
23
|
-
r3 The element does not have a unique ID
|
|
24
|
-
r30 The audio element does not have a text alternative
|
|
25
|
-
r32 The video element does not have an audio track that describes its
|
|
26
|
-
r35 The video element does not have an alternative
|
|
27
|
-
r37 The video element does not have an audio description
|
|
28
|
-
r38 The video element does not have an audio or text alternative
|
|
29
|
-
r39 The accessible name of the ${name} element does not describe its purpose
|
|
30
|
-
r4 The lang attribute is either missing, empty, or only whitespace
|
|
31
|
-
r40 The region does not have an accessible name
|
|
32
|
-
r41 The links do not resolve to the same or equivalent resources
|
|
33
|
-
r42 The element is not owned by an element of its required context role
|
|
34
|
-
r43 The ${target} element does not have an accessible name
|
|
35
|
-
r44 The element is locked in orientation
|
|
36
|
-
r45 The headers attribute has an invalid reference
|
|
37
|
-
r46 The header cell is not assigned to any cell
|
|
38
|
-
r47 The meta element restricts the ability to zoom
|
|
39
|
-
r48 The total duration of audio output of the ${name} element exceeds
|
|
40
|
-
r49 An audio element has no valid mechanism to pause or stop
|
|
41
|
-
r5 The lang attribute does not have a valid primary language tag
|
|
42
|
-
r50 The total duration of the autoplaying audio output of the element lasts
|
|
43
|
-
r53 The heading skips one or more levels
|
|
44
|
-
r54 The assertive region is not atomic
|
|
45
|
-
r55 Some role has the same name and different content
|
|
46
|
-
r56 Some ${role} have the same name.`, role, errors));
|
|
47
|
-
r57 The text is not included in a landmark region
|
|
48
|
-
r59 The document does not have a heading element
|
|
49
|
-
r6 The lang and xml:lang attributes do not have matching primary language subtags
|
|
50
|
-
r60 The grouping elements have an accessible name
|
|
51
|
-
r61 The document does not start with a level 1 heading
|
|
52
|
-
r62 The link is not distinguishable from the surrounding text
|
|
53
|
-
r63 The object element does not have an accessible name
|
|
54
|
-
r64 The heading does not have an accessible name
|
|
55
|
-
r65 The element does not have a visible focus indicator
|
|
56
|
-
r66 Text outside widget has enhanced contrast
|
|
57
|
-
r67 The element is marked as decorative but is exposed
|
|
58
|
-
r68 The element owns no elements as required by its semantic role
|
|
59
|
-
r69 Text outside widget has minimum contrast
|
|
60
|
-
r7 The lang attribute does not have a valid primary language subtag
|
|
61
|
-
r70 The document contains deprecated elements
|
|
62
|
-
r71 The text of the paragraph is justified
|
|
63
|
-
r72 The text of the paragraph is uppercased
|
|
64
|
-
r73 The line height of the paragraph is less than 1.5 or invalid
|
|
65
|
-
r74 The font size is specified using an absolute unit
|
|
66
|
-
r75 The font size is smaller than 9 pixels
|
|
67
|
-
r76 The header element is not a semantic header
|
|
68
|
-
r77 The cell is not assigned to any header cell
|
|
69
|
-
r78 There is no content between this heading and the next
|
|
70
|
-
r79 The element has no required hidden, figure, code, kbd, or samp ancestor
|
|
71
|
-
r8 The form field does not have an accessible name
|
|
72
|
-
r80 The line height is specified using an absolute unit
|
|
73
|
-
r81 The links do not resolve to the same or equivalent resources
|
|
74
|
-
r82 An error indicator fails to identify the form field or cause of error
|
|
75
|
-
r83 The text is clipped
|
|
76
|
-
r84 The scrollable element is not reachable through keyboard navigation
|
|
77
|
-
r85 The text of the paragraph is all italic
|
|
78
|
-
r86 The element is marked as decorative but is exposed
|
|
79
|
-
r87 The first tabbable element in the document is invalid on nonexistent
|
|
80
|
-
r90 The element has tabbable descendants
|
|
81
|
-
r94 The menuitem does not have an accessible name
|
|
82
|
-
r95 The iframe contains some interactive element
|
package/toolRules/axe.js
DELETED
|
@@ -1,390 +0,0 @@
|
|
|
1
|
-
const rules = {
|
|
2
|
-
accesskeys: {
|
|
3
|
-
description: 'Ensures every accesskey attribute value is unique',
|
|
4
|
-
help: 'accesskey attribute value should be unique'
|
|
5
|
-
},
|
|
6
|
-
'area-alt': {
|
|
7
|
-
description: 'Ensures <area> elements of image maps have alternate text',
|
|
8
|
-
help: 'Active <area> elements must have alternate text'
|
|
9
|
-
},
|
|
10
|
-
'aria-allowed-attr': {
|
|
11
|
-
description: 'Ensures ARIA attributes are allowed for an element\'s role',
|
|
12
|
-
help: 'Elements must only use allowed ARIA attributes'
|
|
13
|
-
},
|
|
14
|
-
'aria-allowed-role': {
|
|
15
|
-
description: 'Ensures role attribute has an appropriate value for the element',
|
|
16
|
-
help: 'ARIA role should be appropriate for the element'
|
|
17
|
-
},
|
|
18
|
-
'aria-command-name': {
|
|
19
|
-
description: 'Ensures every ARIA button, link and menuitem has an accessible name',
|
|
20
|
-
help: 'ARIA commands must have an accessible name'
|
|
21
|
-
},
|
|
22
|
-
'aria-dialog-name': {
|
|
23
|
-
description: 'Ensures every ARIA dialog and alertdialog node has an accessible name',
|
|
24
|
-
help: 'ARIA dialog and alertdialog nodes should have an accessible name'
|
|
25
|
-
},
|
|
26
|
-
'aria-hidden-body': {
|
|
27
|
-
description: 'Ensures aria-hidden=\'true\' is not present on the document body.',
|
|
28
|
-
help: 'aria-hidden=\'true\' must not be present on the document body'
|
|
29
|
-
},
|
|
30
|
-
'aria-hidden-focus': {
|
|
31
|
-
description: 'Ensures aria-hidden elements are not focusable nor contain focusable elements',
|
|
32
|
-
help: 'ARIA hidden element must not be focusable or contain focusable elements'
|
|
33
|
-
},
|
|
34
|
-
'aria-input-field-name': {
|
|
35
|
-
description: 'Ensures every ARIA input field has an accessible name',
|
|
36
|
-
help: 'ARIA input fields must have an accessible name'
|
|
37
|
-
},
|
|
38
|
-
'aria-meter-name': {
|
|
39
|
-
description: 'Ensures every ARIA meter node has an accessible name',
|
|
40
|
-
help: 'ARIA meter nodes must have an accessible name'
|
|
41
|
-
},
|
|
42
|
-
'aria-progressbar-name': {
|
|
43
|
-
description: 'Ensures every ARIA progressbar node has an accessible name',
|
|
44
|
-
help: 'ARIA progressbar nodes must have an accessible name'
|
|
45
|
-
},
|
|
46
|
-
'aria-required-attr': {
|
|
47
|
-
description: 'Ensures elements with ARIA roles have all required ARIA attributes',
|
|
48
|
-
help: 'Required ARIA attributes must be provided'
|
|
49
|
-
},
|
|
50
|
-
'aria-required-children': {
|
|
51
|
-
description: 'Ensures elements with an ARIA role that require child roles contain them',
|
|
52
|
-
help: 'Certain ARIA roles must contain particular children'
|
|
53
|
-
},
|
|
54
|
-
'aria-required-parent': {
|
|
55
|
-
description: 'Ensures elements with an ARIA role that require parent roles are contained by them',
|
|
56
|
-
help: 'Certain ARIA roles must be contained by particular parents'
|
|
57
|
-
},
|
|
58
|
-
'aria-roledescription': {
|
|
59
|
-
description: 'Ensure aria-roledescription is only used on elements with an implicit or explicit role',
|
|
60
|
-
help: 'aria-roledescription must be on elements with a semantic role'
|
|
61
|
-
},
|
|
62
|
-
'aria-roles': {
|
|
63
|
-
description: 'Ensures all elements with a role attribute use a valid value',
|
|
64
|
-
help: 'ARIA roles used must conform to valid values'
|
|
65
|
-
},
|
|
66
|
-
'aria-text': {
|
|
67
|
-
description: 'Ensures "role=text" is used on elements with no focusable descendants',
|
|
68
|
-
help: '"role=text" should have no focusable descendants'
|
|
69
|
-
},
|
|
70
|
-
'aria-toggle-field-name': {
|
|
71
|
-
description: 'Ensures every ARIA toggle field has an accessible name',
|
|
72
|
-
help: 'ARIA toggle fields must have an accessible name'
|
|
73
|
-
},
|
|
74
|
-
'aria-tooltip-name': {
|
|
75
|
-
description: 'Ensures every ARIA tooltip node has an accessible name',
|
|
76
|
-
help: 'ARIA tooltip nodes must have an accessible name'
|
|
77
|
-
},
|
|
78
|
-
'aria-treeitem-name': {
|
|
79
|
-
description: 'Ensures every ARIA treeitem node has an accessible name',
|
|
80
|
-
help: 'ARIA treeitem nodes should have an accessible name'
|
|
81
|
-
},
|
|
82
|
-
'aria-valid-attr-value': {
|
|
83
|
-
description: 'Ensures all ARIA attributes have valid values',
|
|
84
|
-
help: 'ARIA attributes must conform to valid values'
|
|
85
|
-
},
|
|
86
|
-
'aria-valid-attr': {
|
|
87
|
-
description: 'Ensures attributes that begin with aria- are valid ARIA attributes',
|
|
88
|
-
help: 'ARIA attributes must conform to valid names'
|
|
89
|
-
},
|
|
90
|
-
'audio-caption': {
|
|
91
|
-
description: 'Ensures <audio> elements have captions',
|
|
92
|
-
help: '<audio> elements must have a captions track'
|
|
93
|
-
},
|
|
94
|
-
'autocomplete-valid': {
|
|
95
|
-
description: 'Ensure the autocomplete attribute is correct and suitable for the form field',
|
|
96
|
-
help: 'autocomplete attribute must be used correctly'
|
|
97
|
-
},
|
|
98
|
-
'avoid-inline-spacing': {
|
|
99
|
-
description: 'Ensure that text spacing set through style attributes can be adjusted with custom stylesheets',
|
|
100
|
-
help: 'Inline text spacing must be adjustable with custom stylesheets'
|
|
101
|
-
},
|
|
102
|
-
blink: {
|
|
103
|
-
description: 'Ensures <blink> elements are not used',
|
|
104
|
-
help: '<blink> elements are deprecated and must not be used'
|
|
105
|
-
},
|
|
106
|
-
'button-name': {
|
|
107
|
-
description: 'Ensures buttons have discernible text',
|
|
108
|
-
help: 'Buttons must have discernible text'
|
|
109
|
-
},
|
|
110
|
-
bypass: {
|
|
111
|
-
description: 'Ensures each page has at least one mechanism for a user to bypass navigation and jump straight to the content',
|
|
112
|
-
help: 'Page must have means to bypass repeated blocks'
|
|
113
|
-
},
|
|
114
|
-
'color-contrast-enhanced': {
|
|
115
|
-
description: 'Ensures the contrast between foreground and background colors meets WCAG 2 AAA contrast ratio thresholds',
|
|
116
|
-
help: 'Elements must have sufficient color contrast'
|
|
117
|
-
},
|
|
118
|
-
'color-contrast': {
|
|
119
|
-
description: 'Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds',
|
|
120
|
-
help: 'Elements must have sufficient color contrast'
|
|
121
|
-
},
|
|
122
|
-
'css-orientation-lock': {
|
|
123
|
-
description: 'Ensures content is not locked to any specific display orientation, and the content is operable in all display orientations',
|
|
124
|
-
help: 'CSS Media queries must not lock display orientation'
|
|
125
|
-
},
|
|
126
|
-
'definition-list': {
|
|
127
|
-
description: 'Ensures <dl> elements are structured correctly',
|
|
128
|
-
help: '<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements'
|
|
129
|
-
},
|
|
130
|
-
dlitem: {
|
|
131
|
-
description: 'Ensures <dt> and <dd> elements are contained by a <dl>',
|
|
132
|
-
help: '<dt> and <dd> elements must be contained by a <dl>'
|
|
133
|
-
},
|
|
134
|
-
'document-title': {
|
|
135
|
-
description: 'Ensures each HTML document contains a non-empty <title> element',
|
|
136
|
-
help: 'Documents must have <title> element to aid in navigation'
|
|
137
|
-
},
|
|
138
|
-
'duplicate-id-active': {
|
|
139
|
-
description: 'Ensures every id attribute value of active elements is unique',
|
|
140
|
-
help: 'IDs of active elements must be unique'
|
|
141
|
-
},
|
|
142
|
-
'duplicate-id-aria': {
|
|
143
|
-
description: 'Ensures every id attribute value used in ARIA and in labels is unique',
|
|
144
|
-
help: 'IDs used in ARIA and labels must be unique'
|
|
145
|
-
},
|
|
146
|
-
'duplicate-id': {
|
|
147
|
-
description: 'Ensures every id attribute value is unique',
|
|
148
|
-
help: 'id attribute value must be unique'
|
|
149
|
-
},
|
|
150
|
-
'empty-heading': {
|
|
151
|
-
description: 'Ensures headings have discernible text',
|
|
152
|
-
help: 'Headings should not be empty'
|
|
153
|
-
},
|
|
154
|
-
'empty-table-header': {
|
|
155
|
-
description: 'Ensures table headers have discernible text',
|
|
156
|
-
help: 'Table header text must not be empty'
|
|
157
|
-
},
|
|
158
|
-
'focus-order-semantics': {
|
|
159
|
-
description: 'Ensures elements in the focus order have a role appropriate for interactive content',
|
|
160
|
-
help: 'Elements in the focus order should have an appropriate role'
|
|
161
|
-
},
|
|
162
|
-
'form-field-multiple-labels': {
|
|
163
|
-
description: 'Ensures form field does not have multiple label elements',
|
|
164
|
-
help: 'Form field must not have multiple label elements'
|
|
165
|
-
},
|
|
166
|
-
'frame-focusable-content': {
|
|
167
|
-
description: 'Ensures <frame> and <iframe> elements with focusable content do not have tabindex=-1',
|
|
168
|
-
help: 'Frames with focusable content must not have tabindex=-1'
|
|
169
|
-
},
|
|
170
|
-
'frame-tested': {
|
|
171
|
-
description: 'Ensures <iframe> and <frame> elements contain the axe-core script',
|
|
172
|
-
help: 'Frames should be tested with axe-core'
|
|
173
|
-
},
|
|
174
|
-
'frame-title-unique': {
|
|
175
|
-
description: 'Ensures <iframe> and <frame> elements contain a unique title attribute',
|
|
176
|
-
help: 'Frames should have a unique title attribute'
|
|
177
|
-
},
|
|
178
|
-
'frame-title': {
|
|
179
|
-
description: 'Ensures <iframe> and <frame> elements have an accessible name',
|
|
180
|
-
help: 'Frames must have an accessible name'
|
|
181
|
-
},
|
|
182
|
-
'heading-order': {
|
|
183
|
-
description: 'Ensures the order of headings is semantically correct',
|
|
184
|
-
help: 'Heading levels should only increase by one'
|
|
185
|
-
},
|
|
186
|
-
'hidden-content': {
|
|
187
|
-
description: 'Informs users about hidden content.',
|
|
188
|
-
help: 'Hidden content on the page should be analyzed'
|
|
189
|
-
},
|
|
190
|
-
'html-has-lang': {
|
|
191
|
-
description: 'Ensures every HTML document has a lang attribute',
|
|
192
|
-
help: '<html> element must have a lang attribute'
|
|
193
|
-
},
|
|
194
|
-
'html-lang-valid': {
|
|
195
|
-
description: 'Ensures the lang attribute of the <html> element has a valid value',
|
|
196
|
-
help: '<html> element must have a valid value for the lang attribute'
|
|
197
|
-
},
|
|
198
|
-
'html-xml-lang-mismatch': {
|
|
199
|
-
description: 'Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page',
|
|
200
|
-
help: 'HTML elements with lang and xml:lang must have the same base language'
|
|
201
|
-
},
|
|
202
|
-
'identical-links-same-purpose': {
|
|
203
|
-
description: 'Ensure that links with the same accessible name serve a similar purpose',
|
|
204
|
-
help: 'Links with the same name must have a similar purpose'
|
|
205
|
-
},
|
|
206
|
-
'image-alt': {
|
|
207
|
-
description: 'Ensures <img> elements have alternate text or a role of none or presentation',
|
|
208
|
-
help: 'Images must have alternate text'
|
|
209
|
-
},
|
|
210
|
-
'image-redundant-alt': {
|
|
211
|
-
description: 'Ensure image alternative is not repeated as text',
|
|
212
|
-
help: 'Alternative text of images should not be repeated as text'
|
|
213
|
-
},
|
|
214
|
-
'input-button-name': {
|
|
215
|
-
description: 'Ensures input buttons have discernible text',
|
|
216
|
-
help: 'Input buttons must have discernible text'
|
|
217
|
-
},
|
|
218
|
-
'input-image-alt': {
|
|
219
|
-
description: 'Ensures <input type="image"> elements have alternate text',
|
|
220
|
-
help: 'Image buttons must have alternate text'
|
|
221
|
-
},
|
|
222
|
-
'label-content-name-mismatch': {
|
|
223
|
-
description: 'Ensures that elements labelled through their content must have their visible text as part of their accessible name',
|
|
224
|
-
help: 'Elements must have their visible text as part of their accessible name'
|
|
225
|
-
},
|
|
226
|
-
'label-title-only': {
|
|
227
|
-
description: 'Ensures that every form element has a visible label and is not solely labeled using hidden labels, or the title or aria-describedby attributes',
|
|
228
|
-
help: 'Form elements should have a visible label'
|
|
229
|
-
},
|
|
230
|
-
label: {
|
|
231
|
-
description: 'Ensures every form element has a label',
|
|
232
|
-
help: 'Form elements must have labels'
|
|
233
|
-
},
|
|
234
|
-
'landmark-banner-is-top-level': {
|
|
235
|
-
description: 'Ensures the banner landmark is at top level',
|
|
236
|
-
help: 'Banner landmark should not be contained in another landmark'
|
|
237
|
-
},
|
|
238
|
-
'landmark-complementary-is-top-level': {
|
|
239
|
-
description: 'Ensures the complementary landmark or aside is at top level',
|
|
240
|
-
help: 'Aside should not be contained in another landmark'
|
|
241
|
-
},
|
|
242
|
-
'landmark-contentinfo-is-top-level': {
|
|
243
|
-
description: 'Ensures the contentinfo landmark is at top level',
|
|
244
|
-
help: 'Contentinfo landmark should not be contained in another landmark'
|
|
245
|
-
},
|
|
246
|
-
'landmark-main-is-top-level': {
|
|
247
|
-
description: 'Ensures the main landmark is at top level',
|
|
248
|
-
help: 'Main landmark should not be contained in another landmark'
|
|
249
|
-
},
|
|
250
|
-
'landmark-no-duplicate-banner': {
|
|
251
|
-
description: 'Ensures the document has at most one banner landmark',
|
|
252
|
-
help: 'Document should not have more than one banner landmark'
|
|
253
|
-
},
|
|
254
|
-
'landmark-no-duplicate-contentinfo': {
|
|
255
|
-
description: 'Ensures the document has at most one contentinfo landmark',
|
|
256
|
-
help: 'Document should not have more than one contentinfo landmark'
|
|
257
|
-
},
|
|
258
|
-
'landmark-no-duplicate-main': {
|
|
259
|
-
description: 'Ensures the document has at most one main landmark',
|
|
260
|
-
help: 'Document should not have more than one main landmark'
|
|
261
|
-
},
|
|
262
|
-
'landmark-one-main': {
|
|
263
|
-
description: 'Ensures the document has a main landmark',
|
|
264
|
-
help: 'Document should have one main landmark'
|
|
265
|
-
},
|
|
266
|
-
'landmark-unique': {
|
|
267
|
-
help: 'Ensures landmarks are unique',
|
|
268
|
-
description: 'Landmarks should have a unique role or role/label/title (i.e. accessible name) combination'
|
|
269
|
-
},
|
|
270
|
-
'link-in-text-block': {
|
|
271
|
-
description: 'Ensure links are distinguished from surrounding text in a way that does not rely on color',
|
|
272
|
-
help: 'Links must be distinguishable without relying on color'
|
|
273
|
-
},
|
|
274
|
-
'link-name': {
|
|
275
|
-
description: 'Ensures links have discernible text',
|
|
276
|
-
help: 'Links must have discernible text'
|
|
277
|
-
},
|
|
278
|
-
list: {
|
|
279
|
-
description: 'Ensures that lists are structured correctly',
|
|
280
|
-
help: '<ul> and <ol> must only directly contain <li>, <script> or <template> elements'
|
|
281
|
-
},
|
|
282
|
-
listitem: {
|
|
283
|
-
description: 'Ensures <li> elements are used semantically',
|
|
284
|
-
help: '<li> elements must be contained in a <ul> or <ol>'
|
|
285
|
-
},
|
|
286
|
-
marquee: {
|
|
287
|
-
description: 'Ensures <marquee> elements are not used',
|
|
288
|
-
help: '<marquee> elements are deprecated and must not be used'
|
|
289
|
-
},
|
|
290
|
-
'meta-refresh': {
|
|
291
|
-
description: 'Ensures <meta http-equiv="refresh"> is not used',
|
|
292
|
-
help: 'Timed refresh must not exist'
|
|
293
|
-
},
|
|
294
|
-
'meta-viewport-large': {
|
|
295
|
-
description: 'Ensures <meta name="viewport"> can scale a significant amount',
|
|
296
|
-
help: 'Users should be able to zoom and scale the text up to 500%'
|
|
297
|
-
},
|
|
298
|
-
'meta-viewport': {
|
|
299
|
-
description: 'Ensures <meta name="viewport"> does not disable text scaling and zooming',
|
|
300
|
-
help: 'Zooming and scaling should not be disabled'
|
|
301
|
-
},
|
|
302
|
-
'nested-interactive': {
|
|
303
|
-
description: 'Ensures interactive controls are not nested as they are not always announced by screen readers or can cause focus problems for assistive technologies',
|
|
304
|
-
help: 'Interactive controls must not be nested'
|
|
305
|
-
},
|
|
306
|
-
'no-autoplay-audio': {
|
|
307
|
-
description: 'Ensures <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio',
|
|
308
|
-
help: '<video> or <audio> elements must not play automatically'
|
|
309
|
-
},
|
|
310
|
-
'object-alt': {
|
|
311
|
-
description: 'Ensures <object> elements have alternate text',
|
|
312
|
-
help: '<object> elements must have alternate text'
|
|
313
|
-
},
|
|
314
|
-
'p-as-heading': {
|
|
315
|
-
description: 'Ensure bold, italic text and font-size is not used to style <p> elements as a heading',
|
|
316
|
-
help: 'Styled <p> elements must not be used as headings'
|
|
317
|
-
},
|
|
318
|
-
'page-has-heading-one': {
|
|
319
|
-
description: 'Ensure that the page, or at least one of its frames contains a level-one heading',
|
|
320
|
-
help: 'Page should contain a level-one heading'
|
|
321
|
-
},
|
|
322
|
-
'presentation-role-conflict': {
|
|
323
|
-
description: 'Flags elements whose role is none or presentation and which cause the role conflict resolution to trigger.',
|
|
324
|
-
help: 'Elements of role none or presentation should be flagged'
|
|
325
|
-
},
|
|
326
|
-
region: {
|
|
327
|
-
description: 'Ensures all page content is contained by landmarks',
|
|
328
|
-
help: 'All page content should be contained by landmarks'
|
|
329
|
-
},
|
|
330
|
-
'role-img-alt': {
|
|
331
|
-
description: 'Ensures [role=\'img\'] elements have alternate text',
|
|
332
|
-
help: '[role=\'img\'] elements must have an alternative text'
|
|
333
|
-
},
|
|
334
|
-
'scope-attr-valid': {
|
|
335
|
-
description: 'Ensures the scope attribute is used correctly on tables',
|
|
336
|
-
help: 'scope attribute should be used correctly'
|
|
337
|
-
},
|
|
338
|
-
'scrollable-region-focusable': {
|
|
339
|
-
description: 'Ensure elements that have scrollable content are accessible by keyboard',
|
|
340
|
-
help: 'Scrollable region must have keyboard access'
|
|
341
|
-
},
|
|
342
|
-
'select-name': {
|
|
343
|
-
description: 'Ensures select element has an accessible name',
|
|
344
|
-
help: 'Select element must have an accessible name'
|
|
345
|
-
},
|
|
346
|
-
'server-side-image-map': {
|
|
347
|
-
description: 'Ensures that server-side image maps are not used',
|
|
348
|
-
help: 'Server-side image maps must not be used'
|
|
349
|
-
},
|
|
350
|
-
'skip-link': {
|
|
351
|
-
description: 'Ensure all skip links have a focusable target',
|
|
352
|
-
help: 'The skip-link target should exist and be focusable'
|
|
353
|
-
},
|
|
354
|
-
'svg-img-alt': {
|
|
355
|
-
description: 'Ensures <svg> elements with an img, graphics-document or graphics-symbol role have an accessible text',
|
|
356
|
-
help: '<svg> elements with an img role must have an alternative text'
|
|
357
|
-
},
|
|
358
|
-
tabindex: {
|
|
359
|
-
description: 'Ensures tabindex attribute values are not greater than 0',
|
|
360
|
-
help: 'Elements should not have tabindex greater than zero'
|
|
361
|
-
},
|
|
362
|
-
'table-duplicate-name': {
|
|
363
|
-
description: 'Ensure the <caption> element does not contain the same text as the summary attribute',
|
|
364
|
-
help: 'tables should not have the same summary and caption'
|
|
365
|
-
},
|
|
366
|
-
'table-fake-caption': {
|
|
367
|
-
description: 'Ensure that tables with a caption use the <caption> element.',
|
|
368
|
-
help: 'Data or header cells must not be used to give caption to a data table.'
|
|
369
|
-
},
|
|
370
|
-
'td-has-header': {
|
|
371
|
-
description: 'Ensure that each non-empty data cell in a <table> larger than 3 by 3 has one or more table headers',
|
|
372
|
-
help: 'Non-empty <td> elements in larger <table> must have an associated table header'
|
|
373
|
-
},
|
|
374
|
-
'td-headers-attr': {
|
|
375
|
-
description: 'Ensure that each cell in a table that uses the headers attribute refers only to other cells in that table',
|
|
376
|
-
help: 'Table cells that use the headers attribute must only refer to cells in the same table'
|
|
377
|
-
},
|
|
378
|
-
'th-has-data-cells': {
|
|
379
|
-
description: 'Ensure that <th> elements and elements with role=columnheader/rowheader have data cells they describe',
|
|
380
|
-
help: 'Table headers in a data table must refer to data cells'
|
|
381
|
-
},
|
|
382
|
-
'valid-lang': {
|
|
383
|
-
description: 'Ensures lang attributes have valid values',
|
|
384
|
-
help: 'lang attribute must have a valid value'
|
|
385
|
-
},
|
|
386
|
-
'video-caption': {
|
|
387
|
-
description: 'Ensures <video> elements have captions',
|
|
388
|
-
help: '<video> elements must have captions'
|
|
389
|
-
}
|
|
390
|
-
};
|