mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
Chrome auto-launch now passes --user-data-dir, --no-first-run, and
--no-default-browser-check so the debug instance doesn't conflict with
an already-running Chrome using the default profile. The profile dir
lives at {hermes_home}/chrome-debug/.
Also updates the fallback manual instructions to include the same flags
and removes the stale 'close existing Chrome windows' hint.
57 lines
2.4 KiB
Python
57 lines
2.4 KiB
Python
"""Tests for CLI browser CDP auto-launch helpers."""
|
|
|
|
import os
|
|
from unittest.mock import patch
|
|
|
|
from cli import HermesCLI
|
|
|
|
|
|
def _assert_chrome_debug_cmd(cmd, expected_chrome, expected_port):
|
|
"""Verify the auto-launch command has all required flags."""
|
|
assert cmd[0] == expected_chrome
|
|
assert f"--remote-debugging-port={expected_port}" in cmd
|
|
assert "--no-first-run" in cmd
|
|
assert "--no-default-browser-check" in cmd
|
|
user_data_args = [a for a in cmd if a.startswith("--user-data-dir=")]
|
|
assert len(user_data_args) == 1, "Expected exactly one --user-data-dir flag"
|
|
assert "chrome-debug" in user_data_args[0]
|
|
|
|
|
|
class TestChromeDebugLaunch:
|
|
def test_windows_launch_uses_browser_found_on_path(self):
|
|
captured = {}
|
|
|
|
def fake_popen(cmd, **kwargs):
|
|
captured["cmd"] = cmd
|
|
captured["kwargs"] = kwargs
|
|
return object()
|
|
|
|
with patch("cli.shutil.which", side_effect=lambda name: r"C:\Chrome\chrome.exe" if name == "chrome.exe" else None), \
|
|
patch("cli.os.path.isfile", side_effect=lambda path: path == r"C:\Chrome\chrome.exe"), \
|
|
patch("subprocess.Popen", side_effect=fake_popen):
|
|
assert HermesCLI._try_launch_chrome_debug(9333, "Windows") is True
|
|
|
|
_assert_chrome_debug_cmd(captured["cmd"], r"C:\Chrome\chrome.exe", 9333)
|
|
assert captured["kwargs"]["start_new_session"] is True
|
|
|
|
def test_windows_launch_falls_back_to_common_install_dirs(self, monkeypatch):
|
|
captured = {}
|
|
program_files = r"C:\Program Files"
|
|
# Use os.path.join so path separators match cross-platform
|
|
installed = os.path.join(program_files, "Google", "Chrome", "Application", "chrome.exe")
|
|
|
|
def fake_popen(cmd, **kwargs):
|
|
captured["cmd"] = cmd
|
|
captured["kwargs"] = kwargs
|
|
return object()
|
|
|
|
monkeypatch.setenv("ProgramFiles", program_files)
|
|
monkeypatch.delenv("ProgramFiles(x86)", raising=False)
|
|
monkeypatch.delenv("LOCALAPPDATA", raising=False)
|
|
|
|
with patch("cli.shutil.which", return_value=None), \
|
|
patch("cli.os.path.isfile", side_effect=lambda path: path == installed), \
|
|
patch("subprocess.Popen", side_effect=fake_popen):
|
|
assert HermesCLI._try_launch_chrome_debug(9222, "Windows") is True
|
|
|
|
_assert_chrome_debug_cmd(captured["cmd"], installed, 9222)
|