forked from dequelabs/axe-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsummary-interactive-matches.js
112 lines (102 loc) · 2.84 KB
/
summary-interactive-matches.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
describe('summary-interactive-matches', () => {
const rule = axe.utils.getRule('summary-name');
const { queryFixture, queryShadowFixture, html } = axe.testUtils;
it('is true for an interactive summary', () => {
const vNode = queryFixture(html`
<details>
<summary id="target">Summary</summary>
text
</details>
`);
assert.isTrue(rule.matches(null, vNode));
});
it('is false for summary without a details parent', () => {
const vNode = queryFixture(html`
<summary id="target">Summary</summary>
text
`);
assert.isFalse(rule.matches(null, vNode));
});
it('is false for summary with a details ancestor', () => {
const vNode = queryFixture(html`
<details>
<div>
<summary id="target">Summary</summary>
text
</div>
</details>
`);
assert.isFalse(rule.matches(null, vNode));
});
it('is false for a non-first summary', () => {
const vNode = queryFixture(html`
<details>
<summary>Summary</summary>
<summary id="target">Summary</summary>
text
</details>
`);
assert.isFalse(rule.matches(null, vNode));
});
it('is false for details parent in a different DOM tree', () => {
const vFixture = queryShadowFixture(
html`
<div id="shadow">
<summary>Hello World</summary>
</div>
`,
html`
<details>
<slot></slot>
text
</details>
`
);
const vNode = axe.utils.querySelectorAll(vFixture, 'summary')[0];
assert.isFalse(rule.matches(null, vNode));
});
it('is true even if summary has role=none', () => {
const vNode = queryFixture(html`
<details>
<summary id="target" role="none">Summary</summary>
text
</details>
`);
assert.isTrue(rule.matches(null, vNode));
});
it('is true the element has a widget role', () => {
const vNode = queryFixture(html`
<details>
<summary id="target" role="button">Summary</summary>
text
</details>
`);
assert.isTrue(rule.matches(null, vNode));
});
it('is true the element has a non-interactive role', () => {
const vNode = queryFixture(html`
<details>
<summary id="target" role="heading">Summary</summary>
text
</details>
`);
assert.isTrue(rule.matches(null, vNode));
});
it('is true even if summary has tabindex=-1', () => {
const vNode = queryFixture(html`
<details>
<summary id="target" tabindex="-1">Summary</summary>
text
</details>
`);
assert.isTrue(rule.matches(null, vNode));
});
it('is true even if summary is the only child', () => {
const vNode = queryFixture(html`
<details>
<summary id="target">Summary</summary>
</details>
`);
assert.isTrue(rule.matches(null, vNode));
});
});