import subprocess from src.community.agent_browser import tools as agent_browser_tools def test_agent_browser_tool_rejects_unsupported_command(): result = agent_browser_tools.agent_browser_tool.invoke({"command": "rm -rf /"}) assert "unsupported agent-browser command" in result def test_agent_browser_tool_runs_and_returns_stdout(monkeypatch): monkeypatch.setattr(agent_browser_tools, "_resolve_agent_browser_command", lambda: ["agent-browser"]) def _fake_run(cmd, capture_output, text, check, timeout): assert cmd[0] == "agent-browser" assert "--session" in cmd assert "--json" in cmd return subprocess.CompletedProcess(cmd, 0, stdout='{"ok":true}\n', stderr="") monkeypatch.setattr(agent_browser_tools.subprocess, "run", _fake_run) result = agent_browser_tools.agent_browser_tool.invoke( { "command": "open https://example.com", "session": "s1", "json_output": True, "timeout_seconds": 30, } ) assert result == '{"ok":true}' def test_agent_browser_tool_reports_cli_errors(monkeypatch): monkeypatch.setattr(agent_browser_tools, "_resolve_agent_browser_command", lambda: ["agent-browser"]) def _fake_run(cmd, capture_output, text, check, timeout): return subprocess.CompletedProcess(cmd, 1, stdout="", stderr="browser failed") monkeypatch.setattr(agent_browser_tools.subprocess, "run", _fake_run) result = agent_browser_tools.agent_browser_tool.invoke({"command": "snapshot -i"}) assert "exited with code 1" in result assert "browser failed" in result