From 0685db2ff571ee143298615bc24db5714bd5a532 Mon Sep 17 00:00:00 2001 From: DanielKeith <7575222+DanielKeith@users.noreply.github.com> Date: Sun, 3 May 2026 17:47:51 -0500 Subject: [PATCH] fix(admin): recognize Brave in _chrome_running process check The doctor's "chrome running" check used a process-name allowlist limited to chrome/edge, so Brave users saw a misleading FAIL line even when the harness connected to Brave successfully (the actual connection logic in daemon.get_ws_url already discovers Brave's user-data-dir). Add brave.exe (Windows) and Brave Browser / brave-browser / brave (POSIX process names across macOS and Linux) to the recognized set. Also broaden the docstring from "Chrome/Edge" to "Chromium-based browser". --- src/browser_harness/admin.py | 6 +++--- tests/unit/test_admin.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/browser_harness/admin.py b/src/browser_harness/admin.py index 83109c41..0b0b9916 100644 --- a/src/browser_harness/admin.py +++ b/src/browser_harness/admin.py @@ -498,16 +498,16 @@ def print_update_banner(out=None): def _chrome_running(): - """Cross-platform best-effort check for a running Chrome/Edge process.""" + """Cross-platform best-effort check for a running Chromium-based browser process.""" import platform, subprocess system = platform.system() try: if system == "Windows": out = subprocess.check_output(["tasklist"], text=True, timeout=5) - names = ("chrome.exe", "msedge.exe") + names = ("chrome.exe", "msedge.exe", "brave.exe") else: out = subprocess.check_output(["ps", "-A", "-o", "comm="], text=True, timeout=5) - names = ("Google Chrome", "chrome", "chromium", "Microsoft Edge", "msedge") + names = ("Google Chrome", "chrome", "chromium", "Microsoft Edge", "msedge", "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 70be8afa..0caaa231 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"})