Files
xiaobaifupan/tests/test_css_governance.py
T

83 lines
2.6 KiB
Python

from __future__ import annotations
import re
import unittest
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
STATIC = ROOT / "static"
TOKENS = STATIC / "shared" / "tokens.css"
LEGACY_STYLESHEETS = (
"styles.css",
"renovation.css",
"redesign-v2.css",
"design-system.css",
"theme.css",
)
class CssGovernanceTests(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.html = (STATIC / "index.html").read_text(encoding="utf-8")
cls.tokens = TOKENS.read_text(encoding="utf-8")
def test_token_layer_loads_before_application_styles(self) -> None:
expected_order = (
"/shared/tokens.css",
"/styles.css",
"/renovation.css",
"/redesign-v2.css",
"/design-system.css",
"/theme.css",
"/wentian-v2.css",
)
positions = [self.html.index(path) for path in expected_order]
self.assertEqual(positions, sorted(positions))
def test_token_file_has_three_layer_contract(self) -> None:
for heading in (
"/* Primitive tokens */",
"/* Semantic tokens */",
"/* Component tokens */",
"/* Compatibility aliases.",
):
self.assertIn(heading, self.tokens)
for variable in (
"--color-action:",
"--surface-canvas:",
"--text-primary:",
"--card-bg:",
"--control-height:",
"--sidebar-width:",
):
self.assertIn(variable, self.tokens)
def test_light_and_dark_semantics_share_one_owner(self) -> None:
self.assertIn(':root[data-theme="dark"] {', self.tokens)
global_root = re.compile(r'(?m)^:root(?:\[data-theme="dark"\])?\s*\{')
for filename in LEGACY_STYLESHEETS:
stylesheet = (STATIC / filename).read_text(encoding="utf-8")
self.assertIsNone(global_root.search(stylesheet), filename)
def test_wentian_tokens_remain_isolated(self) -> None:
self.assertNotRegex(self.tokens, r"--wt-[a-z0-9-]+\s*:")
wentian = (STATIC / "wentian-v2.css").read_text(encoding="utf-8")
self.assertRegex(wentian, r"--wt-[a-z0-9-]+\s*:")
def test_compatibility_aliases_cover_historical_layers(self) -> None:
for variable in (
"--blue:",
"--up:",
"--xb-blue-500:",
"--r2-blue:",
"--chart-background:",
"--dragon-profile-list-width:",
):
self.assertIn(variable, self.tokens)
if __name__ == "__main__":
unittest.main()