-
Notifications
You must be signed in to change notification settings - Fork 800
/
Copy pathnested-interactive.js
144 lines (121 loc) · 3.89 KB
/
nested-interactive.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
describe('nested-interactive virtual-rule', function () {
it('should pass for element without focusable content', function () {
var node = new axe.SerialVirtualNode({
nodeName: 'button'
});
var child = new axe.SerialVirtualNode({
nodeName: '#text',
nodeType: 3,
nodeValue: 'Hello World'
});
node.children = [child];
var results = axe.runVirtualRule('nested-interactive', node);
assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 0);
});
it('should pass for aria element without focusable content', function () {
var node = new axe.SerialVirtualNode({
nodeName: 'div',
attributes: {
role: 'button'
}
});
var child = new axe.SerialVirtualNode({
nodeName: '#text',
nodeType: 3,
nodeValue: 'Hello World'
});
node.children = [child];
var results = axe.runVirtualRule('nested-interactive', node);
assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 0);
});
it('should pass for element with non-widget content which has negative tabindex', function () {
var node = new axe.SerialVirtualNode({
nodeName: 'button'
});
var child = new axe.SerialVirtualNode({
nodeName: 'span',
attributes: {
tabindex: -1
}
});
child.children = [];
node.children = [child];
var results = axe.runVirtualRule('nested-interactive', node);
assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 0);
});
it('should pass for empty element without', function () {
var node = new axe.SerialVirtualNode({
nodeName: 'div',
attributes: {
role: 'button'
}
});
node.children = [];
var results = axe.runVirtualRule('nested-interactive', node);
assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 0);
});
it('should pass for element with non-widget content', function () {
var node = new axe.SerialVirtualNode({
nodeName: 'button'
});
var child = new axe.SerialVirtualNode({
nodeName: 'span',
attributes: {
tabindex: 1
}
});
child.children = [];
node.children = [child];
var results = axe.runVirtualRule('nested-interactive', node);
assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 0);
});
it('should fail for element with native widget content', function () {
var node = new axe.SerialVirtualNode({
nodeName: 'div',
attributes: {
role: 'button'
}
});
var child = new axe.SerialVirtualNode({
nodeName: 'button'
});
child.children = [];
node.children = [child];
var results = axe.runVirtualRule('nested-interactive', node);
assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 1);
assert.lengthOf(results.incomplete, 0);
});
it('should return incomplete if element has undefined children', function () {
var node = new axe.SerialVirtualNode({
nodeName: 'button'
});
var results = axe.runVirtualRule('nested-interactive', node);
assert.lengthOf(results.passes, 0);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 1);
});
it('should return incomplete if descendant has undefined children', function () {
var node = new axe.SerialVirtualNode({
nodeName: 'button'
});
var child = new axe.SerialVirtualNode({
nodeName: 'span'
});
node.children = [child];
var results = axe.runVirtualRule('nested-interactive', node);
assert.lengthOf(results.passes, 0);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 1);
});
});