testaro 78.0.8 → 78.4.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.
Files changed (356) hide show
  1. package/.gitattributes +94 -0
  2. package/.github/workflows/ci.yml +58 -0
  3. package/.github/workflows/publish.yml +49 -0
  4. package/.github/workflows/typescript.yml +35 -0
  5. package/AGENTS.md +2 -2
  6. package/CLAUDE.md +24 -18
  7. package/CONTAINERS.md +9 -6
  8. package/CONTRIBUTING.md +29 -3
  9. package/Dockerfile +1 -1
  10. package/README.md +73 -19
  11. package/UPGRADES.md +4 -0
  12. package/actSpecs-doc.md +13 -1
  13. package/actSpecs.js +29 -5
  14. package/call.js +6 -5
  15. package/docker-compose.yml +8 -2
  16. package/docs/checkpoint-scanning.md +199 -0
  17. package/docs/standard-result-outcome.md +165 -0
  18. package/env.example +44 -10
  19. package/eslint.config.mjs +101 -0
  20. package/netWatch.js +372 -222
  21. package/package.json +46 -31
  22. package/pour/README.md +47 -0
  23. package/pour/pour.min.js +8 -0
  24. package/procs/actDo.js +808 -0
  25. package/procs/catalog.d.ts +17 -0
  26. package/procs/catalog.js +312 -221
  27. package/procs/catalog.ts +398 -0
  28. package/procs/checkpoint.js +110 -0
  29. package/procs/config.d.ts +35 -0
  30. package/procs/config.js +62 -0
  31. package/procs/dateTime.js +2 -1
  32. package/procs/doActs.js +442 -849
  33. package/procs/doTestAct.js +27 -121
  34. package/procs/flow.js +221 -0
  35. package/procs/generateRuleRegistry.js +94 -0
  36. package/procs/getSource.d.ts +26 -0
  37. package/procs/job.js +115 -1
  38. package/procs/launch.d.ts +40 -0
  39. package/procs/launch.js +239 -108
  40. package/procs/nu.d.ts +48 -0
  41. package/procs/scope.js +196 -0
  42. package/procs/shoot.d.ts +33 -0
  43. package/procs/standard.d.ts +18 -0
  44. package/procs/standard.js +83 -0
  45. package/procs/standard.ts +126 -0
  46. package/procs/testAct.js +145 -0
  47. package/procs/testaro.d.ts +20 -0
  48. package/procs/testaro.js +236 -189
  49. package/procs/testaro.ts +321 -0
  50. package/procs/userPath.js +126 -0
  51. package/procs/xPath.d.ts +4 -0
  52. package/procs/xPath.js +81 -69
  53. package/procs/xPath.ts +106 -0
  54. package/procs/xPathScript.d.ts +6 -0
  55. package/procs/xPathScript.js +70 -0
  56. package/run.js +3 -2
  57. package/surea11y/README.md +44 -0
  58. package/surea11y/surea11y.browser.js +14 -0
  59. package/testaro/adbID.d.ts +3 -0
  60. package/testaro/adbID.js +38 -41
  61. package/testaro/adbID.ts +66 -0
  62. package/testaro/allCapStyle.d.ts +3 -0
  63. package/testaro/allCapStyle.js +31 -34
  64. package/testaro/allCapStyle.ts +55 -0
  65. package/testaro/allCaps.d.ts +16 -0
  66. package/testaro/allCaps.js +179 -151
  67. package/testaro/allCaps.ts +228 -0
  68. package/testaro/allHidden.d.ts +13 -0
  69. package/testaro/allHidden.js +29 -30
  70. package/testaro/allHidden.ts +50 -0
  71. package/testaro/allSlanted.d.ts +3 -0
  72. package/testaro/allSlanted.js +30 -33
  73. package/testaro/allSlanted.ts +54 -0
  74. package/testaro/altScheme.d.ts +3 -0
  75. package/testaro/altScheme.js +27 -30
  76. package/testaro/altScheme.ts +50 -0
  77. package/testaro/attVal.d.ts +3 -0
  78. package/testaro/attVal.js +20 -21
  79. package/testaro/attVal.ts +52 -0
  80. package/testaro/autocomplete.d.ts +3 -0
  81. package/testaro/autocomplete.js +59 -75
  82. package/testaro/autocomplete.ts +101 -0
  83. package/testaro/bulk.d.ts +13 -0
  84. package/testaro/bulk.js +32 -33
  85. package/testaro/bulk.ts +55 -0
  86. package/testaro/buttonMenu.d.ts +9 -0
  87. package/testaro/buttonMenu.js +317 -319
  88. package/testaro/buttonMenu.ts +391 -0
  89. package/testaro/captionLoc.d.ts +3 -0
  90. package/testaro/captionLoc.js +17 -20
  91. package/testaro/captionLoc.ts +40 -0
  92. package/testaro/datalistRef.d.ts +3 -0
  93. package/testaro/datalistRef.js +33 -36
  94. package/testaro/datalistRef.ts +55 -0
  95. package/testaro/distortion.d.ts +3 -0
  96. package/testaro/distortion.js +57 -26
  97. package/testaro/distortion.ts +81 -0
  98. package/testaro/docType.d.ts +15 -0
  99. package/testaro/docType.js +25 -25
  100. package/testaro/docType.ts +45 -0
  101. package/testaro/dupAtt.d.ts +16 -0
  102. package/testaro/dupAtt.js +113 -104
  103. package/testaro/dupAtt.ts +144 -0
  104. package/testaro/elements.d.ts +6 -0
  105. package/testaro/elements.js +153 -153
  106. package/testaro/elements.ts +215 -0
  107. package/testaro/embAc.d.ts +3 -0
  108. package/testaro/embAc.js +19 -20
  109. package/testaro/embAc.ts +40 -0
  110. package/testaro/focAll.d.ts +13 -0
  111. package/testaro/focAll.js +185 -191
  112. package/testaro/focAll.ts +217 -0
  113. package/testaro/focAndOp.d.ts +3 -0
  114. package/testaro/focAndOp.js +100 -104
  115. package/testaro/focAndOp.ts +128 -0
  116. package/testaro/focInd.d.ts +3 -0
  117. package/testaro/focInd.js +64 -66
  118. package/testaro/focInd.ts +96 -0
  119. package/testaro/focVis.d.ts +3 -0
  120. package/testaro/focVis.js +28 -30
  121. package/testaro/focVis.ts +52 -0
  122. package/testaro/headEl.d.ts +10 -0
  123. package/testaro/headEl.js +61 -62
  124. package/testaro/headEl.ts +82 -0
  125. package/testaro/headingAmb.d.ts +3 -0
  126. package/testaro/headingAmb.js +54 -63
  127. package/testaro/headingAmb.ts +72 -0
  128. package/testaro/hovInd.d.ts +12 -0
  129. package/testaro/hovInd.js +163 -130
  130. package/testaro/hovInd.ts +199 -0
  131. package/testaro/hover.d.ts +3 -0
  132. package/testaro/hover.js +155 -126
  133. package/testaro/hover.ts +154 -0
  134. package/testaro/hr.d.ts +3 -0
  135. package/testaro/hr.js +14 -17
  136. package/testaro/hr.ts +36 -0
  137. package/testaro/imageLink.d.ts +3 -0
  138. package/testaro/imageLink.js +17 -20
  139. package/testaro/imageLink.ts +42 -0
  140. package/testaro/labClash.d.ts +3 -0
  141. package/testaro/labClash.js +31 -33
  142. package/testaro/labClash.ts +54 -0
  143. package/testaro/legendLoc.d.ts +3 -0
  144. package/testaro/legendLoc.js +17 -20
  145. package/testaro/legendLoc.ts +42 -0
  146. package/testaro/lineHeight.d.ts +3 -0
  147. package/testaro/lineHeight.js +43 -48
  148. package/testaro/lineHeight.ts +70 -0
  149. package/testaro/linkAmb.d.ts +7 -0
  150. package/testaro/linkAmb.js +79 -80
  151. package/testaro/linkAmb.ts +105 -0
  152. package/testaro/linkExt.d.ts +3 -0
  153. package/testaro/linkExt.js +13 -16
  154. package/testaro/linkExt.ts +35 -0
  155. package/testaro/linkOldAtt.d.ts +3 -0
  156. package/testaro/linkOldAtt.js +25 -28
  157. package/testaro/linkOldAtt.ts +48 -0
  158. package/testaro/linkTo.d.ts +3 -0
  159. package/testaro/linkTo.js +22 -22
  160. package/testaro/linkTo.ts +43 -0
  161. package/testaro/linkUl.d.ts +3 -0
  162. package/testaro/linkUl.js +30 -34
  163. package/testaro/linkUl.ts +54 -0
  164. package/testaro/miniText.d.ts +3 -0
  165. package/testaro/miniText.js +41 -44
  166. package/testaro/miniText.ts +68 -0
  167. package/testaro/motion.d.ts +10 -0
  168. package/testaro/motion.js +92 -96
  169. package/testaro/motion.ts +125 -0
  170. package/testaro/nonTable.d.ts +3 -0
  171. package/testaro/nonTable.js +39 -45
  172. package/testaro/nonTable.ts +66 -0
  173. package/testaro/optRoleSel.d.ts +3 -0
  174. package/testaro/optRoleSel.js +16 -19
  175. package/testaro/optRoleSel.ts +41 -0
  176. package/testaro/phOnly.d.ts +3 -0
  177. package/testaro/phOnly.js +18 -21
  178. package/testaro/phOnly.ts +43 -0
  179. package/testaro/pseudoP.d.ts +3 -0
  180. package/testaro/pseudoP.js +36 -38
  181. package/testaro/pseudoP.ts +59 -0
  182. package/testaro/radioSet.d.ts +3 -0
  183. package/testaro/radioSet.js +57 -59
  184. package/testaro/radioSet.ts +79 -0
  185. package/testaro/registry.d.ts +63 -0
  186. package/testaro/registry.js +67 -0
  187. package/testaro/registry.ts +141 -0
  188. package/testaro/role.d.ts +3 -0
  189. package/testaro/role.js +27 -29
  190. package/testaro/role.ts +53 -0
  191. package/testaro/secHeading.d.ts +3 -0
  192. package/testaro/secHeading.js +30 -33
  193. package/testaro/secHeading.ts +53 -0
  194. package/testaro/styleDiff.d.ts +25 -0
  195. package/testaro/styleDiff.js +248 -252
  196. package/testaro/styleDiff.ts +303 -0
  197. package/testaro/tabNav.d.ts +33 -0
  198. package/testaro/tabNav.js +272 -342
  199. package/testaro/tabNav.ts +454 -0
  200. package/testaro/targetsNear.d.ts +9 -0
  201. package/testaro/targetsNear.js +130 -132
  202. package/testaro/targetsNear.ts +160 -0
  203. package/testaro/textNodes.d.ts +6 -0
  204. package/testaro/textNodes.js +139 -135
  205. package/testaro/textNodes.ts +185 -0
  206. package/testaro/textSem.d.ts +3 -0
  207. package/testaro/textSem.js +25 -28
  208. package/testaro/textSem.ts +47 -0
  209. package/testaro/title.d.ts +9 -0
  210. package/testaro/title.js +16 -13
  211. package/testaro/title.ts +31 -0
  212. package/testaro/titledEl.d.ts +3 -0
  213. package/testaro/titledEl.js +15 -18
  214. package/testaro/titledEl.ts +38 -0
  215. package/testaro/zIndex.d.ts +3 -0
  216. package/testaro/zIndex.js +19 -22
  217. package/testaro/zIndex.ts +42 -0
  218. package/tests/alfa.d.ts +45 -0
  219. package/tests/alfa.js +138 -141
  220. package/tests/alfa.ts +214 -0
  221. package/tests/aslint.d.ts +33 -0
  222. package/tests/aslint.js +272 -249
  223. package/tests/aslint.ts +301 -0
  224. package/tests/axe.d.ts +27 -0
  225. package/tests/axe.js +199 -200
  226. package/tests/axe.ts +277 -0
  227. package/tests/ed11y.d.ts +28 -0
  228. package/tests/ed11y.js +141 -99
  229. package/tests/ed11y.ts +178 -0
  230. package/tests/htmlcs.d.ts +21 -0
  231. package/tests/htmlcs.js +174 -140
  232. package/tests/htmlcs.ts +181 -0
  233. package/tests/ibm.d.ts +52 -0
  234. package/tests/ibm.js +164 -166
  235. package/tests/ibm.ts +251 -0
  236. package/tests/nuVal.d.ts +13 -0
  237. package/tests/nuVal.js +107 -112
  238. package/tests/nuVal.ts +145 -0
  239. package/tests/nuVnu.d.ts +15 -0
  240. package/tests/nuVnu.js +141 -111
  241. package/tests/nuVnu.ts +144 -0
  242. package/tests/pour.d.ts +31 -0
  243. package/tests/pour.js +242 -0
  244. package/tests/pour.ts +273 -0
  245. package/tests/qualWeb.d.ts +39 -0
  246. package/tests/qualWeb.js +302 -272
  247. package/tests/qualWeb.ts +415 -0
  248. package/tests/surea11y.d.ts +33 -0
  249. package/tests/surea11y.js +288 -0
  250. package/tests/surea11y.ts +334 -0
  251. package/tests/testaro.d.ts +25 -0
  252. package/tests/testaro.js +745 -652
  253. package/tests/testaro.ts +862 -0
  254. package/tests/wave.d.ts +46 -0
  255. package/tests/wave.js +166 -177
  256. package/tests/wave.ts +252 -0
  257. package/tsconfig.json +17 -0
  258. package/types.d.ts +243 -0
  259. package/types.js +10 -0
  260. package/types.ts +376 -0
  261. package/validation/act/README.md +46 -0
  262. package/validation/act/capture.js +424 -0
  263. package/validation/act/chromium-issue-draft.md +66 -0
  264. package/validation/act/fp-triage-2026-08-22.md +86 -0
  265. package/validation/act/isolation-notes.md +159 -0
  266. package/validation/act/playwright-issue-draft.md +73 -0
  267. package/validation/act/propose-mappings.js +0 -0
  268. package/validation/act/repro-cdp-raw.js +105 -0
  269. package/validation/act/repro-metarefresh.js +65 -0
  270. package/validation/act/score.js +184 -0
  271. package/validation/act/stage3a-stress-report.md +69 -0
  272. package/validation/act/stage3b-mapping-proposals.md +94 -0
  273. package/validation/act/stage3b-triage-draft.md +138 -0
  274. package/validation/act/surea11y-track-a-2026-09-01.md +50 -0
  275. package/validation/executors/netWatch.js +180 -90
  276. package/validation/executors/test.js +17 -2
  277. package/validation/executors/tests.js +118 -10
  278. package/validation/jobs/reports/raw/260901T1000-surea11y-validation.json +964 -0
  279. package/validation/jobs/todo/240101T1200-simple-example.json +14 -6
  280. package/validation/jobs/todo/240101T1300-shoot-example.json +2 -1
  281. package/validation/jobs/todo/260821T1900-pour-validation.json +45 -0
  282. package/validation/jobs/todo/260901T1000-surea11y-validation.json +45 -0
  283. package/validation/knownFailures.json +1 -0
  284. package/validation/tests/jobProperties/adbID.json +27 -2
  285. package/validation/tests/jobProperties/{focOp.json → allCapStyle.json} +56 -53
  286. package/validation/tests/jobProperties/allCaps.json +25 -0
  287. package/validation/tests/jobProperties/allHidden.json +133 -13
  288. package/validation/tests/jobProperties/allSlanted.json +3 -3
  289. package/validation/tests/jobProperties/altScheme.json +23 -8
  290. package/validation/tests/jobProperties/attVal.json +57 -57
  291. package/validation/tests/jobProperties/autocomplete.json +11 -1
  292. package/validation/tests/jobProperties/bulk.json +6 -1
  293. package/validation/tests/jobProperties/buttonMenu.json +63 -42
  294. package/validation/tests/jobProperties/captionLoc.json +1 -6
  295. package/validation/tests/jobProperties/checkpoint-browser.json +401 -0
  296. package/validation/tests/jobProperties/checkpoint-page.json +397 -0
  297. package/validation/tests/jobProperties/checkpoint.json +395 -0
  298. package/validation/tests/jobProperties/datalistRef.json +20 -5
  299. package/validation/tests/jobProperties/distortion.json +28 -3
  300. package/validation/tests/jobProperties/docType.json +2 -2
  301. package/validation/tests/jobProperties/dupAtt.json +48 -33
  302. package/validation/tests/jobProperties/elements.json +28 -28
  303. package/validation/tests/jobProperties/embAc.json +36 -31
  304. package/validation/tests/jobProperties/focAndOp.json +284 -0
  305. package/validation/tests/jobProperties/focInd.json +34 -34
  306. package/validation/tests/jobProperties/focVis.json +1 -1
  307. package/validation/tests/jobProperties/hover.json +39 -37
  308. package/validation/tests/jobProperties/hr.json +13 -3
  309. package/validation/tests/jobProperties/imageLink.json +0 -5
  310. package/validation/tests/jobProperties/labClash.json +68 -33
  311. package/validation/tests/jobProperties/legendLoc.json +1 -6
  312. package/validation/tests/jobProperties/lineHeight.json +2 -2
  313. package/validation/tests/jobProperties/linkAmb.json +13 -18
  314. package/validation/tests/jobProperties/linkExt.json +1 -1
  315. package/validation/tests/jobProperties/linkOldAtt.json +12 -2
  316. package/validation/tests/jobProperties/linkTo.json +1 -1
  317. package/validation/tests/jobProperties/linkUl.json +65 -65
  318. package/validation/tests/jobProperties/miniText.json +7 -2
  319. package/validation/tests/jobProperties/motion.json +4 -50
  320. package/validation/tests/jobProperties/nonTable.json +48 -3
  321. package/validation/tests/jobProperties/optRoleSel.json +12 -2
  322. package/validation/tests/jobProperties/phOnly.json +6 -16
  323. package/validation/tests/jobProperties/pseudoP.json +17 -2
  324. package/validation/tests/jobProperties/radioSet.json +30 -30
  325. package/validation/tests/jobProperties/role.json +25 -5
  326. package/validation/tests/jobProperties/secHeading.json +26 -21
  327. package/validation/tests/jobProperties/styleDiff.json +35 -5
  328. package/validation/tests/jobProperties/tabNav.json +3 -1
  329. package/validation/tests/jobProperties/targetsNear.json +237 -0
  330. package/validation/tests/jobProperties/textNodes.json +29 -29
  331. package/validation/tests/jobProperties/textSem.json +26 -1
  332. package/validation/tests/jobProperties/title.json +12 -2
  333. package/validation/tests/jobProperties/titledEl.json +39 -9
  334. package/validation/tests/jobProperties/userPath.json +317 -0
  335. package/validation/tests/jobProperties/zIndex.json +40 -35
  336. package/validation/tests/targets/allCapStyle/index.html +26 -0
  337. package/validation/tests/targets/checkpoint/index.html +38 -0
  338. package/validation/tests/targets/datalistRef/index.html +1 -1
  339. package/validation/tests/targets/focAndOp/bad.html +29 -0
  340. package/validation/tests/targets/{focOp → focAndOp}/good.html +3 -1
  341. package/validation/tests/targets/focInd/bad.html +2 -1
  342. package/validation/tests/targets/headEl/index.html +10 -1
  343. package/validation/tests/targets/{targetSmall → targetsNear}/index.html +15 -1
  344. package/validation/tests/targets/userPath/index.html +42 -0
  345. package/validation/validateTest.js +61 -9
  346. package/.claude/settings.local.json +0 -11
  347. package/.eslintrc.json +0 -41
  348. package/htmlcs/.eslintrc.json +0 -67
  349. package/validation/tests/jobProperties/linkTitle.json +0 -127
  350. package/validation/tests/jobProperties/opFoc.json +0 -164
  351. package/validation/tests/jobProperties/targetSmall.json +0 -152
  352. package/validation/tests/jobProperties/targetTiny.json +0 -142
  353. package/validation/tests/targets/focOp/bad.html +0 -25
  354. package/validation/tests/targets/linkTitle/index.html +0 -24
  355. package/validation/tests/targets/opFoc/bad.html +0 -26
  356. package/validation/tests/targets/opFoc/good.html +0 -23
