testaro 13.0.2 → 14.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 (100) hide show
  1. package/README.md +190 -94
  2. package/actSpecs.js +17 -158
  3. package/package.json +1 -1
  4. package/run.js +30 -30
  5. package/standardize.js +338 -0
  6. package/{tests → testaro}/allHidden.js +36 -1
  7. package/{tests → testaro}/attVal.js +36 -2
  8. package/{tests → testaro}/autocomplete.js +34 -1
  9. package/{tests → testaro}/bulk.js +15 -1
  10. package/{tests → testaro}/docType.js +15 -1
  11. package/{tests → testaro}/dupAtt.js +34 -1
  12. package/{tests → testaro}/elements.js +9 -3
  13. package/testaro/embAc.js +78 -0
  14. package/{tests → testaro}/filter.js +35 -1
  15. package/{tests → testaro}/focAll.js +20 -3
  16. package/{tests → testaro}/focInd.js +45 -3
  17. package/{tests → testaro}/focOp.js +61 -2
  18. package/{tests → testaro}/focVis.js +35 -1
  19. package/{tests → testaro}/hover.js +67 -5
  20. package/{tests → testaro}/labClash.js +54 -4
  21. package/{tests → testaro}/linkTo.js +33 -1
  22. package/{tests → testaro}/linkUl.js +43 -5
  23. package/{tests → testaro}/menuNav.js +42 -1
  24. package/{tests → testaro}/miniText.js +32 -1
  25. package/{tests → testaro}/motion.js +27 -4
  26. package/{tests → testaro}/nonTable.js +32 -1
  27. package/{tests → testaro}/radioSet.js +33 -2
  28. package/{tests → testaro}/role.js +38 -1
  29. package/{tests → testaro}/styleDiff.js +43 -2
  30. package/{tests → testaro}/tabNav.js +42 -1
  31. package/{tests → testaro}/textNodes.js +6 -2
  32. package/{tests → testaro}/title.js +8 -4
  33. package/{tests → testaro}/titledEl.js +32 -1
  34. package/{tests → testaro}/zIndex.js +40 -2
  35. package/tests/alfa.js +72 -75
  36. package/tests/continuum.js +6 -2
  37. package/tests/ibm.js +14 -42
  38. package/tests/testaro.js +73 -0
  39. package/validation/tests/jobs/allHidden.json +877 -174
  40. package/validation/tests/jobs/attVal.json +57 -19
  41. package/validation/tests/jobs/autocomplete.json +34 -8
  42. package/validation/tests/jobs/bulk.json +33 -7
  43. package/validation/tests/jobs/docType.json +23 -5
  44. package/validation/tests/jobs/dupAtt.json +47 -8
  45. package/validation/tests/jobs/elements.json +231 -70
  46. package/validation/tests/jobs/embAc.json +70 -15
  47. package/validation/tests/jobs/filter.json +56 -12
  48. package/validation/tests/jobs/focAll.json +64 -16
  49. package/validation/tests/jobs/focInd.json +107 -23
  50. package/validation/tests/jobs/focOp.json +93 -21
  51. package/validation/tests/jobs/focVis.json +16 -4
  52. package/validation/tests/jobs/hover.json +246 -56
  53. package/validation/tests/jobs/labClash.json +43 -11
  54. package/validation/tests/jobs/linkTo.json +16 -4
  55. package/validation/tests/jobs/linkUl.json +79 -19
  56. package/validation/tests/jobs/menuNav.json +313 -65
  57. package/validation/tests/jobs/miniText.json +21 -5
  58. package/validation/tests/jobs/motion.json +81 -23
  59. package/validation/tests/jobs/nonTable.json +26 -6
  60. package/validation/tests/jobs/radioSet.json +43 -11
  61. package/validation/tests/jobs/role.json +93 -19
  62. package/validation/tests/jobs/styleDiff.json +124 -28
  63. package/validation/tests/jobs/tabNav.json +313 -65
  64. package/validation/tests/jobs/textNodes.json +190 -49
  65. package/validation/tests/jobs/title.json +23 -5
  66. package/validation/tests/jobs/titledEl.json +26 -6
  67. package/validation/tests/jobs/zIndex.json +28 -8
  68. package/validation/tests/old/allHidden.json +314 -0
  69. package/validation/tests/old/attVal.json +60 -0
  70. package/validation/tests/old/autocomplete.json +51 -0
  71. package/validation/tests/old/bulk.json +48 -0
  72. package/validation/tests/old/docType.json +46 -0
  73. package/validation/tests/old/dupAtt.json +51 -0
  74. package/validation/tests/old/elements.json +140 -0
  75. package/validation/tests/old/embAc.json +54 -0
  76. package/validation/tests/old/filter.json +55 -0
  77. package/validation/tests/old/focAll.json +68 -0
  78. package/validation/tests/old/focInd.json +69 -0
  79. package/validation/tests/old/focOp.json +62 -0
  80. package/validation/tests/old/focVis.json +35 -0
  81. package/validation/tests/old/hover.json +118 -0
  82. package/validation/tests/old/labClash.json +52 -0
  83. package/validation/tests/old/linkTo.json +35 -0
  84. package/validation/tests/old/linkUl.json +71 -0
  85. package/validation/tests/old/menuNav.json +106 -0
  86. package/validation/tests/old/miniText.json +36 -0
  87. package/validation/tests/old/motion.json +62 -0
  88. package/validation/tests/old/nonTable.json +37 -0
  89. package/validation/tests/old/radioSet.json +52 -0
  90. package/validation/tests/old/role.json +60 -0
  91. package/validation/tests/old/styleDiff.json +71 -0
  92. package/validation/tests/old/tabNav.json +106 -0
  93. package/validation/tests/old/temp.js +28 -0
  94. package/validation/tests/old/textNodes.json +98 -0
  95. package/validation/tests/old/title.json +46 -0
  96. package/validation/tests/old/titledEl.json +37 -0
  97. package/validation/tests/old/zIndex.json +49 -0
  98. package/validation/tests/targets/attVal/good.html +1 -1
  99. package/validation/tests/targets/elements/index.html +1 -0
  100. package/tests/embAc.js +0 -36
