"""551-1 공통 값 한 벌 · 글꼴 파일 실음 — 지킴 시험.""" import re from pathlib import Path ROOT = Path(__file__).resolve().parents[2] UI = ROOT / "ui_template" THEME = (UI / "ui_template_theme.css").read_text(encoding="utf-8") FONTS = UI / "fonts" def test_글꼴_한_토큰_실은_파일(): assert THEME.lstrip().startswith("/*") and '@import url("./fonts/noto_sans_kr.css");' in THEME assert THEME.index("@import") < THEME.index(":root {") # @import 는 규칙보다 앞 assert '--font-ui: "Noto Sans KR",' in THEME assert "--font-body: var(--font-ui);" in THEME and "--font-display: var(--font-ui);" in THEME for name in ("Inter", "Britti", "Pretendard", "Plus Jakarta"): assert name not in THEME, name css = (FONTS / "noto_sans_kr.css").read_text(encoding="utf-8") files = re.findall(r'url\("\./(noto-sans-kr-\d+\.woff2)"\)', css) assert files and len(files) == css.count("@font-face") for f in files: assert (FONTS / f).stat().st_size > 1000, f assert css.count('font-family: "Noto Sans KR";') == len(files) assert css.count("unicode-range:") == len(files) assert "SIL OPEN FONT LICENSE Version 1.1" in (FONTS / "OFL.txt").read_text(encoding="utf-8") assert len(css.splitlines()) <= 700 def test_옛_보라_이름은_별칭(): root = THEME[THEME.index(":root {") :] root = root[: root.index("\n}\n")] for old, new in ( ("deep-iris", "text"), ("plum-velvet", "text"), ("royal-amethyst", "accent"), ("mist-violet", "accent-soft"), ): assert f"--color-{old}: var(--color-{new});" in root, old assert "--color-accent: #1f7a4d;" in root and "--color-danger: #c0392b;" in root assert "--color-danger-fill: #d6363c;" in root # 557-2 흰 글 대비 4.5 이상 dark = THEME[THEME.index(':root[data-theme="dark"]') :] assert "deep-iris" not in dark and "royal-amethyst" not in dark # 어두움도 별칭으로 따라옴