@@ -0,0 +1,395 @@
1
+ {
2
+ "rule": "checkpoint",
3
+ "timeLimit": 120,
4
+ "acts": [
5
+ {
6
+ "type": "launch",
7
+ "target": {
8
+ "url": "file://validation/tests/targets/checkpoint/index.html",
9
+ "what": "page whose defects appear after an action"
10
+ }
11
+ },
12
+ {
13
+ "type": "test",
14
+ "which": "testaro",
15
+ "withItems": true,
16
+ "rules": [
17
+ "y",
18
+ "altScheme",
19
+ "linkTo"
20
+ ],
21
+ "what": "before the action, at checkpoint 0",
22
+ "expect": [
23
+ [
24
+ "standardResult.instances.length",
25
+ "=",
26
+ 0
27
+ ],
28
+ [
29
+ "checkpoint",
30
+ "=",
31
+ 0
32
+ ]
33
+ ],
34
+ "stopOnFail": false
35
+ },
36
+ {
37
+ "type": "button",
38
+ "which": "Show more",
39
+ "what": "reveal the defective section"
40
+ },
41
+ {
42
+ "type": "checkpoint",
43
+ "which": "revealed",
44
+ "what": "the page after the section is revealed"
45
+ },
46
+ {
47
+ "type": "test",
48
+ "which": "testaro",
49
+ "withItems": true,
50
+ "rules": [
51
+ "y",
52
+ "altScheme",
53
+ "linkTo"
54
+ ],
55
+ "what": "after the action, at checkpoint 1",
56
+ "expect": [
57
+ [
58
+ "checkpoint",
59
+ "=",
60
+ 1
61
+ ],
62
+ [
63
+ "standardResult.instances.length",
64
+ "=",
65
+ 2
66
+ ],
67
+ [
68
+ "standardResult.instances.0.checkpoint",
69
+ "=",
70
+ 1
71
+ ],
72
+ [
73
+ "standardResult.instances.0.ruleID",
74
+ "=",
75
+ "altScheme"
76
+ ],
77
+ [
78
+ "standardResult.instances.0.tagName",
79
+ "=",
80
+ "IMG"
81
+ ],
82
+ [
83
+ "standardResult.instances.1.ruleID",
84
+ "=",
85
+ "linkTo"
86
+ ],
87
+ [
88
+ "standardResult.instances.1.id",
89
+ "=",
90
+ "noHref"
91
+ ],
92
+ [
93
+ "standardResult.outcomeTotals.failed",
94
+ "=",
95
+ 2
96
+ ]
97
+ ],
98
+ "stopOnFail": false
99
+ },
100
+ {
101
+ "type": "test",
102
+ "which": "axe",
103
+ "rules": [
104
+ "image-alt",
105
+ "link-name"
106
+ ],
107
+ "what": "after the action, at checkpoint 1, by axe",
108
+ "expect": [
109
+ [
110
+ "checkpoint",
111
+ "=",
112
+ 1
113
+ ],
114
+ [
115
+ "data.replay.acts",
116
+ "=",
117
+ 1
118
+ ],
119
+ [
120
+ "data.replay.fidelity",
121
+ "=",
122
+ "exact"
123
+ ],
124
+ [
125
+ "standardResult.instances.length",
126
+ "=",
127
+ 2
128
+ ],
129
+ [
130
+ "standardResult.instances.0.checkpoint",
131
+ "=",
132
+ 1
133
+ ]
134
+ ],
135
+ "detailLevel": 0
136
+ },
137
+ {
138
+ "type": "test",
139
+ "which": "testaro",
140
+ "withItems": true,
141
+ "rules": [
142
+ "y",
143
+ "altScheme",
144
+ "linkTo",
145
+ "title"
146
+ ],
147
+ "scope": "changed",
148
+ "what": "after the action, at checkpoint 1, scoped to the changed subtree",
149
+ "expect": [
150
+ [
151
+ "checkpoint",
152
+ "=",
153
+ 1
154
+ ],
155
+ [
156
+ "data.scope.requested",
157
+ "=",
158
+ "changed"
159
+ ],
160
+ [
161
+ "data.scope.applied",
162
+ "=",
163
+ true
164
+ ],
165
+ [
166
+ "data.scope.roots.length",
167
+ "=",
168
+ 1
169
+ ],
170
+ [
171
+ "data.scope.pathIDs",
172
+ "e",
173
+ [
174
+ "/html/body/main[1]/div[1]/section[1]"
175
+ ]
176
+ ],
177
+ [
178
+ "data.scope.localRules",
179
+ "e",
180
+ [
181
+ "altScheme",
182
+ "linkTo"
183
+ ]
184
+ ],
185
+ [
186
+ "data.scope.pageRules",
187
+ "e",
188
+ [
189
+ "title"
190
+ ]
191
+ ],
192
+ [
193
+ "standardResult.instances.length",
194
+ "=",
195
+ 2
196
+ ],
197
+ [
198
+ "standardResult.instances.0.ruleID",
199
+ "=",
200
+ "altScheme"
201
+ ],
202
+ [
203
+ "standardResult.instances.1.ruleID",
204
+ "=",
205
+ "linkTo"
206
+ ]
207
+ ],
208
+ "stopOnFail": false
209
+ },
210
+ {
211
+ "type": "test",
212
+ "which": "axe",
213
+ "rules": [
214
+ "image-alt",
215
+ "link-name",
216
+ "page-has-heading-one"
217
+ ],
218
+ "scope": "changed",
219
+ "what": "after the action, at checkpoint 1, by axe, scoped to the changed subtree",
220
+ "expect": [
221
+ [
222
+ "checkpoint",
223
+ "=",
224
+ 1
225
+ ],
226
+ [
227
+ "data.scope.applied",
228
+ "=",
229
+ true
230
+ ],
231
+ [
232
+ "standardResult.instances.length",
233
+ "=",
234
+ 2
235
+ ],
236
+ [
237
+ "standardResult.instances.0.checkpoint",
238
+ "=",
239
+ 1
240
+ ]
241
+ ],
242
+ "detailLevel": 0
243
+ }
244
+ ],
245
+ "expectReport": [
246
+ [
247
+ "checkpoints.length",
248
+ "=",
249
+ 2
250
+ ],
251
+ [
252
+ "checkpoints.1.name",
253
+ "=",
254
+ "revealed"
255
+ ],
256
+ [
257
+ "checkpoints.1.kind",
258
+ "=",
259
+ "interaction"
260
+ ],
261
+ [
262
+ "checkpoints.1.replay",
263
+ "e",
264
+ [
265
+ 2
266
+ ]
267
+ ],
268
+ [
269
+ "pathIDs"
270
+ ],
271
+ [
272
+ "catalogNextIndex"
273
+ ],
274
+ [
275
+ "checkpoints.1.testActs",
276
+ "e",
277
+ [
278
+ 4,
279
+ 5,
280
+ 6,
281
+ 7
282
+ ]
283
+ ],
284
+ [
285
+ "flow.checkpoints.length",
286
+ "=",
287
+ 2
288
+ ],
289
+ [
290
+ "flow.checkpoints.0.tools",
291
+ "e",
292
+ [
293
+ "testaro"
294
+ ]
295
+ ],
296
+ [
297
+ "flow.checkpoints.1.tools",
298
+ "e",
299
+ [
300
+ "axe",
301
+ "testaro"
302
+ ]
303
+ ],
304
+ [
305
+ "flow.checkpoints.1.issueCount",
306
+ "=",
307
+ 4
308
+ ],
309
+ [
310
+ "flow.deltas.length",
311
+ "=",
312
+ 1
313
+ ],
314
+ [
315
+ "flow.deltas.0.tools",
316
+ "e",
317
+ [
318
+ "testaro"
319
+ ]
320
+ ],
321
+ [
322
+ "flow.deltas.0.notObserved",
323
+ "e",
324
+ [
325
+ "axe"
326
+ ]
327
+ ],
328
+ [
329
+ "flow.deltas.0.added.length",
330
+ "=",
331
+ 2
332
+ ],
333
+ [
334
+ "flow.deltas.0.added.0.ruleID",
335
+ "=",
336
+ "altScheme"
337
+ ],
338
+ [
339
+ "flow.deltas.0.added.0.pathID",
340
+ "=",
341
+ "/html/body/main[1]/div[1]/section[1]/p[2]/img[1]"
342
+ ],
343
+ [
344
+ "flow.deltas.0.added.0.actIndexes",
345
+ "e",
346
+ [
347
+ 4,
348
+ 6
349
+ ]
350
+ ],
351
+ [
352
+ "flow.deltas.0.persisted.length",
353
+ "=",
354
+ 0
355
+ ],
356
+ [
357
+ "flow.deltas.0.removed.length",
358
+ "=",
359
+ 0
360
+ ],
361
+ [
362
+ "flow.deltas.0.structure.roots",
363
+ "e",
364
+ [
365
+ "/html/body/main[1]/div[1]/section[1]"
366
+ ]
367
+ ],
368
+ [
369
+ "flow.deltas.0.structure.counts.added",
370
+ "=",
371
+ 10
372
+ ],
373
+ [
374
+ "flow.deltas.0.structure.counts.removed",
375
+ "=",
376
+ 0
377
+ ],
378
+ [
379
+ "flow.deltas.0.aria.addedLineCount",
380
+ ">",
381
+ 0
382
+ ],
383
+ [
384
+ "flow.deltas.0.aria.removedLineCount",
385
+ "=",
386
+ 0
387
+ ],
388
+ [
389
+ "scope"
390
+ ],
391
+ [
392
+ "ruleScopeRoots"
393
+ ]
394
+ ]
395
+ }
@@ -23,7 +23,7 @@
23
23
  [
24
24
  "standardResult.totals.3",
25
25
  "=",
26
- 2
26
+ 3
27
27
  ],
