diff --git a/src/browser_harness/admin.py b/src/browser_harness/admin.py index f4b634d0..7272dfe5 100644 --- a/src/browser_harness/admin.py +++ b/src/browser_harness/admin.py @@ -637,10 +637,10 @@ def _chrome_running(): try: if system == "Windows": out = subprocess.check_output(["tasklist"], text=True, timeout=5) - names = ("chrome.exe", "msedge.exe", "helium.exe") + names = ("chrome.exe", "msedge.exe", "helium.exe", "brave.exe") else: out = subprocess.check_output(["ps", "-A", "-o", "comm="], text=True, timeout=5) - names = ("Google Chrome", "chrome", "chromium", "Microsoft Edge", "msedge", "helium") + names = ("Google Chrome", "chrome", "chromium", "Microsoft Edge", "msedge", "helium", "Brave Browser", "brave-browser", "brave") return any(n.lower() in out.lower() for n in names) except Exception: return False diff --git a/tests/unit/test_admin.py b/tests/unit/test_admin.py index 6826b399..d9b64e76 100644 --- a/tests/unit/test_admin.py +++ b/tests/unit/test_admin.py @@ -20,6 +20,22 @@ def close(self): self.closed = True +def test_chrome_running_detects_brave_on_windows(monkeypatch): + import platform, subprocess + monkeypatch.setattr(platform, "system", lambda: "Windows") + monkeypatch.setattr(subprocess, "check_output", lambda *a, **kw: "Image Name\nbrave.exe 1234 Console\n") + + assert admin._chrome_running() + + +def test_chrome_running_detects_brave_on_posix(monkeypatch): + import platform, subprocess + monkeypatch.setattr(platform, "system", lambda: "Linux") + monkeypatch.setattr(subprocess, "check_output", lambda *a, **kw: "init\nbrave-browser\nbash\n") + + assert admin._chrome_running() + + def test_local_chrome_mode_is_false_when_env_provides_remote_cdp(): assert not admin._is_local_chrome_mode({"BU_CDP_WS": "ws://example.test/devtools/browser/1"})