testaro 4.14.1 → 5.0.1

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.
@@ -1,276 +0,0 @@
1
- {
2
- "id": "a11yorgs",
3
- "what": "Home pages of accessibility organizations",
4
- "hosts": [
5
- {
6
- "id": "iaap",
7
- "which": "https://www.accessibilityassociation.org/s/",
8
- "what": "IAAP"
9
- },
10
- {
11
- "id": "w3cwaiaria",
12
- "which": "https://www.w3.org/WAI/standards-guidelines/aria/",
13
- "what": "W3C WAI-ARIA"
14
- },
15
- {
16
- "id": "mozilla",
17
- "which": "https://www.mozilla.org/en-US/",
18
- "what": "Mozilla"
19
- },
20
- {
21
- "id": "uswds",
22
- "which": "https://designsystem.digital.gov/documentation/accessibility/",
23
- "what": "U.S. Web Design System"
24
- },
25
- {
26
- "id": "deque",
27
- "which": "https://deque.com/",
28
- "what": "Deque"
29
- },
30
- {
31
- "id": "levelaccess",
32
- "which": "https://www.levelaccess.com/",
33
- "what": "Level Access"
34
- },
35
- {
36
- "id": "tpgi",
37
- "which": "https://www.tpgi.com/",
38
- "what": "TPGi"
39
- },
40
- {
41
- "id": "usablenet",
42
- "which": "https://usablenet.com/",
43
- "what": "UsableNet"
44
- },
45
- {
46
- "id": "evinced",
47
- "which": "https://www.evinced.com/",
48
- "what": "Evinced"
49
- },
50
- {
51
- "id": "accessibe",
52
- "which": "https://accessibe.com/",
53
- "what": "AccessiBe"
54
- },
55
- {
56
- "id": "siteimprove",
57
- "which": "https://siteimprove.com/en-us/accessibility/",
58
- "what": "Siteimprove"
59
- },
60
- {
61
- "id": "a11yshield",
62
- "which": "https://www.accessibilityshield.com/",
63
- "what": "Accessibility Shield"
64
- },
65
- {
66
- "id": "barrierbreak",
67
- "which": "https://www.barrierbreak.com/",
68
- "what": "Barrier Break"
69
- },
70
- {
71
- "id": "converge",
72
- "which": "https://convergeaccessibility.com/",
73
- "what": "Converge Accessibility"
74
- },
75
- {
76
- "id": "crawford",
77
- "which": "https://www.crawfordtech.com/accessibilitynow",
78
- "what": "Crawford Technologies"
79
- },
80
- {
81
- "id": "essential",
82
- "which": "https://www.essentialaccessibility.com/",
83
- "what": "eSSENTIAL Accessibility"
84
- },
85
- {
86
- "id": "microassist",
87
- "which": "https://www.microassist.com/",
88
- "what": "Microassist"
89
- },
90
- {
91
- "id": "mindscreen",
92
- "which": "https://www.mindscreen.de/",
93
- "what": "mindscreen"
94
- },
95
- {
96
- "id": "onlineada",
97
- "which": "https://onlineada.com/",
98
- "what": "Online ADA"
99
- },
100
- {
101
- "id": "tenon",
102
- "which": "https://tenon.io/",
103
- "what": "Tenon"
104
- },
105
- {
106
- "id": "weco",
107
- "which": "https://theweco.com/",
108
- "what": "WeCo"
109
- },
110
- {
111
- "id": "zugang",
112
- "which": "https://www.access-for-all.ch/ch/",
113
- "what": "Zugang für alle"
114
- },
115
- {
116
- "id": "aph",
117
- "which": "https://www.aph.org/accessibility-solutions/",
118
- "what": "American Printing House"
119
- },
120
- {
121
- "id": "dac",
122
- "which": "https://www.digitalaccessibilitycentre.org/",
123
- "what": "Digital Accessibility Centre"
124
- },
125
- {
126
- "id": "ubb",
127
- "which": "https://www.bfit-bund.de/DE/Home/home_node.html",
128
- "what": "Überwachungsstelle des BFIT-Bund"
129
- },
130
- {
131
- "id": "hearcolors",
132
- "which": "https://www.hearcolors.com.mx/",
133
- "what": "Fundación Hearcolors"
134
- },
135
- {
136
- "id": "knowbility",
137
- "which": "https://knowbility.org/",
138
- "what": "Knowbility"
139
- },
140
- {
141
- "id": "peat",
142
- "which": "https://www.peatworks.org/",
143
- "what": "PEAT"
144
- },
145
- {
146
- "id": "viscardi",
147
- "which": "https://www.viscardicenter.org/digital-accessibility-services/web-accessibility/",
148
- "what": "Viscardi Center"
149
- },
150
- {
151
- "id": "blindspot",
152
- "which": "https://myblindspot.org/",
153
- "what": "My Blind Spot"
154
- },
155
- {
156
- "id": "a11yoz",
157
- "which": "https://www.accessibilityoz.com/",
158
- "what": "AccessibilityOz"
159
- },
160
- {
161
- "id": "visionaus",
162
- "which": "https://www.visionaustralia.org/services/digital-access",
163
- "what": "Vision Australia"
164
- },
165
- {
166
- "id": "abilitynet",
167
- "which": "https://www.abilitynet.org.uk/",
168
- "what": "AbilityNet"
169
- },
170
- {
171
- "id": "audioeye",
172
- "which": "https://www.audioeye.com/",
173
- "what": "AudioEye"
174
- },
175
- {
176
- "id": "funka",
177
- "which": "https://www.funka.com/en/",
178
- "what": "Funka"
179
- },
180
- {
181
- "id": "accessibleweb",
182
- "which": "https://accessibleweb.com/",
183
- "what": "Accessible Web"
184
- },
185
- {
186
- "id": "atos",
187
- "which": "https://atos.net/en/lp/accessibility-and-assistive-technology-iux",
188
- "what": "Atos"
189
- },
190
- {
191
- "id": "equalentry",
192
- "which": "https://equalentry.com/",
193
- "what": "Equal Entry"
194
- },
195
- {
196
- "id": "gatechcidi",
197
- "which": "https://cidi.gatech.edu/",
198
- "what": "Georgia Tech CIDI"
199
- },
200
- {
201
- "id": "webaim",
202
- "which": "https://webaim.org/",
203
- "what": "WebAIM"
204
- },
205
- {
206
- "id": "csuncd",
207
- "which": "https://www.csun.edu/cod",
208
- "what": "CSUN Center on Disabilities"
209
- },
210
- {
211
- "id": "makesense",
212
- "which": "https://mk-sense.com/",
213
- "what": "Make-Sense"
214
- },
215
- {
216
- "id": "faciliti",
217
- "which": "https://www.facil-iti.fr/",
218
- "what": "FACIL’iti"
219
- },
220
- {
221
- "id": "aaatraq",
222
- "which": "https://aaatraq.com/",
223
- "what": "AAAtraq"
224
- },
225
- {
226
- "id": "accessibleorg",
227
- "which": "https://accessible.org/",
228
- "what": "Accessible.org"
229
- },
230
- {
231
- "id": "ab11y",
232
- "which": "https://www.ab11y.com/",
233
- "what": "Ab11y"
234
- },
235
- {
236
- "id": "digitala11y",
237
- "which": "https://www.digitala11y.com/",
238
- "what": "DigitalA11Y"
239
- },
240
- {
241
- "id": "teachaccess",
242
- "which": "https://teachaccess.org/",
243
- "what": "Teach Access"
244
- },
245
- {
246
- "id": "tetralogical",
247
- "which": "https://tetralogical.com/",
248
- "what": "TetraLogical"
249
- },
250
- {
251
- "id": "adaexpertise",
252
- "which": "https://adaexpertise.com/",
253
- "what": "ADA Expertise Consulting"
254
- },
255
- {
256
- "id": "aten",
257
- "which": "https://atendesigngroup.com/",
258
- "what": "Aten Design Group"
259
- },
260
- {
261
- "id": "holistica11y",
262
- "which": "https://holistica11y.com/",
263
- "what": "HolisticA11Y"
264
- },
265
- {
266
- "id": "zenythgroup",
267
- "which": "https://zenythgroup.com/index",
268
- "what": "Zenyth Group"
269
- },
270
- {
271
- "id": "boia",
272
- "which": "https://www.boia.org/",
273
- "what": "Bureau of Internet Accessibility"
274
- }
275
- ]
276
- }
@@ -1,11 +0,0 @@
1
- {
2
- "id": "doordash",
3
- "what": "DoorDash",
4
- "hosts": [
5
- {
6
- "id": "doordash",
7
- "which": "https://www.doordash.com/",
8
- "what": "DoorDash"
9
- }
10
- ]
11
- }
@@ -1,36 +0,0 @@
1
- {
2
- "id": "greiner",
3
- "what": "Greiner’s Fine Men’s Clothing",
4
- "hosts": [
5
- {
6
- "id": "greinerhome",
7
- "which": "http://greinersclothing.com/",
8
- "what": "Greiner’s Fine Men’s Clothing: Home"
9
- },
10
- {
11
- "id": "greinerabout",
12
- "which": "https://greinersclothing.com/about-us/",
13
- "what": "Greiner’s Fine Men’s Clothing: About Us"
14
- },
15
- {
16
- "id": "greinercol",
17
- "which": "https://greinersclothing.com/collections-fw2018-2/",
18
- "what": "Greiner’s Fine Men’s Clothing: Collections"
19
- },
20
- {
21
- "id": "greinermasks",
22
- "which": "https://greinersclothing.com/covid19masks/",
23
- "what": "Greiner’s Fine Men’s Clothing: COVID-19 Masks"
24
- },
25
- {
26
- "id": "greinermeasure",
27
- "which": "https://greinersclothing.com/made-to-measure/",
28
- "what": "Greiner’s Fine Men’s Clothing: Made to Measure"
29
- },
30
- {
31
- "id": "greinercontact",
32
- "which": "https://greinersclothing.com/contact-2/",
33
- "what": "Greiner’s Fine Men’s Clothing: Contact + Locations"
34
- }
35
- ]
36
- }
@@ -1,11 +0,0 @@
1
- {
2
- "id": "siteimprove",
3
- "what": "Siteimprove",
4
- "hosts": [
5
- {
6
- "id": "siteimprove",
7
- "which": "https://www.siteimprove.com/",
8
- "what": "Siteimprove"
9
- }
10
- ]
11
- }
@@ -1,11 +0,0 @@
1
- {
2
- "id": "siteimprovea11y",
3
- "what": "Siteimprove accessibility",
4
- "hosts": [
5
- {
6
- "id": "siteimprovea11y",
7
- "which": "https://www.siteimprove.com/platform/accessibility/",
8
- "what": "Siteimprove accessibility"
9
- }
10
- ]
11
- }
package/tests/aatt.js DELETED
@@ -1,127 +0,0 @@
1
- /*
2
- aatt
3
- This test implements the HTML CodeSniffer ruleset for accessibility via AATT.
4
- */
5
-
6
- // IMPORTS
7
- const {evaluate} = require('aatt');
8
-
9
- // FUNCTIONS
10
- // Recursively test a page with HTML CodeSniffer for WCAC 2.1 AAA.
11
- const retest = async (page, waitLong, triesLeft) => {
12
- // If the limit on tries has not been exhausted:
13
- if (triesLeft) {
14
- // Set the limit in seconds on the wait for the result.
15
- const timeLimit = waitLong ? 12 : 6;
16
- // Get the HTML of the document body.
17
- const source = await page.content();
18
- // Return the result of a test with the HTML CodeSniffer WCAG 2.1 AA ruleset as a string.
19
- const report = evaluate({
20
- source,
21
- output: 'json',
22
- engine: 'htmlcs',
23
- level: 'WCAG2AAA'
24
- });
25
- // Wait for it until the time limit expires.
26
- let timeoutID;
27
- const wait = new Promise(resolve => {
28
- timeoutID = setTimeout(() => {
29
- resolve('');
30
- }, 1000 * timeLimit);
31
- });
32
- const result = await Promise.race([report, wait]);
33
- // If it arrived within the time limit:
34
- if (result) {
35
- clearTimeout(timeoutID);
36
- // Return the result as JSON.
37
- const reportJSON = result.replace(/^.+?Object.?\s+|\s+done\s*$/sg, '');
38
- return {
39
- triesLeft,
40
- reportJSON
41
- };
42
- }
43
- else {
44
- console.log(`ERROR: Test aatt timed out at ${timeLimit} seconds; tries left: ${triesLeft - 1}`);
45
- return retest(page, waitLong, --triesLeft);
46
- }
47
- }
48
- // Otherwise, i.e. if the limit on tries has been exhausted:
49
- else {
50
- // Return this.
51
- return {
52
- triesLeft,
53
- reportJSON: ''
54
- };
55
- }
56
- };
57
- exports.reporter = async (page, waitLong, tryLimit = 4) => {
58
- // Try the test up to the limit on tries.
59
- const result = await retest(page, waitLong, tryLimit);
60
- const {triesLeft, reportJSON} = result;
61
- // If any try succeeded:
62
- if (reportJSON) {
63
- try {
64
- // Convert the JSON string to an array.
65
- const issueArray = JSON.parse(reportJSON);
66
- // Remove the notices from the array.
67
- const nonNotices = issueArray.filter(issue => issue.type !== 'notice');
68
- // For each non-notice issue:
69
- let errors = 0;
70
- let warnings = 0;
71
- nonNotices.forEach(issue => {
72
- if (issue.type) {
73
- // Convert the technique property from a string to an array of strings.
74
- const longTech = issue.techniques;
75
- issue.techniques = longTech.replace(/a><a/g, 'a>%<a').split('%');
76
- issue.id = issue
77
- .techniques
78
- .map(technique => technique.replace(/^.+?>|<\/a>$/g, ''))
79
- .sort()
80
- .join('+');
81
- // Add the issue to the totals.
82
- if (issue.type === 'error') {
83
- errors++;
84
- }
85
- else if (issue.type === 'warning') {
86
- warnings++;
87
- }
88
- }
89
- });
90
- // Return the result.
91
- return {
92
- result: {
93
- totals: {
94
- errors,
95
- warnings
96
- },
97
- report: nonNotices,
98
- preventionCount: tryLimit - triesLeft - 1
99
- }
100
- };
101
- }
102
- catch (error) {
103
- console.log(`ERROR processing AATT report (${error.message})`);
104
- console.log(
105
- `JSON report starts with ${reportJSON.slice(0, 50)} and ends with ${reportJSON.slice(-50)}`
106
- );
107
- return {
108
- result: {
109
- prevented: true,
110
- error: 'ERROR processing AATT report'
111
- }
112
- };
113
- }
114
- }
115
- // Otherwise, i.e. if the limit on tries was exhausted:
116
- else {
117
- // Report the failure.
118
- const error = 'ERROR: Getting AATT report took too long';
119
- console.log(error);
120
- return {
121
- result: {
122
- prevented: true,
123
- error
124
- }
125
- };
126
- }
127
- };