import os import subprocess import sys from pathlib import Path ROOT = Path(__file__).resolve().parents[2] def _run_browser_use_cli(*args: str) -> subprocess.CompletedProcess[str]: env = os.environ.copy() env['PYTHONPATH'] = os.pathsep.join(part for part in (str(ROOT), env.get('PYTHONPATH', '')) if part) return subprocess.run( [sys.executable, '-m', 'browser_use.cli', *args], cwd=ROOT, env=env, capture_output=True, text=True, timeout=20, ) def test_browser_use_doctor_help_prints_browser_use_usage(): result = _run_browser_use_cli('doctor', '--help') assert result.returncode == 0 assert result.stdout == 'usage: browser-use doctor [--fix-snap]\n' assert result.stderr == '' def test_normalize_captured_cli_output_handles_string_system_exit(capsys): from browser_use.cli import _normalize_captured_cli_output def exits_with_string(_argv): raise SystemExit('browser-harness failed') assert _normalize_captured_cli_output(exits_with_string, []) == 1 captured = capsys.readouterr() assert captured.out == '' assert captured.err == 'browser-use failed\n' def test_browser_use_tui_is_deprecated_alias(monkeypatch, capsys): import browser_use.cli as browser_use_cli monkeypatch.setattr(browser_use_cli, 'main', lambda: 0) assert browser_use_cli.browser_use_tui_main() == 0 assert capsys.readouterr().err == 'browser-use-tui is deprecated; use browser-use instead.\n'