@@ -0,0 +1,51 @@
1
+ {
2
+ "id": "dupAtt",
3
+ "what": "validation of dupAtt test",
4
+ "strict": true,
5
+ "timeLimit": 20,
6
+ "acts": [
7
+ {
8
+ "type": "launch",
9
+ "which": "chromium",
10
+ "what": "usual browser"
11
+ },
12
+ {
13
+ "type": "url",
14
+ "which": "__targets__/dupAtt/good.html",
15
+ "what": "page without duplicate attributes"
16
+ },
17
+ {
18
+ "type": "test",
19
+ "which": "dupAtt",
20
+ "what": "elements with duplicate attributes",
21
+ "withItems": true,
22
+ "expect": [
23
+ ["total", "=", 0],
24
+ ["items.1"]
25
+ ]
26
+ },
27
+ {
28
+ "type": "url",
29
+ "which": "__targets__/dupAtt/bad.html",
30
+ "what": "page with duplicate attributes"
31
+ },
32
+ {
33
+ "type": "test",
34
+ "which": "dupAtt",
35
+ "what": "elements with duplicate attributes",
36
+ "withItems": true,
37
+ "expect": [
38
+ ["total", "=", 2],
39
+ ["items.0", "=", "p class=\"narrow\" id=\"daParagraph\" class=\"wide\""],
40
+ ["items.1", "i", "large"]
41
+ ]
42
+ }
43
+ ],
44
+ "sources": {
45
+ "script": "",
46
+ "host": {},
47
+ "requester": ""
48
+ },
49
+ "creationTime": "2023-04-18T11:02:00",
50
+ "timeStamp": "00000"
51
+ }
@@ -0,0 +1,140 @@
1
+ {
2
+ "id": "elements",
3
+ "what": "validation of elements test",
4
+ "strict": true,
5
+ "timeLimit": 20,
6
+ "acts": [
7
+ {
8
+ "type": "launch",
9
+ "which": "chromium",
10
+ "what": "usual browser"
11
+ },
12
+ {
13
+ "type": "url",
14
+ "which": "__targets__/elements/index.html",
15
+ "what": "page with a shadow root"
16
+ },
17
+ {
18
+ "type": "test",
19
+ "which": "elements",
20
+ "what": "elements",
21
+ "detailLevel": 0,
22
+ "expect": [
23
+ ["total", "=", 21]
24
+ ]
25
+ },
26
+ {
27
+ "type": "test",
28
+ "which": "elements",
29
+ "what": "elements",
30
+ "detailLevel": 0,
31
+ "tagName": "P",
32
+ "expect": [
33
+ ["total", "=", 5]
34
+ ]
35
+ },
36
+ {
37
+ "type": "test",
38
+ "which": "elements",
39
+ "what": "elements",
40
+ "detailLevel": 0,
41
+ "tagName": "LI",
42
+ "onlyVisible": true,
43
+ "expect": [
44
+ ["total", "=", 2]
45
+ ]
46
+ },
47
+ {
48
+ "type": "test",
49
+ "which": "elements",
50
+ "what": "elements",
51
+ "detailLevel": 0,
52
+ "tagName": "P",
53
+ "attribute": "class",
54
+ "expect": [
55
+ ["total", "=", 2]
56
+ ]
57
+ },
58
+ {
59
+ "type": "test",
60
+ "which": "elements",
61
+ "what": "elements",
62
+ "detailLevel": 1,
63
+ "tagName": "LI",
64
+ "attribute": "class=first",
65
+ "expect": [
66
+ ["total", "=", 1],
67
+ ["items.0.tagName", "=", "LI"],
68
+ ["items.0.parentTagName", "=", "UL"],
69
+ ["items.0.code", "i", "first"],
70
+ ["items.0.attributes.0.name", "=", "class"],
71
+ ["items.0.attributes.0.value", "=", "first"],
72
+ ["items.0.textContent", "=", "Io"]
73
+ ]
74
+ },
75
+ {
76
+ "type": "test",
77
+ "which": "elements",
78
+ "what": "elements",
79
+ "detailLevel": 1,
80
+ "tagName": "INPUT",
81
+ "expect": [
82
+ ["total", "=", 2],
83
+ ["items.0.labels.1", "i", "anything"],
84
+ ["items.1.labelers.0", "i", "something else"]
85
+ ]
86
+ },
87
+ {
88
+ "type": "test",
89
+ "which": "elements",
90
+ "what": "elements",
91
+ "detailLevel": 2,
92
+ "tagName": "LI",
93
+ "attribute": "class=first",
94
+ "expect": [
95
+ ["items.0.textContent", "=", "Io"],
96
+ ["items.0.parentTextContent", "i", "tute"]
97
+ ]
98
+ },
99
+ {
100
+ "type": "test",
101
+ "which": "elements",
102
+ "what": "elements",
103
+ "detailLevel": 2,
104
+ "tagName": "LI",
105
+ "onlyVisible": true,
106
+ "attribute": "class",
107
+ "expect": [
108
+ ["total", "=", 1],
109
+ ["items.0.parentTextContent", "i", "alia"],
110
+ ["items.0.parentTextContent", "i", "tute"]
111
+ ]
112
+ },
113
+ {
114
+ "type": "test",
115
+ "which": "elements",
116
+ "what": "elements",
117
+ "detailLevel": 3,
118
+ "tagName": "P",
119
+ "attribute": "class=first",
120
+ "expect": [
121
+ ["items.0.textContent", "=", "This is a paragraph."],
122
+ ["items.0.parentTagName", "=", "MAIN"],
123
+ ["items.0.parentTextContent", "i", "something."],
124
+ ["items.0.siblings.before.0.type", "=", 3],
125
+ ["items.0.siblings.before.1.type", "=", 1],
126
+ ["items.0.siblings.before.1.tagName", "=", "H1"],
127
+ ["items.0.siblings.after.12.type", "=", 1],
128
+ ["items.0.siblings.after.12.tagName", "=", "LABEL"],
129
+ ["items.0.siblings.after.12.attributes.0.name", "=", "for"]
130
+ ]
131
+ }
132
+ ],
133
+ "sources": {
134
+ "script": "",
135
+ "host": {},
136
+ "requester": ""
137
+ },
138
+ "creationTime": "2002-11-12T09:31:00",
139
+ "timeStamp": "00000"
140
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "id": "embAc",
3
+ "what": "validation of embAc test",
4
+ "strict": true,
5
+ "timeLimit": 20,
6
+ "acts": [
7
+ {
8
+ "type": "launch",
9
+ "which": "chromium",
10
+ "what": "usual browser"
11
+ },
12
+ {
13
+ "type": "url",
14
+ "which": "__targets__/embAc/good.html",
15
+ "what": "page without embedding in links or buttons"
16
+ },
17
+ {
18
+ "type": "test",
19
+ "which": "embAc",
20
+ "what": "visible element count",
21
+ "withItems": false,
22
+ "expect": [
23
+ ["totals.links", "=", 0],
24
+ ["totals.buttons", "=", 0],
25
+ ["totals.inputs", "=", 0],
26
+ ["totals.selects", "=", 0]
27
+ ]
28
+ },
29
+ {
30
+ "type": "url",
31
+ "which": "__targets__/embAc/bad.html",
32
+ "what": "page with embeddings in links and buttons"
33
+ },
34
+ {
35
+ "type": "test",
36
+ "which": "embAc",
37
+ "what": "visible element count",
38
+ "withItems": false,
39
+ "expect": [
40
+ ["totals.links", "=", 2],
41
+ ["totals.buttons", "=", 2],
42
+ ["totals.inputs", "=", 3],
43
+ ["totals.selects", "=", 1]
44
+ ]
45
+ }
46
+ ],
47
+ "sources": {
48
+ "script": "",
49
+ "host": {},
50
+ "requester": ""
51
+ },
52
+ "creationTime": "2002-11-12T09:31:00",
53
+ "timeStamp": "00000"
54
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "id": "filter",
3
+ "what": "validation of filter test",
4
+ "strict": true,
5
+ "timeLimit": 20,
6
+ "acts": [
7
+ {
8
+ "type": "launch",
9
+ "which": "chromium",
10
+ "what": "usual browser"
11
+ },
12
+ {
13
+ "type": "url",
14
+ "which": "__targets__/filter/good.html",
15
+ "what": "page with no filter styles"
16
+ },
17
+ {
18
+ "type": "test",
19
+ "which": "filter",
20
+ "what": "filter",
21
+ "withItems": true,
22
+ "expect": [
23
+ ["totals.styledElements", "=", 0],
24
+ ["totals.impactedElements", "=", 0]
25
+ ]
26
+ },
27
+ {
28
+ "type": "url",
29
+ "which": "__targets__/filter/bad.html",
30
+ "what": "page with filter styles"
31
+ },
32
+ {
33
+ "type": "test",
34
+ "which": "filter",
35
+ "what": "filter",
36
+ "withItems": true,
37
+ "expect": [
38
+ ["totals.styledElements", "=", 2],
39
+ ["totals.impactedElements", "=", 7],
40
+ ["items.0.tagName", "=", "MAIN"],
41
+ ["items.1.tagName", "=", "UL"],
42
+ ["items.1.text", "i", "Item"],
43
+ ["items.0.impact", "=", 5],
44
+ ["items.1.impact", "=", 2]
45
+ ]
46
+ }
47
+ ],
48
+ "sources": {
49
+ "script": "",
50
+ "host": {},
51
+ "requester": ""
52
+ },
53
+ "creationTime": "2002-11-12T09:31:00",
54
+ "timeStamp": "00000"
55
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "id": "focAll",
3
+ "what": "validation of focAll test",
4
+ "strict": true,
5
+ "timeLimit": 20,
6
+ "acts": [
7
+ {
8
+ "type": "launch",
9
+ "which": "chromium",
10
+ "what": "usual browser"
11
+ },
12
+ {
13
+ "type": "url",
14
+ "which": "__targets__/focAll/good.html",
15
+ "what": "fully Tab-focusable page"
16
+ },
17
+ {
18
+ "type": "test",
19
+ "which": "focAll",
20
+ "what": "Tab-focusability",
21
+ "withItems": false,
22
+ "expect": [
23
+ ["tabFocusables", "=", 3],
24
+ ["tabFocused", "=", 3],
25
+ ["discrepancy", "=", 0]
26
+ ]
27
+ },
28
+ {
29
+ "type": "url",
30
+ "which": "__targets__/focAll/less.html",
31
+ "what": "partly Tab-focusable page"
32
+ },
33
+ {
34
+ "type": "test",
35
+ "which": "focAll",
36
+ "what": "Tab-focusability",
37
+ "withItems": false,
38
+ "expect": [
39
+ ["tabFocusables", "=", 3],
40
+ ["tabFocused", "=", 2],
41
+ ["discrepancy", "=", -1]
42
+ ]
43
+ },
44
+ {
45
+ "type": "url",
46
+ "which": "__targets__/focAll/more.html",
47
+ "what": "page with added Tab-focusability"
48
+ },
49
+ {
50
+ "type": "test",
51
+ "which": "focAll",
52
+ "what": "Tab-focusability",
53
+ "withItems": false,
54
+ "expect": [
55
+ ["tabFocusables", "=", 3],
56
+ ["tabFocused", "=", 5],
57
+ ["discrepancy", "=", 2]
58
+ ]
59
+ }
60
+ ],
61
+ "sources": {
62
+ "script": "",
63
+ "host": {},
64
+ "requester": ""
65
+ },
66
+ "creationTime": "2002-11-12T09:31:00",
67
+ "timeStamp": "00000"
68
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "id": "focInd",
3
+ "what": "validation of focInd test",
4
+ "strict": true,
5
+ "timeLimit": 20,
6
+ "acts": [
7
+ {
8
+ "type": "launch",
9
+ "which": "chromium",
10
+ "what": "usual browser"
11
+ },
12
+ {
13
+ "type": "url",
14
+ "which": "__targets__/focInd/good.html",
15
+ "what": "page with outline focus indication"
16
+ },
17
+ {
18
+ "type": "test",
19
+ "which": "focInd",
20
+ "revealAll": false,
21
+ "allowedDelay": 0,
22
+ "withItems": false,
23
+ "what": "focus indication",
24
+ "expect": [
25
+ ["totals.total", "=", 4],
26
+ ["totals.types.indicatorMissing.total", "=", 0],
27
+ ["totals.types.nonOutlinePresent.total", "=", 0],
28
+ ["totals.types.outlinePresent.total", "=", 4],
29
+ ["totals.types.outlinePresent.tagNames.A", "=", 1],
30
+ ["totals.types.outlinePresent.tagNames.BUTTON", "=", 1],
31
+ ["totals.types.outlinePresent.tagNames.INPUT", "=", 2]
32
+ ]
33
+ },
34
+ {
35
+ "type": "url",
36
+ "which": "__targets__/focInd/bad.html",
37
+ "what": "page with mixed focus indication"
38
+ },
39
+ {
40
+ "type": "test",
41
+ "which": "focInd",
42
+ "revealAll": false,
43
+ "allowedDelay": 150,
44
+ "withItems": true,
45
+ "what": "focus indication",
46
+ "expect": [
47
+ ["totals.total", "=", 9],
48
+ ["totals.types.indicatorMissing.total", "=", 3],
49
+ ["totals.types.indicatorMissing.tagNames.A", "=", 1],
50
+ ["totals.types.indicatorMissing.tagNames.INPUT", "=", 2],
51
+ ["totals.types.nonOutlinePresent.total", "=", 3],
52
+ ["totals.types.nonOutlinePresent.tagNames.A", "=", 1],
53
+ ["totals.types.nonOutlinePresent.tagNames.BUTTON", "=", 1],
54
+ ["totals.types.nonOutlinePresent.tagNames.INPUT", "=", 1],
55
+ ["totals.types.outlinePresent.total", "=", 3],
56
+ ["totals.types.outlinePresent.tagNames.A", "=", 1],
57
+ ["totals.types.outlinePresent.tagNames.BUTTON", "=", 1],
58
+ ["totals.types.outlinePresent.tagNames.INPUT", "=", 1]
59
+ ]
60
+ }
61
+ ],
62
+ "sources": {
63
+ "script": "",
64
+ "host": {},
65
+ "requester": ""
66
+ },
67
+ "creationTime": "2002-11-12T09:31:00",
68
+ "timeStamp": "00000"
69
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "id": "focOp",
3
+ "what": "validation of focOp test",
4
+ "strict": true,
5
+ "timeLimit": 20,
6
+ "acts": [
7
+ {
8
+ "type": "launch",
9
+ "which": "chromium",
10
+ "what": "usual browser"
11
+ },
12
+ {
13
+ "type": "url",
14
+ "which": "__targets__/focOp/good.html",
15
+ "what": "page with standard focusability and operability"
16
+ },
17
+ {
18
+ "type": "test",
19
+ "which": "focOp",
20
+ "what": "focusability and operability",
21
+ "withItems": false,
22
+ "expect": [
23
+ ["totals.total", "=", 3],
24
+ ["totals.types.onlyFocusable.total", "=", 0],
25
+ ["totals.types.onlyOperable.total", "=", 0],
26
+ ["totals.types.focusableAndOperable.total", "=", 3],
27
+ ["totals.types.focusableAndOperable.tagNames.A", "=", 1],
28
+ ["totals.types.focusableAndOperable.tagNames.BUTTON", "=", 1],
29
+ ["totals.types.focusableAndOperable.tagNames.INPUT", "=", 1]
30
+ ]
31
+ },
32
+ {
33
+ "type": "url",
34
+ "which": "__targets__/focOp/bad.html",
35
+ "what": "page with deviant focusability and operability"
36
+ },
37
+ {
38
+ "type": "test",
39
+ "which": "focOp",
40
+ "what": "focusability and operability",
41
+ "withItems": false,
42
+ "expect": [
43
+ ["totals.total", "=", 6],
44
+ ["totals.types.onlyFocusable.total", "=", 1],
45
+ ["totals.types.onlyFocusable.tagNames.SPAN", "=", 1],
46
+ ["totals.types.onlyOperable.total", "=", 3],
47
+ ["totals.types.onlyOperable.tagNames.BUTTON", "=", 1],
48
+ ["totals.types.onlyOperable.tagNames.SPAN", "=", 2],
49
+ ["totals.types.focusableAndOperable.total", "=", 2],
50
+ ["totals.types.focusableAndOperable.tagNames.A", "=", 1],
51
+ ["totals.types.focusableAndOperable.tagNames.INPUT", "=", 1]
52
+ ]
53
+ }
54
+ ],
55
+ "sources": {
56
+ "script": "",
57
+ "host": {},
58
+ "requester": ""
59
+ },
60
+ "creationTime": "2002-11-12T09:31:00",
61
+ "timeStamp": "00000"
62
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "id": "focVis",
3
+ "what": "validation of focVis test",
4
+ "strict": true,
5
+ "timeLimit": 20,
6
+ "acts": [
7
+ {
8
+ "type": "launch",
9
+ "which": "chromium",
10
+ "what": "usual browser"
11
+ },
12
+ {
13
+ "type": "url",
14
+ "which": "__targets__/focVis/index.html",
15
+ "what": "page with links inside and outside the viewport"
16
+ },
17
+ {
18
+ "type": "test",
19
+ "which": "focVis",
20
+ "what": "off-display focused links",
21
+ "withItems": true,
22
+ "expect": [
23
+ ["total", "=", 1],
24
+ ["items.0", "=", "Basque information"]
25
+ ]
26
+ }
27
+ ],
28
+ "sources": {
29
+ "script": "",
30
+ "host": {},
31
+ "requester": ""
32
+ },
33
+ "creationTime": "2002-11-12T09:31:00",
34
+ "timeStamp": "00000"
35
+ }
@@ -0,0 +1,118 @@
1
+ {
2
+ "id": "hover",
3
+ "what": "validation of hover test",
4
+ "strict": true,
5
+ "timeLimit": 20,
6
+ "acts": [
7
+ {
8
+ "type": "launch",
9
+ "which": "chromium",
10
+ "what": "usual browser"
11
+ },
12
+ {
13
+ "type": "url",
14
+ "which": "__targets__/hover/good.html",
15
+ "what": "page with standard hover behavior"
16
+ },
17
+ {
18
+ "type": "test",
19
+ "which": "hover",
20
+ "what": "hover",
21
+ "sampleSize": 5,
22
+ "withItems": true,
23
+ "expect": [
24
+ ["totals.triggers", "=", 4],
25
+ ["totals.impactTriggers", "=", 0],
26
+ ["totals.additions", "=", 0],
27
+ ["totals.removals", "=", 0],
28
+ ["totals.opacityChanges", "=", 0],
29
+ ["totals.opacityImpact", "=", 0],
30
+ ["totals.unhoverables", "=", 0],
31
+ ["items.impactTriggers.0"]
32
+ ]
33
+ },
34
+ {
35
+ "type": "url",
36
+ "which": "__targets__/hover/bad.html",
37
+ "what": "page with deviant hover behavior"
38
+ },
39
+ {
40
+ "type": "test",
41
+ "which": "hover",
42
+ "what": "hover",
43
+ "sampleSize": 8,
44
+ "withItems": true,
45
+ "expect": [
46
+ ["totals.triggers", "=", 6],
47
+ ["totals.impactTriggers", "=", 3],
48
+ ["totals.additions", "=", 3],
49
+ ["totals.removals", "=", 1],
50
+ ["totals.opacityChanges", "=", 1],
51
+ ["totals.opacityImpact", "=", 1],
52
+ ["totals.unhoverables", "=", 1],
53
+ ["items.impactTriggers.0.tagName", "=", "A"],
54
+ ["items.impactTriggers.1.tagName", "=", "BUTTON"],
55
+ ["items.impactTriggers.2.tagName", "=", "LI"],
56
+ ["items.impactTriggers.0.text", "=", "information"],
57
+ ["items.impactTriggers.0.additions", "=", 0],
58
+ ["items.impactTriggers.1.additions", "=", 3],
59
+ ["items.impactTriggers.2.removals", "=", 1],
60
+ ["items.impactTriggers.0.opacityChanges", "=", 1],
61
+ ["items.impactTriggers.1.opacityImpact", "=", 0],
62
+ ["items.unhoverables.0.tagName", "=", "BUTTON"],
63
+ ["items.unhoverables.0.id", "=", "smallButton"],
64
+ ["items.unhoverables.0.text", "=", "button"]
65
+ ]
66
+ },
67
+ {
68
+ "type": "url",
69
+ "which": "__targets__/hover/large.html",
70
+ "what": "page with deviant hover behavior"
71
+ },
72
+ {
73
+ "type": "test",
74
+ "which": "hover",
75
+ "what": "hover",
76
+ "sampleSize": 10,
77
+ "withItems": false,
78
+ "expect": [
79
+ ["totals.triggers", "=", 20],
80
+ ["totals.impactTriggers", ">", -1],
81
+ ["totals.impactTriggers", "<", 6],
82
+ ["totals.additions", ">", -1],
83
+ ["totals.additions", "<", 6],
84
+ ["totals.removals", "=", 0],
85
+ ["totals.opacityChanges", "=", 0],
86
+ ["totals.opacityImpact", "=", 0],
87
+ ["totals.unhoverables", "=", 0]
88
+ ]
89
+ },
90
+ {
91
+ "type": "url",
92
+ "which": "__targets__/hover/styleBad.html",
93
+ "what": "page with deviant trigger styles"
94
+ },
95
+ {
96
+ "type": "test",
97
+ "which": "hover",
98
+ "what": "hover",
99
+ "sampleSize": 5,
100
+ "withItems": true,
101
+ "expect": [
102
+ ["totals.noIndicators", "=", 1],
103
+ ["totals.noCursors", "=", 1],
104
+ ["totals.badIndicators", "=", 1],
105
+ ["items.noIndicators.0.text", "=", "button"],
106
+ ["items.noCursors.0.tagName", "=", "LI"],
107
+ ["items.badIndicators.0.id", "=", "li2"]
108
+ ]
109
+ }
110
+ ],
111
+ "sources": {
112
+ "script": "",
113
+ "host": {},
114
+ "requester": ""
115
+ },
116
+ "creationTime": "2002-11-12T09:31:00",
117
+ "timeStamp": "00000"
118
+ }