Files
hermes-webui/tests/test_geist_contrast_skin.py
2026-05-20 00:09:06 +00:00

55 lines
3.0 KiB
Python

"""Geist Contrast skin registration and contrast affordances."""
from pathlib import Path
REPO = Path(__file__).parent.parent
CSS = (REPO / "static" / "style.css").read_text(encoding="utf-8")
BOOT_JS = (REPO / "static" / "boot.js").read_text(encoding="utf-8")
CONFIG_PY = (REPO / "api" / "config.py").read_text(encoding="utf-8")
INDEX_HTML = (REPO / "static" / "index.html").read_text(encoding="utf-8")
COMMANDS_JS = (REPO / "static" / "commands.js").read_text(encoding="utf-8")
def test_geist_contrast_skin_is_registered_with_matching_key_and_label():
assert "{name:'Geist Contrast'" in BOOT_JS
assert "value:'geist-contrast'" in BOOT_JS
assert "s.value||s.name" in BOOT_JS
assert "'geist-contrast':1" in INDEX_HTML
assert '"geist-contrast"' in CONFIG_PY
def test_geist_contrast_slash_theme_uses_skin_value_key():
assert "const skins=(_SKINS||[]).map(s=>(s.value||s.name).toLowerCase());" in COMMANDS_JS
assert "skins.includes(val)" in COMMANDS_JS
assert "showToast(t('theme_set')+appearance.skin)" in COMMANDS_JS
def test_geist_contrast_dark_tokens_use_yellow_accent_with_neutral_surfaces():
assert ':root.dark[data-skin="geist-contrast"]' in CSS
assert "--bg:#000000" in CSS
assert "--surface:#0a0a0a" in CSS
assert "--text:#ededed" in CSS
assert "--accent:#FFF175" in CSS
assert "--accent-text:#f5e65f" in CSS
def test_geist_contrast_selection_is_neutral_not_solid_yellow():
active_rule = ':root[data-skin="geist-contrast"] .session-item.active{position:relative;border:1px solid var(--border2)!important;}'
marker_rule = ':root[data-skin="geist-contrast"] .session-item.active::before{content:"";position:absolute;left:6px;top:10px;bottom:10px;width:2px;border-radius:999px;background:var(--accent);}'
dark_text_rule = ':root.dark[data-skin="geist-contrast"] .session-item.active,\n :root.dark[data-skin="geist-contrast"] .session-item.active *{color:var(--text)!important;}'
assert active_rule in CSS
assert marker_rule in CSS
assert dark_text_rule in CSS
def test_geist_contrast_solid_accent_controls_use_black_text_in_dark_mode():
assert ':root[data-skin="geist-contrast"] button.send-btn:not(:disabled)' in CSS
assert "color:#050505!important" in CSS
assert ':root[data-skin="geist-contrast"] button.send-btn:disabled{background:var(--surface-subtle)!important;border-color:var(--border)!important;color:var(--muted)!important;opacity:1!important;}' in CSS
assert ':root.dark[data-skin="geist-contrast"] button.send-btn:disabled svg' in CSS
def test_geist_contrast_composer_chips_are_neutral_until_hovered():
neutral_rule = ':root[data-skin="geist-contrast"] .profile-chip,\n :root[data-skin="geist-contrast"] .model-chip,\n :root[data-skin="geist-contrast"] .reasoning-chip,\n :root[data-skin="geist-contrast"] .composer-workspace-chip,\n :root[data-skin="geist-contrast"] .composer-profile-chip,\n :root[data-skin="geist-contrast"] .composer-model-chip{color:var(--muted)!important;border-color:transparent!important;background:transparent!important;}'
assert neutral_rule in CSS