Skip to content

Commit

Permalink
fix: EPUB pagebreak in addition to title and ARIA-label allows ARIA-…
Browse files Browse the repository at this point in the history
…labelledBy and element content text
  • Loading branch information
danielweck committed Feb 4, 2025
1 parent 7a1345d commit 9050826
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 37 deletions.
2 changes: 1 addition & 1 deletion packages/ace-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"@daisy/ace-report": "1.3.3-alpha.6",
"@daisy/ace-report-axe": "1.3.3-alpha.6",
"@daisy/epub-utils": "1.3.3-alpha.6",
"@daisy/axe-core-for-ace": "4.10.2-canary.2",
"@daisy/axe-core-for-ace": "4.10.2-canary.3",
"file-url": "^3.0.0",
"p-map": "^4.0.0",
"tmp": "^0.2.3",
Expand Down
49 changes: 25 additions & 24 deletions tests/__tests__/axe-rules.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ test('Ensure page breaks have labels', async () => {
expect(report['earl:result']['earl:outcome']).toEqual('fail');
const assertions = findAssertionsForDoc(report, 'content_001.xhtml');
expect(assertions).toBeDefined();

expect(assertions).toEqual(expect.arrayContaining([
expect.objectContaining({
'earl:test': expect.objectContaining({ 'dct:title': 'pagebreak-label' }),
Expand All @@ -179,17 +180,18 @@ test('Ensure page breaks have labels', async () => {
'earl:test': expect.objectContaining({ 'dct:title': 'pagebreak-label' }),
'earl:result': expect.objectContaining({
'earl:outcome': 'fail',
'earl:pointer': expect.objectContaining({ css: ['#p7'] }),
'earl:pointer': expect.objectContaining({ css: ['#p5'] }),
}),
}),
expect.objectContaining({
'earl:test': expect.objectContaining({ 'dct:title': 'pagebreak-label' }),
'earl:result': expect.objectContaining({
'earl:outcome': 'fail',
'earl:pointer': expect.objectContaining({ css: ['#p8'] }),
'earl:pointer': expect.objectContaining({ css: ['#p5x'] }),
}),
}),
})
]));

expect(assertions).not.toEqual(expect.arrayContaining([
expect.objectContaining({
'earl:test': expect.objectContaining({ 'dct:title': 'pagebreak-label' }),
Expand All @@ -213,7 +215,7 @@ test('Ensure page breaks have labels', async () => {
'earl:test': expect.objectContaining({ 'dct:title': 'pagebreak-label' }),
'earl:result': expect.objectContaining({
'earl:outcome': 'fail',
'earl:pointer': expect.objectContaining({ css: ['#p5'] }),
'earl:pointer': expect.objectContaining({ css: ['#p6'] }),
}),
})
]));
Expand All @@ -222,29 +224,28 @@ test('Ensure page breaks have labels', async () => {
'earl:test': expect.objectContaining({ 'dct:title': 'pagebreak-label' }),
'earl:result': expect.objectContaining({
'earl:outcome': 'fail',
'earl:pointer': expect.objectContaining({ css: ['#p6'] }),
'earl:pointer': expect.objectContaining({ css: ['#p7'] }),
}),
})
]));
expect(assertions).not.toEqual(expect.arrayContaining([
expect.objectContaining({
'earl:test': expect.objectContaining({ 'dct:title': 'pagebreak-label' }),
'earl:result': expect.objectContaining({
'earl:outcome': 'fail',
'earl:pointer': expect.objectContaining({ css: ['#p8'] }),
}),
})
]));
expect(assertions).not.toEqual(expect.arrayContaining([
expect.objectContaining({
'earl:test': expect.objectContaining({ 'dct:title': 'pagebreak-label' }),
'earl:result': expect.objectContaining({
'earl:outcome': 'fail',
'earl:pointer': expect.objectContaining({ css: ['#p9'] }),
}),
})
]));
// SEE: https://github.com/daisy/ace/issues/355
// expect(assertions).not.toEqual(expect.arrayContaining([
// expect.objectContaining({
// 'earl:test': expect.objectContaining({ 'dct:title': 'pagebreak-label' }),
// 'earl:result': expect.objectContaining({
// 'earl:outcome': 'fail',
// 'earl:pointer': expect.objectContaining({ css: ['#p7'] }),
// }),
// })
// ]));
// expect(assertions).not.toEqual(expect.arrayContaining([
// expect.objectContaining({
// 'earl:test': expect.objectContaining({ 'dct:title': 'pagebreak-label' }),
// 'earl:result': expect.objectContaining({
// 'earl:outcome': 'fail',
// 'earl:pointer': expect.objectContaining({ css: ['#p8'] }),
// }),
// })
// ]));
});

