Files
ewoooc/tests/test_observability_text_density_guardrails.py
ogt ea74a0c5d4
Some checks failed
CD Pipeline / deploy (push) Has been cancelled
style(obs): compact observability workbench copy
2026-07-02 19:15:56 +08:00

68 lines
2.2 KiB
Python

from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
def _template() -> str:
return (ROOT / "templates/admin/observability_overview.html").read_text(encoding="utf-8")
def _any_css_block_has(template: str, selector: str, expected: str) -> bool:
marker = f"{selector} {{"
assert marker in template
return any(expected in block.split("}", 1)[0] for block in template.split(marker)[1:])
def test_observability_overview_first_viewport_is_compact_workbench():
template = _template()
hero = template.split('<section class="obs-hero"', 1)[1].split(
'<section class="obs-grid">',
1,
)[0]
assert 'data-density-guardrail="compact-observability-workbench"' in hero
assert 'aria-label="AI 觀測模式"' in hero
assert "AI 觀測" in hero
assert "風險優先" in hero
assert "下一步" in hero
assert 'aria-label="AI 自動化狀態"' in hero
assert 'data-benchmark-guardrail="golden-signals"' in hero
def test_observability_overview_hides_explanatory_copy_layers():
template = _template()
hidden_selectors = [
".obs-lede",
".obs-signal-note",
".obs-host-meta,\n .obs-footer-source",
".obs-route-desc",
]
for selector in hidden_selectors:
assert _any_css_block_has(template, selector, "display: none")
def test_observability_overview_keeps_first_layer_to_status_numbers_and_actions():
template = _template()
hero = template.split('<section class="obs-hero"', 1)[1].split(
'<section class="obs-grid">',
1,
)[0]
for marker in ["即時風險", "24 小時呼叫", "成本水位", "知識命中率"]:
assert marker in hero
for long_copy in [
"私有 AI 中樞的第一入口",
"主機探測、AI 呼叫、自癒、預算與品質訊號已進總覽",
"以正式資料回讀主機健康、錯誤率、成本與知識命中",
"即時風險分層;詳細事件保留在各子頁",
"持續觀察健康、成本與自癒訊號",
]:
assert long_copy in template
assert long_copy in hero
assert "display: none" in template.split(".obs-signal-note {", 1)[1].split("}", 1)[0]
assert "display: none" in template.split(".obs-lede {", 1)[1].split("}", 1)[0]