Files
hermes-agent/tests/hermes_cli/test_dashboard_browser_safe_imports.py

17 lines
558 B
Python
Raw Normal View History

"""Static dashboard tests for browser-safe @nous-research/ui imports."""
from pathlib import Path
WEB_SRC = Path(__file__).resolve().parents[2] / "web" / "src"
def test_dashboard_does_not_import_nous_ui_root_barrel():
offenders = []
Merge upstream/main and address Copilot review feedback Merge resolved conflicts in web/src/{i18n/{en,zh,types}.ts,lib/api.ts} by keeping both this branch's `profiles` additions and upstream's new `models` page additions. Copilot review feedback: - Implement POST /api/profiles/{name}/open-terminal endpoint (already present); align Windows branch to `cmd.exe /c start "" <cmd>` so it matches the new test and spawns a fresh window instead of /k reusing the parent console. - Move backslash escaping out of the macOS AppleScript f-string expression (Python <3.12 disallows backslashes inside f-string expression parts). - Patch `_get_wrapper_dir` via monkeypatch in test_profiles_create_creates_wrapper_alias_when_safe so the test no longer writes to the real `~/.local/bin`. - Extend test_dashboard_browser_safe_imports to scan `.ts` files in addition to `.tsx`. - Switch upstream's new ModelsPage.tsx away from the `@nous-research/ui` root barrel onto per-component subpaths to satisfy the stricter scan. - Fix NouiTypography `leading-1.4` -> `leading-[1.4]` so Tailwind actually emits the line-height for the `sm` variant. - Guard ProfilesPage.openSoulEditor against out-of-order responses by tracking the latest requested profile via a ref. - Replace ProfilesPage's hand-rolled setup command with a fetch to `/api/profiles/{name}/setup-command` so the copied command always matches what the backend would actually run (handles wrapper-alias collisions and reserved names correctly). - Wire SOUL.md textarea label `htmlFor` -> textarea `id` so screen readers and clicking the label work as expected.
2026-04-30 06:43:22 -04:00
for ext in ("*.tsx", "*.ts"):
for path in WEB_SRC.rglob(ext):
content = path.read_text(encoding="utf-8")
if 'from "@nous-research/ui"' in content or "from '@nous-research/ui'" in content:
offenders.append(str(path.relative_to(WEB_SRC)))
assert offenders == []