testaro 5.18.1 → 6.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/README-mixed.md +707 -0
- package/README.md +95 -115
- package/commands.js +24 -18
- package/high.js +63 -4
- package/package.json +1 -1
- package/run.js +2 -1
- package/{runHost.js → runScript.js} +9 -12
- package/samples/{scripts/simple.json → simple.json} +1 -0
- package/samples/{scripts/tp16.json → tp18.json} +10 -4
- package/tests/filter.js +47 -0
- package/tests/titledEl.js +2 -2
- package/validation/executors/debug.js +2 -2
- package/validation/executors/high.js +57 -0
- package/validation/executors/low.js +2 -2
- package/validation/executors/tenon.js +2 -2
- package/validation/executors/test.js +2 -2
- package/validation/executors/tests.js +2 -2
- package/validation/tests/scripts/filter.json +46 -0
- package/validation/tests/scripts/zIndex.json +1 -1
- package/validation/tests/targets/filter/bad.html +27 -0
- package/validation/tests/targets/filter/good.html +19 -0
- package/watch.js +3 -3
- package/batchify.js +0 -25
- package/create.js +0 -172
- package/samples/batches/eurail.json +0 -11
- package/samples/batches/railpass.json +0 -11
- package/samples/batches/weborgs.json +0 -16
- package/samples/scripts/tp15.json +0 -173
- package/validation/executors/high1.js +0 -32
- package/validation/executors/high2.js +0 -37
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "tp15",
|
|
3
|
-
"what": "Alfa, Axe, Continuum, HTML CodeSniffer, IBM, Nu Html Checker, Tenon, WAVE, and 22 custom tests",
|
|
4
|
-
"strict": true,
|
|
5
|
-
"timeLimit": 500,
|
|
6
|
-
"commands": [
|
|
7
|
-
{
|
|
8
|
-
"type": "launch",
|
|
9
|
-
"which": "webkit",
|
|
10
|
-
"what": "Webkit browser"
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
"type": "url",
|
|
14
|
-
"which": "https://*",
|
|
15
|
-
"what": "any page"
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"type": "tenonRequest",
|
|
19
|
-
"id": "a",
|
|
20
|
-
"withNewContent": true,
|
|
21
|
-
"what": "Tenon API version 2 test request"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"type": "test",
|
|
25
|
-
"which": "motion",
|
|
26
|
-
"what": "spontaneous change of content; requires webkit",
|
|
27
|
-
"delay": 2500,
|
|
28
|
-
"interval": 2500,
|
|
29
|
-
"count": 5
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"type": "launch",
|
|
33
|
-
"which": "chromium",
|
|
34
|
-
"what": "Chromium browser"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"type": "url",
|
|
38
|
-
"which": "https://*",
|
|
39
|
-
"what": "any page"
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"type": "test",
|
|
43
|
-
"which": "bulk",
|
|
44
|
-
"what": "count of visible elements"
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"type": "test",
|
|
48
|
-
"which": "embAc",
|
|
49
|
-
"withItems": true,
|
|
50
|
-
"what": "active elements incorrectly embedded in each other"
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"type": "test",
|
|
54
|
-
"which": "focAll",
|
|
55
|
-
"what": "Tab-focusability"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"type": "test",
|
|
59
|
-
"which": "focInd",
|
|
60
|
-
"revealAll": false,
|
|
61
|
-
"allowedDelay": 250,
|
|
62
|
-
"withItems": true,
|
|
63
|
-
"what": "focus indicators"
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"type": "test",
|
|
67
|
-
"which": "focOp",
|
|
68
|
-
"withItems": true,
|
|
69
|
-
"what": "focusability and operability of elements"
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"type": "test",
|
|
73
|
-
"which": "hover",
|
|
74
|
-
"headSize": 40,
|
|
75
|
-
"headSampleSize": 20,
|
|
76
|
-
"tailSampleSize": 15,
|
|
77
|
-
"withItems": true,
|
|
78
|
-
"what": "hover impacts"
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
"type": "test",
|
|
82
|
-
"which": "labClash",
|
|
83
|
-
"withItems": true,
|
|
84
|
-
"what": "unlabeled and mislabeled form controls"
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
"type": "test",
|
|
88
|
-
"which": "linkUl",
|
|
89
|
-
"withItems": true,
|
|
90
|
-
"what": "underlining of inline links"
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
"type": "test",
|
|
94
|
-
"which": "menuNav",
|
|
95
|
-
"withItems": true,
|
|
96
|
-
"what": "keyboard navigation within true-focus menus"
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
"type": "test",
|
|
100
|
-
"which": "radioSet",
|
|
101
|
-
"withItems": true,
|
|
102
|
-
"what": "grouping of radio buttons in fieldsets"
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
"type": "test",
|
|
106
|
-
"which": "role",
|
|
107
|
-
"what": "validity and necessity of role assignments"
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
"type": "test",
|
|
111
|
-
"which": "styleDiff",
|
|
112
|
-
"withItems": true,
|
|
113
|
-
"what": "style consistency of headings, buttons, and links"
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
"type": "test",
|
|
117
|
-
"which": "tabNav",
|
|
118
|
-
"withItems": true,
|
|
119
|
-
"what": "keyboard navigation within tab lists"
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
"type": "test",
|
|
123
|
-
"which": "zIndex",
|
|
124
|
-
"withItems": true,
|
|
125
|
-
"what": "elements with non-auto z indexes"
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
"type": "test",
|
|
129
|
-
"which": "alfa",
|
|
130
|
-
"what": "Siteimprove alfa"
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
"type": "test",
|
|
134
|
-
"which": "axe",
|
|
135
|
-
"detailLevel": 2,
|
|
136
|
-
"rules": [],
|
|
137
|
-
"what": "Axe core, all rules"
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
"type": "test",
|
|
141
|
-
"which": "continuum",
|
|
142
|
-
"what": "Continuum"
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
"type": "test",
|
|
146
|
-
"which": "htmlcs",
|
|
147
|
-
"what": "HTML CodeSniffer"
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
"type": "test",
|
|
151
|
-
"which": "ibm",
|
|
152
|
-
"withItems": true,
|
|
153
|
-
"what": "IBM Accessibility Checker, with page content and again with URL"
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
"type": "test",
|
|
157
|
-
"which": "nuVal",
|
|
158
|
-
"what": "Nu Html Checker"
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
"type": "test",
|
|
162
|
-
"which": "wave",
|
|
163
|
-
"reportType": 4,
|
|
164
|
-
"what": "WAVE, report-type 4"
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
"type": "test",
|
|
168
|
-
"which": "tenon",
|
|
169
|
-
"id": "a",
|
|
170
|
-
"what": "Tenon API version 2 result retrieval"
|
|
171
|
-
}
|
|
172
|
-
]
|
|
173
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
// high1.js
|
|
2
|
-
// Validator for high-level invocation of Testaro without a batch.
|
|
3
|
-
|
|
4
|
-
const fs = require('fs/promises');
|
|
5
|
-
process.env.SCRIPTDIR = 'samples/scripts';
|
|
6
|
-
process.env.REPORTDIR = 'temp';
|
|
7
|
-
const {runJob} = require('../../create');
|
|
8
|
-
const validate = async (scriptID) => {
|
|
9
|
-
const timeStamp = await runJob(scriptID);
|
|
10
|
-
try {
|
|
11
|
-
const reportJSON = await fs.readFile(`${__dirname}/../../temp/${timeStamp}.json`);
|
|
12
|
-
const report = JSON.parse(reportJSON);
|
|
13
|
-
const {log, acts} = report;
|
|
14
|
-
if (log.length !== 2) {
|
|
15
|
-
console.log(
|
|
16
|
-
`Failure: log length is ${log.length} instead of 2 (see temp/${timeStamp}.json})`
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
else if (acts.length !== 3) {
|
|
20
|
-
console.log(
|
|
21
|
-
`Failure: acts length is ${acts.length} instead of 3 (see temp/${timeStamp}.json})`
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
console.log(`Success (report is in temp/${timeStamp}.json)`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch(error) {
|
|
29
|
-
console.log(`ERROR: ${error.message}`);
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
validate('simple');
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// high2.js
|
|
2
|
-
// Validator for high-level invocation of Testaro with a batch.
|
|
3
|
-
|
|
4
|
-
const fs = require('fs/promises');
|
|
5
|
-
process.env.SCRIPTDIR = 'samples/scripts';
|
|
6
|
-
process.env.BATCHDIR = 'samples/batches';
|
|
7
|
-
process.env.REPORTDIR = 'temp';
|
|
8
|
-
const {runJob} = require('../../create');
|
|
9
|
-
const validate = async (scriptID, batchID) => {
|
|
10
|
-
const timeStamp = await runJob(scriptID, batchID);
|
|
11
|
-
try {
|
|
12
|
-
const tempFileNames = await fs.readdir(`${__dirname}/../../temp`);
|
|
13
|
-
const reportFileNames = tempFileNames.filter(fileName => fileName.startsWith(timeStamp));
|
|
14
|
-
for (const fileName of reportFileNames) {
|
|
15
|
-
const reportJSON = await fs.readFile(`${__dirname}/../../temp/${fileName}`);
|
|
16
|
-
const report = JSON.parse(reportJSON);
|
|
17
|
-
const {log, acts} = report;
|
|
18
|
-
if (log.length !== 2) {
|
|
19
|
-
console.log(
|
|
20
|
-
`Failure: log length is ${log.length} instead of 2 (see temp/${fileName})`
|
|
21
|
-
);
|
|
22
|
-
}
|
|
23
|
-
else if (acts.length !== 3) {
|
|
24
|
-
console.log(
|
|
25
|
-
`Failure: acts length is ${acts.length} instead of 3 (see temp/${fileName})`
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
console.log(`Success (report is in temp/${fileName})`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
catch(error) {
|
|
34
|
-
console.log(`ERROR: ${error.message}`);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
validate('simple', 'weborgs');
|