testaro 55.5.13 → 56.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.
Files changed (65) hide show
  1. package/actSpecs.js +1 -1
  2. package/package.json +1 -1
  3. package/procs/doTestAct.js +2 -2
  4. package/procs/isInlineLink.js +9 -26
  5. package/run.js +4 -0
  6. package/testaro/focVis.js +21 -26
  7. package/tests/testaro.js +2 -1
  8. package/validation/done/README.md +1 -1
  9. package/validation/tests/{jobs → jobProperties}/allCaps.json +6 -13
  10. package/validation/tests/{jobs → jobProperties}/allHidden.json +6 -13
  11. package/validation/tests/{jobs → jobProperties}/allSlanted.json +6 -13
  12. package/validation/tests/{jobs → jobProperties}/attVal.json +6 -13
  13. package/validation/tests/{jobs → jobProperties}/autocomplete.json +6 -13
  14. package/validation/tests/{jobs → jobProperties}/bulk.json +6 -13
  15. package/validation/tests/{jobs → jobProperties}/buttonMenu.json +6 -13
  16. package/validation/tests/{jobs → jobProperties}/distortion.json +6 -13
  17. package/validation/tests/{jobs → jobProperties}/docType.json +6 -13
  18. package/validation/tests/{jobs → jobProperties}/dupAtt.json +6 -13
  19. package/validation/tests/{jobs → jobProperties}/elements.json +6 -12
  20. package/validation/tests/{jobs → jobProperties}/embAc.json +6 -13
  21. package/validation/tests/{jobs → jobProperties}/focAll.json +6 -13
  22. package/validation/tests/{jobs → jobProperties}/focInd.json +6 -13
  23. package/validation/tests/{jobs → jobProperties}/focOp.json +6 -13
  24. package/validation/tests/{jobs → jobProperties}/focVis.json +6 -13
  25. package/validation/tests/{jobs → jobProperties}/headEl.json +6 -13
  26. package/validation/tests/{jobs → jobProperties}/headingAmb.json +6 -13
  27. package/validation/tests/{jobs → jobProperties}/hovInd.json +6 -13
  28. package/validation/tests/{jobs → jobProperties}/hover.json +6 -13
  29. package/validation/tests/{jobs → jobProperties}/hr.json +6 -13
  30. package/validation/tests/{jobs → jobProperties}/labClash.json +6 -13
  31. package/validation/tests/{jobs → jobProperties}/lineHeight.json +6 -13
  32. package/validation/tests/{jobs → jobProperties}/linkAmb.json +8 -17
  33. package/validation/tests/{jobs → jobProperties}/linkExt.json +6 -13
  34. package/validation/tests/{jobs → jobProperties}/linkOldAtt.json +6 -13
  35. package/validation/tests/{jobs → jobProperties}/linkTitle.json +6 -13
  36. package/validation/tests/{jobs → jobProperties}/linkTo.json +6 -13
  37. package/validation/tests/{jobs → jobProperties}/linkUl.json +17 -24
  38. package/validation/tests/{jobs → jobProperties}/miniText.json +6 -13
  39. package/validation/tests/{jobs → jobProperties}/motion.json +6 -13
  40. package/validation/tests/{jobs → jobProperties}/nonTable.json +6 -13
  41. package/validation/tests/{jobs → jobProperties}/opFoc.json +6 -13
  42. package/validation/tests/{jobs → jobProperties/pending}/adbID.json +6 -13
  43. package/validation/tests/{jobs → jobProperties/pending}/altScheme.json +6 -13
  44. package/validation/tests/{jobs → jobProperties/pending}/captionLoc.json +6 -13
  45. package/validation/tests/{jobs → jobProperties/pending}/datalistRef.json +6 -13
  46. package/validation/tests/{jobs → jobProperties/pending}/imageLink.json +6 -13
  47. package/validation/tests/{jobs → jobProperties/pending}/legendLoc.json +6 -13
  48. package/validation/tests/{jobs → jobProperties/pending}/optRoleSel.json +6 -13
  49. package/validation/tests/{jobs → jobProperties/pending}/phOnly.json +6 -13
  50. package/validation/tests/{jobs → jobProperties/pending}/secHeading.json +6 -13
  51. package/validation/tests/{jobs → jobProperties/pending}/textSem.json +6 -13
  52. package/validation/tests/{jobs → jobProperties}/pseudoP.json +6 -13
  53. package/validation/tests/{jobs → jobProperties}/radioSet.json +6 -13
  54. package/validation/tests/{jobs → jobProperties}/role.json +6 -13
  55. package/validation/tests/{jobs → jobProperties}/styleDiff.json +6 -13
  56. package/validation/tests/{jobs → jobProperties}/tabNav.json +6 -13
  57. package/validation/tests/{jobs → jobProperties}/targetSize.json +6 -13
  58. package/validation/tests/{jobs → jobProperties}/textNodes.json +6 -12
  59. package/validation/tests/{jobs → jobProperties}/title.json +6 -12
  60. package/validation/tests/{jobs → jobProperties}/titledEl.json +6 -13
  61. package/validation/tests/{jobs → jobProperties}/zIndex.json +6 -13
  62. package/validation/tests/targets/linkUl/bad.html +4 -16
  63. package/validation/tests/targets/linkUl/good.html +3 -2
  64. package/validation/tests/targets/linkUl/na.html +5 -3
  65. package/validation/validateTest.js +77 -46
