Files
hermes-webui/tests/test_webui_platform_hint.py
T
starship-s 0a91e3cb02 fix: identify WebUI sessions as webui platform (#948)
* fix: use webui platform for webui sessions

* test: harden WebUI platform hint regression coverage
2026-04-24 11:03:42 -07:00

48 lines
1.9 KiB
Python

"""Regression: WebUI AIAgent call sites must use platform='webui', not 'cli'.
These are static source-level checks that will catch any future regression where
a developer accidentally reverts the platform kwarg back to 'cli'.
"""
import pathlib
import re
REPO_ROOT = pathlib.Path(__file__).parent.parent
PLATFORM_KWARG_RE = r'platform\s*=\s*["\']{platform}["\']'
def _load_source(relative_path: str) -> str:
"""Load a repository source file with a focused assertion on missing files."""
path = REPO_ROOT / relative_path
assert path.exists(), f"{relative_path} does not exist"
return path.read_text(encoding="utf-8")
def _count_platform_kwargs(source: str, platform: str) -> int:
return len(re.findall(PLATFORM_KWARG_RE.format(platform=re.escape(platform)), source))
def test_streaming_uses_webui_platform():
"""api/streaming.py must pass platform='webui' when constructing AIAgent."""
streaming_py = _load_source("api/streaming.py")
webui_count = _count_platform_kwargs(streaming_py, "webui")
cli_count = _count_platform_kwargs(streaming_py, "cli")
assert cli_count == 0, (
f"streaming.py still has {cli_count} platform='cli' AIAgent call(s); convert to 'webui'"
)
assert webui_count >= 1, (
f"streaming.py expected ≥1 platform='webui' call, found {webui_count}"
)
def test_routes_uses_webui_platform_for_all_agent_calls():
"""api/routes.py must use platform='webui' for all AIAgent instantiations."""
routes_py = _load_source("api/routes.py")
webui_count = _count_platform_kwargs(routes_py, "webui")
cli_count = _count_platform_kwargs(routes_py, "cli")
assert cli_count == 0, (
f"routes.py still has {cli_count} platform='cli' AIAgent call(s); convert to 'webui'"
)
assert webui_count >= 2, (
f"routes.py expected ≥2 platform='webui' calls, found {webui_count}"
)