File size: 1,351 Bytes
2ecdf7d
 
 
2c1d035
2ecdf7d
 
 
 
 
 
2c1d035
2ecdf7d
 
 
 
 
 
 
 
 
 
 
 
 
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
import unittest
from tests.test_static_contract import assert_source_contains
from pathlib import Path
from tests.reader_sources import read_reader_source

ROOT = Path(__file__).parents[1]

class ReaderAccessibilityTests(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.reader = read_reader_source(ROOT)
        cls.html = (ROOT / "static/reader.html").read_text(encoding="utf-8")
        cls.css = (ROOT / "static/reader.css").read_text(encoding="utf-8")

    def test_reader_controls_and_regions_have_accessible_contracts(self):
        for value in ('role="status"', 'id="page-number"', 'id="page-total"'):
            self.assertIn(value, self.html)
        for value in ('["#back", "返回"]', '["#page-number", "页码"]', '["#zoom", "缩放百分比"]'):
            assert_source_contains(self, value, self.reader)
        for value in ('setAttribute("role", "region")', 'setAttribute("aria-label", `第 ${page} 页`)', 'setAttribute("aria-modal", "true")', 'focus({ preventScroll: true })', 'composedPath()'):
            assert_source_contains(self, value, self.reader)
        self.assertRegex(self.css, r'prefers-contrast\s*:\s*more')
        for value in ('aria-label="下载原文件"', 'role="tablist"', 'role="tab"', 'aria-controls="toc-panel"', 'role="tabpanel"'):
            self.assertIn(value, self.html)