Search / tests /test_reader_accessibility.py
OpenCode
Track project test suites
2ecdf7d
Raw History Blame Contribute Delete
1.33 kB
import unittest
from tests.test_static_contract import assert_source_contains
from pathlib import Path
ROOT = Path(__file__).parents[1]
class ReaderAccessibilityTests(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.reader = (ROOT / "static/reader.js").read_text(encoding="utf-8")
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)