28
28
  [
29
29
  "standardResult.instances.0.ruleID",
@@ -33,7 +33,7 @@
33
33
  [
34
34
  "standardResult.instances.0.what",
35
35
  "=",
36
- "list attribute of the element references an ambiguous or missing datalist element"
36
+ "input element list attribute is empty"
37
37
  ],
38
38
  [
39
39
  "standardResult.instances.0.ordinalSeverity",
@@ -65,10 +65,25 @@
65
65
  "i",
66
66
  "material"
67
67
  ],
68
+ [
69
+ "standardResult.instances.1.what",
70
+ "=",
71
+ "input element list attribute references a missing element"
72
+ ],
68
73
  [
69
74
  "standardResult.instances.1.excerpt",
70
75
  "i",
71
76
  "city"
77
+ ],
78
+ [
79
+ "standardResult.instances.2.what",
80
+ "=",
81
+ "input element list attribute references a non-datalist element"
82
+ ],
83
+ [
84
+ "standardResult.instances.2.excerpt",
85
+ "i",
86
+ "thing"
72
87
  ]
73
88
  ],
74
89
  "rules": [
@@ -90,7 +105,7 @@
90
105
  [
91
106
  "standardResult.totals.3",
92
107
  "=",
93
- 2
108
+ 3
94
109
  ],
95
110
  [
96
111
  "standardResult.instances.0.ruleID",
@@ -100,7 +115,7 @@
100
115
  [
101
116
  "standardResult.instances.0.what",
102
117
  "=",
103
- "list attributes of elements reference ambiguous or missing datalist elements"
118
+ "list attributes of input elements are empty or IDs of no or non-datalist elements"
104
119
  ],
105
120
  [
106
121
  "standardResult.instances.0.ordinalSeverity",
@@ -110,7 +125,7 @@
110
125
  [
111
126
  "standardResult.instances.0.count",
112
127
  "=",
113
- 2
128
+ 3
114
129
  ]
115
130
  ],
116
131
  "rules": [
@@ -16,7 +16,7 @@
16
16
  "stopOnFail": true,
17
17
  "expect": [
18
18
  [
19
- "standardResult.totals.1",
19
+ "standardResult.totals.0",
20
20
  "=",
21
21
  5
22
22
  ],
@@ -63,12 +63,32 @@
63
63
  [
64
64
  "standardResult.instances.3.ordinalSeverity",
65
65
  "=",
66
- 1
66
+ 0
67
67
  ],
68
68
  [
69
69
  "standardResult.instances.4.tagName",
70
70
  "=",
71
71
  "SPAN"
72
+ ],
73
+ [
74
+ "standardResult.totals.1",
75
+ "=",
76
+ 0
77
+ ],
78
+ [
79
+ "standardResult.instances.0.what",
80
+ "i",
81
+ "rotation transformation"
82
+ ],
83
+ [
84
+ "standardResult.instances.2.what",
85
+ "i",
86
+ "perspective transformation"
87
+ ],
88
+ [
89
+ "standardResult.instances.3.what",
90
+ "i",
91
+ "scale transformation"
72
92
  ]
73
93
  ],
74
94
  "rules": [
@@ -83,7 +103,7 @@
83
103
  "stopOnFail": true,
84
104
  "expect": [
85
105
  [
86
- "standardResult.totals.1",
106
+ "standardResult.totals.0",
87
107
  "=",
88
108
  5
89
109
  ],
@@ -96,6 +116,11 @@
96
116
  "standardResult.instances.0.count",
97
117
  "=",
98
118
  5
119
+ ],
120
+ [
121
+ "standardResult.instances.0.ordinalSeverity",
122
+ "=",
123
+ 0
99
124
  ]
100
125
  ],
101
126
  "rules": [
@@ -72,9 +72,9 @@
72
72
  "HTML"
73
73
  ],
74
74
  [
75
- "standardResult.instances.0.location.spec",
75
+ "standardResult.instances.0.outcome",
76
76
  "=",
77
- "html"
77
+ "failed"
78
78
  ]
79
79
  ],
80
80
  "withItems": true,
@@ -5,37 +5,10 @@
5
5
  {
6
6
  "type": "launch",
7
7
  "target": {
8
- "url": "file://validation/tests/targets/dupAtt/good.html",
9
- "what": "page without duplicate attributes"
8
+ "url": "file://validation/tests/targets/dupAtt/bad.html",
9
+ "what": "page with duplicate attributes"
10
10
  }
11
11
  },
12
- {
13
- "type": "test",
14
- "which": "testaro",
15
- "withItems": true,
16
- "stopOnFail": true,
17
- "expect": [
18
- [
19
- "standardResult.totals.2",
20
- "=",
21
- 0
22
- ],
23
- [
24
- "standardResult.instances.length",
25
- "=",
26
- 0
27
- ]
28
- ],
29
- "rules": [
30
- "y",
31
- "dupAtt"
32
- ]
33
- },
34
- {
35
- "type": "url",
36
- "which": "file://validation/tests/targets/dupAtt/bad.html",
37
- "what": "page with duplicate attributes"
38
- },
39
12
  {
40
13
  "type": "test",
41
14
  "which": "testaro",
@@ -54,14 +27,29 @@
54
27
  ],
55
28
  [
56
29
  "standardResult.instances.0.what",
57
- "i",
58
- "attributes with the same name"
30
+ "=",
31
+ "P element has 2 attributes named class"
59
32
  ],
60
33
  [
61
34
  "standardResult.instances.0.tagName",
62
35
  "=",
63
36
  "P"
64
37
  ],
38
+ [
39
+ "standardResult.instances.0.id",
40
+ "=",
41
+ "daParagraph"
42
+ ],
43
+ [
44
+ "standardResult.instances.0.excerpt",
45
+ "=",
46
+ "Submit"
47
+ ],
48
+ [
49
+ "standardResult.instances.1.what",
50
+ "=",
51
+ "BUTTON element has 2 attributes named aria-label"
52
+ ],
65
53
  [
66
54
  "standardResult.instances.1.tagName",
67
55
  "=",
@@ -75,7 +63,7 @@
75
63
  [
76
64
  "standardResult.instances.1.location.doc",
77
65
  "=",
78
- "source"
66
+ "dom"
79
67
  ],
80
68
  [
81
69
  "standardResult.instances.1.location.type",
@@ -90,7 +78,7 @@
90
78
  [
91
79
  "standardResult.instances.1.excerpt",
92
80
  "i",
93
- "aria-label"
81
+ "A paragraph"
94
82
  ]
95
83
  ],
96
84
  "rules": [
@@ -129,6 +117,33 @@
129
117
  "y",
130
118
  "dupAtt"
131
119
  ]
120
+ },
121
+ {
122
+ "type": "url",
123
+ "which": "file://validation/tests/targets/dupAtt/good.html",
124
+ "what": "page without duplicate attributes"
125
+ },
126
+ {
127
+ "type": "test",
128
+ "which": "testaro",
129
+ "withItems": true,
130
+ "stopOnFail": true,
131
+ "expect": [
132
+ [
133
+ "standardResult.totals.2",
134
+ "=",
135
+ 0
136
+ ],
137
+ [
138
+ "standardResult.instances.length",
139
+ "=",
140
+ 0
141
+ ]
142
+ ],
143
+ "rules": [
144
+ "y",
145
+ "dupAtt"
146
+ ]
132
147
  }
133
148
  ]
134
149
  }