-
Notifications
You must be signed in to change notification settings - Fork 800
/
Copy patharia-conditional-attr.js
111 lines (102 loc) · 3.1 KB
/
aria-conditional-attr.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
describe('aria-conditional-attr virtual-rule', function () {
it('passes when aria-checked is consistent with native checkbox state', () => {
const results = axe.runVirtualRule('aria-conditional-attr', {
nodeName: 'input',
checked: true,
attributes: {
type: 'checkbox',
'aria-checked': 'true'
}
});
assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 0);
});
it('fails when aria-checked is inconsistent with native checkbox state', () => {
const results = axe.runVirtualRule('aria-conditional-attr', {
nodeName: 'input',
checked: true,
attributes: {
type: 'checkbox',
'aria-checked': 'false'
}
});
assert.lengthOf(results.passes, 0);
assert.lengthOf(results.violations, 1);
assert.lengthOf(results.incomplete, 0);
});
it('passes conditional row attributes on detached rows', () => {
const results = axe.runVirtualRule('aria-conditional-attr', {
nodeName: 'tr',
attributes: {
role: 'row',
'aria-level': '1',
'aria-posinset': '1',
'aria-setsize': '1',
'aria-expanded': 'true'
}
});
assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 0);
});
it('fails conditional row attributes on table', () => {
const table = new axe.SerialVirtualNode({
nodeName: 'table'
});
const tr = new axe.SerialVirtualNode({
nodeName: 'tr',
attributes: {
role: 'row',
'aria-level': '1',
'aria-posinset': '1',
'aria-setsize': '1',
'aria-expanded': 'true'
}
});
const td = new axe.SerialVirtualNode({ nodeName: 'td' });
table.children = [tr];
tr.children = [td];
td.parent = tr;
tr.parent = table;
table.parent = null;
const results = axe.runVirtualRule('aria-conditional-attr', tr);
assert.lengthOf(results.passes, 0);
assert.lengthOf(results.violations, 1);
assert.lengthOf(results.incomplete, 0);
const { invalidAttrs } = results.violations[0].nodes[0].all[0].data;
invalidAttrs.sort();
assert.deepEqual(invalidAttrs, [
'aria-expanded',
'aria-level',
'aria-posinset',
'aria-setsize'
]);
});
it('passes conditional row attributes on treegrid', () => {
const table = new axe.SerialVirtualNode({
nodeName: 'table',
attributes: { role: 'treegrid' }
});
const tr = new axe.SerialVirtualNode({
nodeName: 'tr',
attributes: {
role: 'row',
'aria-level': '1',
'aria-posinset': '1',
'aria-setsize': '1',
'aria-expanded': 'true'
}
});
const td = new axe.SerialVirtualNode({ nodeName: 'td' });
table.children = [tr];
tr.children = [td];
td.parent = tr;
tr.parent = table;
table.parent = null;
const results = axe.runVirtualRule('aria-conditional-attr', tr);
assert.lengthOf(results.passes, 1);
assert.lengthOf(results.violations, 0);
assert.lengthOf(results.incomplete, 0);
});
});