"""Regression guards for agent-tool screenshot DOM sinks."""
from pathlib import Path
_REPO = Path(__file__).resolve().parent.parent
def test_live_tool_screenshot_does_not_template_raw_sse_value():
chat = (_REPO / "static" / "js" / "chat.js").read_text(encoding="utf-8")
assert "safeToolScreenshotSrc(json.screenshot)" in chat
assert 'img.src = screenshotSrc' in chat
assert 'details.innerHTML = `${esc(toolLabel)}' in chat
assert '${toolLabel}' not in chat
assert '${escapeHtml(toolLabel)}' in compare
assert '${toolLabel}' not in compare
def test_generated_image_urls_are_vetted_before_assignment_or_open():
renderer = (_REPO / "static" / "js" / "chatRenderer.js").read_text(encoding="utf-8")
compare = (_REPO / "static" / "js" / "compare" / "stream.js").read_text(encoding="utf-8")
group = (_REPO / "static" / "js" / "group.js").read_text(encoding="utf-8")
assert "export function safeDisplayImageSrc(raw)" in renderer
assert "safeDisplayImageSrc(imageUrl)" in renderer
assert "img.src = safeImageUrl" in renderer
assert "window.open(safeImageUrl, '_blank', 'noopener,noreferrer')" in renderer
assert "safeDisplayImageSrc," in renderer
assert "safeDisplayImageSrc(json.image_url)" in compare
assert "img.src = json.image_url" not in compare
assert "chatRenderer.safeDisplayImageSrc(json.url)" in group
assert "img.src = json.url" not in group
def test_group_chat_role_labels_are_escaped_before_inner_html():
group = (_REPO / "static" / "js" / "group.js").read_text(encoding="utf-8")
assert '