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
@@ -15,7 +15,7 @@
15
15
  "stopOnFail": true,
16
16
  "expect": [
17
17
  [
18
- "result.elements.data.total",
18
+ "data.ruleData.elements.total",
19
19
  "=",
20
20
  21
21
21
  ]
@@ -35,7 +35,7 @@
35
35
  "stopOnFail": true,
36
36
  "expect": [
37
37
  [
38
- "result.elements.data.total",
38
+ "data.ruleData.elements.total",
39
39
  "=",
40
40
  5
41
41
  ]
@@ -55,7 +55,7 @@
55
55
  "stopOnFail": true,
56
56
  "expect": [
57
57
  [
58
- "result.elements.data.total",
58
+ "data.ruleData.elements.total",
59
59
  "=",
60
60
  2
61
61
  ]
@@ -76,7 +76,7 @@
76
76
  "stopOnFail": true,
77
77
  "expect": [
78
78
  [
79
- "result.elements.data.total",
79
+ "data.ruleData.elements.total",
80
80
  "=",
81
81
  2
82
82
  ]
@@ -97,37 +97,37 @@
97
97
  "stopOnFail": true,
98
98
  "expect": [
99
99
  [
100
- "result.elements.data.total",
100
+ "data.ruleData.elements.total",
101
101
  "=",
102
102
  1
103
103
  ],
104
104
  [
105
- "result.elements.data.items.0.tagName",
105
+ "data.ruleData.elements.items.0.tagName",
106
106
  "=",
107
107
  "LI"
108
108
  ],
109
109
  [
110
- "result.elements.data.items.0.parentTagName",
110
+ "data.ruleData.elements.items.0.parentTagName",
111
111
  "=",
112
112
  "UL"
113
113
  ],
114
114
  [
115
- "result.elements.data.items.0.code",
115
+ "data.ruleData.elements.items.0.code",
116
116
  "i",
117
117
  "first"
118
118
  ],
119
119
  [
120
- "result.elements.data.items.0.attributes.0.name",
120
+ "data.ruleData.elements.items.0.attributes.0.name",
121
121
  "=",
122
122
  "class"
123
123
  ],
124
124
  [
125
- "result.elements.data.items.0.attributes.0.value",
125
+ "data.ruleData.elements.items.0.attributes.0.value",
126
126
  "=",
127
127
  "first"
128
128
  ],
129
129
  [
130
- "result.elements.data.items.0.textContent",
130
+ "data.ruleData.elements.items.0.textContent",
131
131
  "=",
132
132
  "Io"
133
133
  ]
@@ -148,17 +148,17 @@
148
148
  "stopOnFail": true,
149
149
  "expect": [
150
150
  [
151
- "result.elements.data.total",
151
+ "data.ruleData.elements.total",
152
152
  "=",
153
153
  2
154
154
  ],
155
155
  [
156
- "result.elements.data.items.0.labels.1",
156
+ "data.ruleData.elements.items.0.labels.1",
157
157
  "i",
158
158
  "anything"
159
159
  ],
160
160
  [
161
- "result.elements.data.items.1.labelers.0",
161
+ "data.ruleData.elements.items.1.labelers.0",
162
162
  "i",
163
163
  "something else"
164
164
  ]
@@ -179,12 +179,12 @@
179
179
  "stopOnFail": true,
180
180
  "expect": [
181
181
  [
182
- "result.elements.data.items.0.textContent",
182
+ "data.ruleData.elements.items.0.textContent",
183
183
  "=",
184
184
  "Io"
185
185
  ],
186
186
  [
187
- "result.elements.data.items.0.parentTextContent",
187
+ "data.ruleData.elements.items.0.parentTextContent",
188
188
  "i",
189
189
  "tute"
190
190
  ]
@@ -206,17 +206,17 @@
206
206
  "stopOnFail": true,
207
207
  "expect": [
208
208
  [
209
- "result.elements.data.total",
209
+ "data.ruleData.elements.total",
210
210
  "=",
211
211
  1
212
212
  ],
213
213
  [
214
- "result.elements.data.items.0.parentTextContent",
214
+ "data.ruleData.elements.items.0.parentTextContent",
215
215
  "i",
216
216
  "alia"
217
217
  ],
218
218
  [
219
- "result.elements.data.items.0.parentTextContent",
219
+ "data.ruleData.elements.items.0.parentTextContent",
220
220
  "i",
221
221
  "tute"
222
222
  ]
@@ -237,47 +237,47 @@
237
237
  "stopOnFail": true,
238
238
  "expect": [
239
239
  [
240
- "result.elements.data.items.0.textContent",
240
+ "data.ruleData.elements.items.0.textContent",
241
241
  "=",
242
242
  "This is a paragraph."
243
243
  ],
244
244
  [
245
- "result.elements.data.items.0.parentTagName",
245
+ "data.ruleData.elements.items.0.parentTagName",
246
246
  "=",
247
247
  "MAIN"
248
248
  ],
249
249
  [
250
- "result.elements.data.items.0.parentTextContent",
250
+ "data.ruleData.elements.items.0.parentTextContent",
251
251
  "i",
252
252
  "something."
253
253
  ],
254
254
  [
255
- "result.elements.data.items.0.siblings.before.0.type",
255
+ "data.ruleData.elements.items.0.siblings.before.0.type",
256
256
  "=",
257
257
  3
258
258
  ],
259
259
  [
260
- "result.elements.data.items.0.siblings.before.1.type",
260
+ "data.ruleData.elements.items.0.siblings.before.1.type",
261
261
  "=",
262
262
  1
263
263
  ],
264
264
  [
265
- "result.elements.data.items.0.siblings.before.1.tagName",
265
+ "data.ruleData.elements.items.0.siblings.before.1.tagName",
266
266
  "=",
267
267
  "H1"
268
268
  ],
269
269
  [
270
- "result.elements.data.items.0.siblings.after.12.type",
270
+ "data.ruleData.elements.items.0.siblings.after.12.type",
271
271
  "=",
272
272
  1
273
273
  ],
274
274
  [
275
- "result.elements.data.items.0.siblings.after.12.tagName",
275
+ "data.ruleData.elements.items.0.siblings.after.12.tagName",
276
276
  "=",
277
277
  "LABEL"
278
278
  ],
279
279
  [
280
- "result.elements.data.items.0.siblings.after.12.attributes.0.name",
280
+ "data.ruleData.elements.items.0.siblings.after.12.attributes.0.name",
281
281
  "=",
282
282
  "for"
283
283
  ]
@@ -5,37 +5,10 @@
5
5
  {
6
6
  "type": "launch",
7
7
  "target": {
8
- "url": "file://validation/tests/targets/embAc/good.html",
9
- "what": "page without embedding in links or buttons"
8
+ "url": "file://validation/tests/targets/embAc/bad.html",
9
+ "what": "page with embeddings in links and buttons"
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
- "embAc"
32
- ]
33
- },
34
- {
35
- "type": "url",
36
- "which": "file://validation/tests/targets/embAc/bad.html",
37
- "what": "page with embeddings in links and buttons"
38
- },
39
12
  {
40
13
  "type": "test",
41
14
  "which": "testaro",
@@ -87,10 +60,15 @@
87
60
  "i",
88
61
  "buttons"
89
62
  ],
63
+ [
64
+ "standardResult.instances.1.tagName",
65
+ "=",
66
+ "INPUT"
67
+ ],
90
68
  [
91
69
  "standardResult.instances.1.excerpt",
92
70
  "i",
93
- "yes"
71
+ "checkboxes"
94
72
  ],
95
73
  [
96
74
  "standardResult.instances.6.ordinalSeverity",
@@ -122,7 +100,7 @@
122
100
  [
123
101
  "standardResult.instances.0.what",
124
102
  "i",
125
- "are contained"
103
+ "are embedded in"
126
104
  ],
127
105
  [
128
106
  "standardResult.instances.0.count",
@@ -139,6 +117,33 @@
139
117
  "y",
140
118
  "embAc"
141
119
  ]
120
+ },
121
+ {
122
+ "type": "url",
123
+ "which": "file://validation/tests/targets/embAc/good.html",
124
+ "what": "page without embedding in links or buttons"
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
+ "embAc"
146
+ ]
142
147
  }
143
148
  ]
144
149
  }
@@ -0,0 +1,284 @@
1
+ {
2
+ "rule": "focAndOp",
3
+ "timeLimit": 20,
4
+ "acts": [
5
+ {
6
+ "type": "launch",
7
+ "target": {
8
+ "url": "file://validation/tests/targets/focAndOp/bad.html",
9
+ "what": "page with deviant focusability and operability"
10
+ }
11
+ },
12
+ {
13
+ "type": "test",
14
+ "which": "testaro",
15
+ "withItems": true,
16
+ "stopOnFail": true,
17
+ "expect": [
18
+ [
19
+ "standardResult.totals.0",
20
+ "=",
21
+ 0
22
+ ],
23
+ [
24
+ "standardResult.totals.1",
25
+ "=",
26
+ 0
27
+ ],
28
+ [
29
+ "standardResult.totals.2",
30
+ "=",
31
+ 2
32
+ ],
33
+ [
34
+ "standardResult.totals.3",
35
+ "=",
36
+ 3
37
+ ],
38
+ [
39
+ "standardResult.instances.length",
40
+ "=",
41
+ 5
42
+ ],
43
+ [
44
+ "standardResult.instances.0.ruleID",
45
+ "=",
46
+ "focAndOp"
47
+ ],
48
+ [
49
+ "standardResult.instances.0.what",
50
+ "=",
51
+ "Element is operable (tagname BUTTON) but not Tab-focusable"
52
+ ],
53
+ [
54
+ "standardResult.instances.0.ordinalSeverity",
55
+ "=",
56
+ 3
57
+ ],
58
+ [
59
+ "standardResult.instances.0.outcome",
60
+ "=",
61
+ "failed"
62
+ ],
63
+ [
64
+ "standardResult.instances.0.tagName",
65
+ "=",
66
+ "BUTTON"
67
+ ],
68
+ [
69
+ "standardResult.instances.0.id",
70
+ "=",
71
+ "badButton"
72
+ ],
73
+ [
74
+ "standardResult.instances.0.location.doc",
75
+ "=",
76
+ "dom"
77
+ ],
78
+ [
79
+ "standardResult.instances.0.location.type",
80
+ "=",
81
+ "selector"
82
+ ],
83
+ [
84
+ "standardResult.instances.0.location.spec",
85
+ "=",
86
+ "#badButton"
87
+ ],
88
+ [
89
+ "standardResult.instances.0.excerpt",
90
+ "=",
91
+ "button"
92
+ ],
93
+ [
94
+ "standardResult.instances.1.what",
95
+ "=",
96
+ "Element is Tab-focusable but not operable"
97
+ ],
98
+ [
99
+ "standardResult.instances.1.ordinalSeverity",
100
+ "=",
101
+ 2
102
+ ],
103
+ [
104
+ "standardResult.instances.1.tagName",
105
+ "=",
106
+ "SPAN"
107
+ ],
108
+ [
109
+ "standardResult.instances.1.id",
110
+ "=",
111
+ "badSpan"
112
+ ],
113
+ [
114
+ "standardResult.instances.1.location.spec",
115
+ "=",
116
+ "#badSpan"
117
+ ],
118
+ [
119
+ "standardResult.instances.1.excerpt",
120
+ "=",
121
+ "focusable span"
122
+ ],
123
+ [
124
+ "standardResult.instances.2.what",
125
+ "=",
126
+ "Element is Tab-focusable but not operable"
127
+ ],
128
+ [
129
+ "standardResult.instances.2.ordinalSeverity",
130
+ "=",
131
+ 2
132
+ ],
133
+ [
134
+ "standardResult.instances.2.tagName",
135
+ "=",
136
+ "SPAN"
137
+ ],
138
+ [
139
+ "standardResult.instances.2.location.type",
140
+ "=",
141
+ "box"
142
+ ],
143
+ [
144
+ "standardResult.instances.2.location.spec.width",
145
+ ">",
146
+ 0
147
+ ],
148
+ [
149
+ "standardResult.instances.2.excerpt",
150
+ "=",
151
+ "focusable part"
152
+ ],
153
+ [
154
+ "standardResult.instances.3.what",
155
+ "=",
156
+ "Element is operable (click listener) but not Tab-focusable"
157
+ ],
158
+ [
159
+ "standardResult.instances.3.ordinalSeverity",
160
+ "=",
161
+ 3
162
+ ],
163
+ [
164
+ "standardResult.instances.3.id",
165
+ "=",
166
+ "clickable"
167
+ ],
168
+ [
169
+ "standardResult.instances.4.what",
170
+ "=",
171
+ "Element is operable (pointer cursor) but not Tab-focusable"
172
+ ],
173
+ [
174
+ "standardResult.instances.4.ordinalSeverity",
175
+ "=",
176
+ 3
177
+ ],
178
+ [
179
+ "standardResult.instances.4.id",
180
+ "=",
181
+ "pointer"
182
+ ]
183
+ ],
184
+ "rules": [
185
+ "y",
186
+ "focAndOp"
187
+ ]
188
+ },
189
+ {
190
+ "type": "test",
191
+ "which": "testaro",
192
+ "withItems": false,
193
+ "stopOnFail": true,
194
+ "expect": [
195
+ [
196
+ "standardResult.totals.2",
197
+ "=",
198
+ 2
199
+ ],
200
+ [
201
+ "standardResult.totals.3",
202
+ "=",
203
+ 3
204
+ ],
205
+ [
206
+ "standardResult.instances.length",
207
+ "=",
208
+ 2
209
+ ],
210
+ [
211
+ "standardResult.instances.0.ruleID",
212
+ "=",
213
+ "focAndOp"
214
+ ],
215
+ [
216
+ "standardResult.instances.0.what",
217
+ "=",
218
+ "Elements are Tab-focusable but not operable or vice versa"
219
+ ],
220
+ [
221
+ "standardResult.instances.0.ordinalSeverity",
222
+ "=",
223
+ 2
224
+ ],
225
+ [
226
+ "standardResult.instances.0.count",
227
+ "=",
228
+ 2
229
+ ],
230
+ [
231
+ "standardResult.instances.0.tagName",
232
+ "=",
233
+ ""
234
+ ],
235
+ [
236
+ "standardResult.instances.1.ordinalSeverity",
237
+ "=",
238
+ 3
239
+ ],
240
+ [
241
+ "standardResult.instances.1.count",
242
+ "=",
243
+ 3
244
+ ]
245
+ ],
246
+ "rules": [
247
+ "y",
248
+ "focAndOp"
249
+ ]
250
+ },
251
+ {
252
+ "type": "url",
253
+ "which": "file://validation/tests/targets/focAndOp/good.html",
254
+ "what": "page with standard focusability and operability"
255
+ },
256
+ {
257
+ "type": "test",
258
+ "which": "testaro",
259
+ "withItems": true,
260
+ "stopOnFail": true,
261
+ "expect": [
262
+ [
263
+ "standardResult.totals.2",
264
+ "=",
265
+ 0
266
+ ],
267
+ [
268
+ "standardResult.totals.3",
269
+ "=",
270
+ 0
271
+ ],
272
+ [
273
+ "standardResult.instances.length",
274
+ "=",
275
+ 0
276
+ ]
277
+ ],
278
+ "rules": [
279
+ "y",
280
+ "focAndOp"
281
+ ]
282
+ }
283
+ ]
284
+ }
@@ -5,42 +5,10 @@
5
5
  {
6
6
  "type": "launch",
7
7
  "target": {
8
- "url": "file://validation/tests/targets/focInd/good.html",
9
- "what": "page with outline focus indication"
8
+ "url": "file://validation/tests/targets/focInd/bad.html",
9
+ "what": "page with mixed focus indication"
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.totals.3",
25
- "=",
26
- 0
27
- ],
28
- [
29
- "standardResult.instances.length",
30
- "=",
31
- 0
32
- ]
33
- ],
34
- "rules": [
35
- "y",
36
- "focInd"
37
- ]
38
- },
39
- {
40
- "type": "url",
41
- "which": "file://validation/tests/targets/focInd/bad.html",
42
- "what": "page with mixed focus indication"
43
- },
44
12
  {
45
13
  "type": "test",
46
14
  "which": "testaro",
@@ -160,6 +128,38 @@
160
128
  "y",
161
129
  "focInd"
162
130
  ]
131
+ },
132
+ {
133
+ "type": "url",
134
+ "which": "file://validation/tests/targets/focInd/good.html",
135
+ "what": "page with outline focus indication"
136
+ },
137
+ {
138
+ "type": "test",
139
+ "which": "testaro",
140
+ "withItems": true,
141
+ "stopOnFail": true,
142
+ "expect": [
143
+ [
144
+ "standardResult.totals.2",
145
+ "=",
146
+ 0
147
+ ],
148
+ [
149
+ "standardResult.totals.3",
150
+ "=",
151
+ 0
152
+ ],
153
+ [
154
+ "standardResult.instances.length",
155
+ "=",
156
+ 0
157
+ ]
158
+ ],
159
+ "rules": [
160
+ "y",
161
+ "focInd"
162
+ ]
163
163
  }
164
164
  ]
165
165
  }
@@ -28,7 +28,7 @@
28
28
  [
29
29
  "standardResult.instances.0.what",
30
30
  "i",
31
- "link is above"
31
+ "above or to the left of the display"
32
32
  ],
33
33
  [
34
34
  "standardResult.instances.0.tagName",