Files
hermes-webui/tests/test_skill_detail_markdown_styling.py
Pamnard f24d633189 Fix skills detail markdown styling with preview-md wrapper
Skill detail and linked markdown files now use the same preview-md
pipeline as Memory/Notes, with code highlighting and KaTeX enhancement.
2026-05-31 23:02:23 +00:00

55 lines
1.8 KiB
Python

"""Skills detail markdown must use the shared preview-md styling pipeline."""
from pathlib import Path
PANELS_JS = Path("static/panels.js").read_text(encoding="utf-8")
def _function_block(name: str) -> str:
marker = f"function {name}("
start = PANELS_JS.find(marker)
assert start != -1, f"{name}() not found"
params_end = PANELS_JS.find("){", start)
assert params_end != -1, f"{name}() body not found"
brace = params_end + 1
depth = 0
for idx in range(brace, len(PANELS_JS)):
ch = PANELS_JS[idx]
if ch == "{":
depth += 1
elif ch == "}":
depth -= 1
if depth == 0:
return PANELS_JS[start : idx + 1]
raise AssertionError(f"{name}() body did not close")
def test_skill_detail_wraps_markdown_in_preview_md():
block = _function_block("_renderSkillDetail")
assert "_skillMarkdownHtml(" in block, "Skill detail must render through the shared markdown wrapper"
assert "renderMd(markdownBody" not in block.replace(" ", ""), (
"Skill detail must not inject raw renderMd() output without preview-md styling"
)
def test_skill_markdown_helper_uses_preview_md():
block = _function_block("_skillMarkdownHtml")
assert 'class="preview-md"' in block.replace("'", '"')
assert "renderMd(" in block
def test_skill_detail_enhances_markdown_after_render():
detail_block = _function_block("_renderSkillDetail")
assert "_enhanceSkillMarkdown(body)" in detail_block
enhance_block = _function_block("_enhanceSkillMarkdown")
assert "highlightCode" in enhance_block
assert "renderKatexBlocks" in enhance_block
def test_open_skill_file_markdown_uses_preview_md():
block = _function_block("openSkillFile")
assert "_skillMarkdownHtml(" in block
assert "if (isMd) _enhanceSkillMarkdown(body)" in block