package/actSpecs.js CHANGED
@@ -146,7 +146,7 @@ exports.actSpecs = {
146
146
  'Perform tests of a tool',
147
147
  {
148
148
  which: [true, 'string', 'isTest', 'tool name'],
149
- launch: [false, 'object', '', 'if new browser to be launched, properties different from target, browserID, and what of the job'],
149
+ launch: [false, 'object', '', 'new target, browserID, and/or what, if any'],
150
150
  rules: [false, 'array', 'areStrings', 'rule IDs or (for nuVal) specifications, if not all']
151
151
  }
152
152
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testaro",
3
- "version": "55.5.13",
3
+ "version": "56.0.0",
4
4
  "description": "Run 1000 web accessibility tests from 11 tools and get a standardized report",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -63,8 +63,8 @@ const doTestAct = async () => {
63
63
  report,
64
64
  debug,
65
65
  waits,
66
- act.launch.browserID || report.browserID,
67
- act.launch.target && act.launch.target.url || report.target.url
66
+ act.launch && act.launch.browserID || report.browserID,
67
+ act.launch && act.launch.target && act.launch.target.url || report.target.url
68
68
  );
69
69
  // If the launch aborted the job:
70
70
  if (report.jobData && report.jobData.aborted) {
@@ -1,5 +1,5 @@
1
1
  /*
2
- © 2023–2024 CVS Health and/or one of its affiliates. All rights reserved.
2
+ © 2023–2025 CVS Health and/or one of its affiliates. All rights reserved.
3
3
 
4
4
  MIT License
5
5
 
@@ -30,6 +30,9 @@
30
30
  */
31
31
 
32
32
  exports.isInlineLink = async loc => await loc.evaluate(element => {
33
+ // Returns the normalized text content of an element.
34
+ const realTextOf = element => element ? element.textContent.replace(/\s/g, '') : '';
35
+ const blockElementTypes = 'p, div, li, h1, h2, h3, h4, h5, h6';
33
36
  // If the element is not a link:
34
37
  if (element.tagName !== 'A' && element.getAttribute('role') !== 'link') {
35
38
  // Classify it as not an inline link.
@@ -37,36 +40,16 @@ exports.isInlineLink = async loc => await loc.evaluate(element => {
37
40
  }
38
41
  // Otherwise, i.e. if it is a link:
39
42
  else {
40
- let listAncestor;
41
43
  // Initialize the link as inline.
42
44
  let result = true;
43
- // If its display style property is block:
44
- const styleDec = window.getComputedStyle(element);
45
- if (styleDec.display === 'block') {
45
+ // If its display style property is block or is tantamount to block:
46
+ if (
47
+ window.getComputedStyle(element).display === 'block'
48
+ || realTextOf(element.closest(blockElementTypes)) === realTextOf(element)
49
+ ) {
46
50
  // Reclassify the link as non-inline.
47
51
  result = false;
48
52
  }
49
- // Otherwise, if it is in a list item in a list of at least 2 links:
50
- else if (listAncestor = element.closest('ul, ol')) {
51
- if (listAncestor.children.length > 1 && Array.from(listAncestor.children).every(child => {
52
- const isValidListItem = child.tagName === 'LI';
53
- const has1Link = child.querySelectorAll('a').length === 1;
54
- return isValidListItem && has1Link;
55
- })) {
56
- // If the list text is entirely link text:
57
- const listText = listAncestor.textContent.replace(/\s/g, '');
58
- let linkTextRaw = '';
59
- listAncestor.querySelectorAll('a').forEach(link => {
60
- linkTextRaw += link.textContent;
61
- });
62
- const linkText = linkTextRaw.replace(/\s/g, '');
63
- console.log(linkText);
64
- if (listText === linkText && listText.length) {
65
- // Reclassify the link as non-inline.
66
- result = false;
67
- }
68
- }
69
- }
70
53
  // Return the result.
71
54
  return result;
72
55
  }
package/run.js CHANGED
@@ -246,6 +246,8 @@ const launch = exports.launch = async (report, debug, waits, tempBrowserID, temp
246
246
  const url = tempURL || report.target && report.target.url || '';
247
247
  // If the specified browser and device types and URL exist:
248
248
  if (isBrowserID(browserID) && isDeviceID(deviceID) && isURL(url)) {
249
+ // Replace the report target URL with this URL.
250
+ report.target.url = url;
249
251
  // Create a browser of the specified or default type.
250
252
  const browserType = require('playwright')[browserID];
251
253
  // Close the current browser, if any.
@@ -762,6 +764,8 @@ const doActs = async (report) => {
762
764
  const navResult = await goTo(report, page, requestedURL, 15000, 'domcontentloaded');
763
765
  // If the visit succeeded:
764
766
  if (navResult.success) {
767
+ // Revise the report URL to this URL.
768
+ report.target.url = requestedURL;
765
769
  // Add the script nonce, if any, to the act.
766
770
  const {response} = navResult;
767
771
  const scriptNonce = getNonce(response);
package/testaro/focVis.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- © 2022–2024 CVS Health and/or one of its affiliates. All rights reserved.
2
+ © 2022–2025 CVS Health and/or one of its affiliates. All rights reserved.
3
3
 
4
4
  MIT License
5
5
 
@@ -25,7 +25,7 @@
25
25
  /*
26
26
  focVis
27
27
  Derived from the bbc-a11y elementsMustBeVisibleOnFocus test.
28
- This test reports links that are off the display when focused.
28
+ This test reports links that are at least partly off the display when focused.
29
29
  */
30
30
 
31
31
  // ########## IMPORTS
@@ -37,35 +37,30 @@ const {init, report} = require('../procs/testaro');
37
37
 
38
38
  // Runs the test and returns the result.
39
39
  exports.reporter = async (page, withItems) => {
40
- // Initialize the locators and result.
40
+ // Initialize a sample of locators and a result.
41
41
  const all = await init(100, page, 'a:visible');
42
42
  // For each locator:
43
43
  for (const loc of all.allLocs) {
44
+ // Focus it.
45
+ await loc.focus();
46
+ // Get its location.
47
+ const box = await loc.boundingBox();
44
48
  // Get how its element violates the rule, if it does.
45
- try {
46
- const isBad = await loc.evaluate(el => {
47
- const isAbove = el.offsetTop + el.offsetHeight <= 0;
48
- const isLeft = el.offsetLeft + el.offsetWidth <= 0;
49
- return [isAbove, isLeft];
50
- }, {timeout: 500});
51
- // If it does:
52
- if (isBad[0] || isBad[1]) {
53
- // Add the locator to the array of violators.
54
- let param;
55
- if (isBad[0] && isBad[1]) {
56
- param = 'above and to the left of';
57
- }
58
- else if (isBad[0]) {
59
- param = 'above';
60
- }
61
- else {
62
- param = 'to the left of';
63
- }
64
- all.locs.push([loc, param]);
49
+ const isBad = [box.x < 0, box.y < 0];
50
+ // If it does:
51
+ if (isBad.some(item => item)) {
52
+ // Add the locator to the array of violators.
53
+ let param;
54
+ if (isBad.every(item => item)) {
55
+ param = 'above and to the left of';
65
56
  }
66
- }
67
- catch(error) {
68
- console.log(`ERROR analyzing locator for focVis (${error.message})`);
57
+ else if (isBad[0]) {
58
+ param = 'to the left of';
59
+ }
60
+ else {
61
+ param = 'above';
62
+ }
63
+ all.locs.push([loc, param]);
69
64
  }
70
65
  }
71
66
  // Populate and return the result.
package/tests/testaro.js CHANGED
@@ -38,6 +38,7 @@ const {tellServer} = require('../procs/tellServer');
38
38
 
39
39
  // ######## CONSTANTS
40
40
 
41
+ // The validation job data for the tests listed below are in the pending directory.
41
42
  /*
42
43
  const futureEvalRulesTraining = {
43
44
  altScheme: 'img elements with alt attributes having URLs as their entire values',
@@ -81,7 +82,7 @@ const evalRules = {
81
82
  focAll: 'discrepancies between focusable and Tab-focused elements',
82
83
  focInd: 'missing and nonstandard focus indicators',
83
84
  focOp: 'Tab-focusable elements that are not operable',
84
- focVis: 'links that are invisible when focused',
85
+ focVis: 'links that are not entirely visible when focused',
85
86
  headEl: 'invalid elements within the head',
86
87
  headingAmb: 'same-level sibling headings with identical texts',
87
88
  hover: 'hover-caused content changes',
@@ -1,3 +1,3 @@
1
1
  # exJobs
2
2
 
3
- Directory into which executor `watchDir` archives jobs.
3
+ Directory into which executor `dirWatch` archives jobs.
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "allCaps",
3
- "what": "validation of allCaps test",
4
- "strict": true,
2
+ "rule": "allCaps",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/allCaps/index.html",
11
- "what": "page with various letter cases"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/allCaps/index.html",
9
+ "what": "page with various letter cases"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -134,11 +133,5 @@
134
133
  "allCaps"
135
134
  ]
136
135
  }
137
- ],
138
- "sources": {
139
- },
140
- "standard": "only",
141
- "observe": false,
142
- "timeStamp": "240101T1500",
143
- "creationTimeStamp": "240101T1200"
136
+ ]
144
137
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "allHidden",
3
- "what": "validation of allHidden test",
4
- "strict": true,
2
+ "rule": "allHidden",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/allHidden/good.html",
11
- "what": "page with nothing hidden"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/allHidden/good.html",
9
+ "what": "page with nothing hidden"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -307,11 +306,5 @@
307
306
  "allHidden"
308
307
  ]
309
308
  }
310
- ],
311
- "sources": {
312
- },
313
- "standard": "only",
314
- "observe": false,
315
- "timeStamp": "240101T1500",
316
- "creationTimeStamp": "240101T1200"
309
+ ]
317
310
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "allSlanted",
3
- "what": "validation of allSlanted test",
4
- "strict": true,
2
+ "rule": "allSlanted",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/allSlanted/index.html",
11
- "what": "page with various slantednesses"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/allSlanted/index.html",
9
+ "what": "page with various slantednesses"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -129,11 +128,5 @@
129
128
  "allSlanted"
130
129
  ]
131
130
  }
132
- ],
133
- "sources": {
134
- },
135
- "standard": "only",
136
- "observe": false,
137
- "timeStamp": "240101T1500",
138
- "creationTimeStamp": "240101T1200"
131
+ ]
139
132
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "attVal",
3
- "what": "validation of attVal test",
4
- "strict": true,
2
+ "rule": "attVal",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/attVal/good.html",
11
- "what": "page with permitted attribute values"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/attVal/good.html",
9
+ "what": "page with permitted attribute values"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -180,11 +179,5 @@
180
179
  "attVal": ["lang", true, ["en-US", "de-CH"]]
181
180
  }
182
181
  }
183
- ],
184
- "sources": {
185
- },
186
- "standard": "only",
187
- "observe": false,
188
- "timeStamp": "240101T1500",
189
- "creationTimeStamp": "240101T1200"
182
+ ]
190
183
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "autocomplete",
3
- "what": "validation of autocomplete test",
4
- "strict": true,
2
+ "rule": "autocomplete",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/autocomplete/good.html",
11
- "what": "page with correct autocomplete attributes"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/autocomplete/good.html",
9
+ "what": "page with correct autocomplete attributes"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -144,11 +143,5 @@
144
143
  "autocomplete"
145
144
  ]
146
145
  }
147
- ],
148
- "sources": {
149
- },
150
- "standard": "only",
151
- "observe": false,
152
- "timeStamp": "240101T1500",
153
- "creationTimeStamp": "240101T1200"
146
+ ]
154
147
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "bulk",
3
- "what": "validation of bulk test",
4
- "strict": true,
2
+ "rule": "bulk",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/bulk/good.html",
11
- "what": "small page"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/bulk/good.html",
9
+ "what": "small page"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -79,11 +78,5 @@
79
78
  "bulk"
80
79
  ]
81
80
  }
82
- ],
83
- "sources": {
84
- },
85
- "standard": "only",
86
- "observe": false,
87
- "timeStamp": "240101T1500",
88
- "creationTimeStamp": "240101T1200"
81
+ ]
89
82
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "buttonMenu",
3
- "what": "validation of buttonMenu test",
4
- "strict": true,
2
+ "rule": "buttonMenu",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/buttonMenu/good.html",
11
- "what": "page with standard menu navigation"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/buttonMenu/good.html",
9
+ "what": "page with standard menu navigation"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -207,11 +206,5 @@
207
206
  "buttonMenu"
208
207
  ]
209
208
  }
210
- ],
211
- "sources": {
212
- },
213
- "standard": "only",
214
- "observe": false,
215
- "timeStamp": "240101T1500",
216
- "creationTimeStamp": "240101T1200"
209
+ ]
217
210
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "distortion",
3
- "what": "validation of distortion test",
4
- "strict": true,
2
+ "rule": "distortion",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/distortion/index.html",
11
- "what": "page with distorted text"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/distortion/index.html",
9
+ "what": "page with distorted text"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -104,11 +103,5 @@
104
103
  "distortion"
105
104
  ]
106
105
  }
107
- ],
108
- "sources": {
109
- },
110
- "standard": "only",
111
- "observe": false,
112
- "timeStamp": "240101T1500",
113
- "creationTimeStamp": "240101T1200"
106
+ ]
114
107
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "docType",
3
- "what": "validation of docType test",
4
- "strict": true,
2
+ "rule": "docType",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/docType/good.html",
11
- "what": "page with doctype"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/docType/good.html",
9
+ "what": "page with doctype"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -84,11 +83,5 @@
84
83
  "docType"
85
84
  ]
86
85
  }
87
- ],
88
- "sources": {
89
- },
90
- "standard": "only",
91
- "observe": false,
92
- "timeStamp": "240101T1500",
93
- "creationTimeStamp": "240101T1200"
86
+ ]
94
87
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "dupAtt",
3
- "what": "validation of dupAtt test",
4
- "strict": true,
2
+ "rule": "dupAtt",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/dupAtt/good.html",
11
- "what": "page without duplicate attributes"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/dupAtt/good.html",
9
+ "what": "page without duplicate attributes"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -131,11 +130,5 @@
131
130
  "dupAtt"
132
131
  ]
133
132
  }
134
- ],
135
- "sources": {
136
- },
137
- "standard": "only",
138
- "observe": false,
139
- "timeStamp": "240101T1500",
140
- "creationTimeStamp": "240101T1200"
133
+ ]
141
134
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "elements",
3
- "what": "validation of elements test",
4
- "strict": true,
2
+ "rule": "elements",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/elements/index.html",
11
- "what": "page with a shadow root"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/elements/index.html",
9
+ "what": "page with a shadow root"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -293,10 +292,5 @@
293
292
  }
294
293
  }
295
294
  ],
296
- "sources": {
297
- },
298
- "standard": "no",
299
- "observe": false,
300
- "timeStamp": "240101T1500",
301
- "creationTimeStamp": "240101T1200"
295
+ "standard": "no"
302
296
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "embAc",
3
- "what": "validation of embAc test",
4
- "strict": true,
2
+ "rule": "embAc",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/embAc/good.html",
11
- "what": "page without embedding in links or buttons"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/embAc/good.html",
9
+ "what": "page without embedding in links or buttons"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -141,11 +140,5 @@
141
140
  "embAc"
142
141
  ]
143
142
  }
144
- ],
145
- "sources": {
146
- },
147
- "standard": "only",
148
- "observe": false,
149
- "timeStamp": "240101T1500",
150
- "creationTimeStamp": "240101T1200"
143
+ ]
151
144
  }
@@ -1,14 +1,13 @@
1
1
  {
2
- "id": "focAll",
3
- "what": "validation of focAll test",
4
- "strict": true,
2
+ "rule": "focAll",
5
3
  "timeLimit": 20,
6
4
  "acts": [
7
5
  {
8
6
  "type": "launch",
9
- "which": "chromium",
10
- "url": "file://validation/tests/targets/focAll/good.html",
11
- "what": "fully Tab-focusable page"
7
+ "target": {
8
+ "url": "file://validation/tests/targets/focAll/good.html",
9
+ "what": "fully Tab-focusable page"
10
+ }
12
11
  },
13
12
  {
14
13
  "type": "test",
@@ -126,11 +125,5 @@
126
125
  "focAll"
127
126
  ]
128
127
  }
129
- ],
130
- "sources": {
131
- },
132
- "standard": "only",
133
- "observe": false,
134
- "timeStamp": "240101T1500",
135
- "creationTimeStamp": "240101T1200"
128
+ ]
136
129
  }