test('Checks that `epub:type` have matching ARIA roles', async() => {
Expand Down
27 changes: 19 additions & 8 deletions tests/data/axerule-pagebreak-label/EPUB/content_001.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,24 @@
<body>
<h1>Loomings</h1>
<p>Call me Ishmael.</p>
<span id="p1" role="doc-pagebreak" title="p1"/>
<span id="p2" epub:type="pagebreak" title="p2"/>
<span id="p3" role="doc-pagebreak"/>
<span id="p4" epub:type="pagebreak"/>
<span id="p5" role="doc-pagebreak" aria-label="p5"/>
<span id="p6" epub:type="pagebreak" aria-label="p6"/>
<span id="p7" role="doc-pagebreak">p7</span>
<span id="p8" epub:type="pagebreak">p8</span>
<span id="p1" role="doc-pagebreak" title="p1" />
<span id="p2" epub:type="pagebreak" title="p2" />
<span id="p3" role="doc-pagebreak" />
<span id="p4" epub:type="pagebreak" />
<span id="p5" role="doc-pagebreak"></span>
<span id="p5x" epub:type="pagebreak"></span>
<span id="p6" role="doc-pagebreak" aria-label="p6" />
<span id="p7" role="doc-pagebreak">p7</span>
<span id="p8" epub:type="pagebreak">p8</span>
<div>
<span
id="p9"
epub:type="pagebreak"
role="doc-pagebreak"
aria-labelledby="p9desc"
></span>
<span id="p9desc" aria-hidden="true" hidden="hidden">p9</span>
<span aria-hidden="true" class="page-number">Page break 9</span>
</div>
</body>
</html>
6 changes: 6 additions & 0 deletions tests/data/axerule-pagebreak-label/EPUB/nav.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@
<li><a href="content_001.xhtml#p2">page 2</a></li>
<li><a href="content_001.xhtml#p3">page 3</a></li>
<li><a href="content_001.xhtml#p4">page 4</a></li>
<li><a href="content_001.xhtml#p5">page 5</a></li>
<li><a href="content_001.xhtml#p5x">page 5x</a></li>
<li><a href="content_001.xhtml#p6">page 6</a></li>
<li><a href="content_001.xhtml#p7">page 7</a></li>
<li><a href="content_001.xhtml#p8">page 8</a></li>
<li><a href="content_001.xhtml#p9">page 9</a></li>
</ol>
</nav>
</body>
Expand Down
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -998,10 +998,10 @@
enabled "2.0.x"
kuler "^2.0.0"

"@daisy/axe-core-for-ace@4.10.2-canary.2":
version "4.10.2-canary.2"
resolved "https://registry.yarnpkg.com/@daisy/axe-core-for-ace/-/axe-core-for-ace-4.10.2-canary.2.tgz#c0d1c7a6b2ee78d7dafcee115683862a95e45c8d"
integrity sha512-hlmOnjH8D1PpQDvWHY5dJwOWYQx7O08+acgO4j79TOvtrc8MqTodYgAVcSdO+wIUMCN/bfwbfoDRcludOQsUYQ==
"@daisy/axe-core-for-ace@4.10.2-canary.3":
version "4.10.2-canary.3"
resolved "https://registry.yarnpkg.com/@daisy/axe-core-for-ace/-/axe-core-for-ace-4.10.2-canary.3.tgz#d0d21227546d940bb62c8a93ce5e127189b990d3"
integrity sha512-WstkcWpxo6Y87DiAtoQReUWP33+Shen1IMKwGi/YeuP9COwteNCWDQer0nAVfWc0RCqjc8YnZQ0VXYPAFuJHyA==

"@electron/get@^2.0.0":
version "2.0.3"
Expand Down

0 comments on commit 9050826

Please sign in to comment.