fix: normalize live Chrome CDP endpoints for browser tools
This commit is contained in:
47
tests/tools/test_browser_cdp_override.py
Normal file
47
tests/tools/test_browser_cdp_override.py
Normal file
@@ -0,0 +1,47 @@
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
|
||||
HOST = "example-host"
|
||||
PORT = 9223
|
||||
WS_URL = f"ws://{HOST}:{PORT}/devtools/browser/abc123"
|
||||
HTTP_URL = f"http://{HOST}:{PORT}"
|
||||
VERSION_URL = f"{HTTP_URL}/json/version"
|
||||
|
||||
|
||||
class TestResolveCdpOverride:
|
||||
def test_keeps_full_devtools_websocket_url(self):
|
||||
from tools.browser_tool import _resolve_cdp_override
|
||||
|
||||
assert _resolve_cdp_override(WS_URL) == WS_URL
|
||||
|
||||
def test_resolves_http_discovery_endpoint_to_websocket(self):
|
||||
from tools.browser_tool import _resolve_cdp_override
|
||||
|
||||
response = Mock()
|
||||
response.raise_for_status.return_value = None
|
||||
response.json.return_value = {"webSocketDebuggerUrl": WS_URL}
|
||||
|
||||
with patch("tools.browser_tool.requests.get", return_value=response) as mock_get:
|
||||
resolved = _resolve_cdp_override(HTTP_URL)
|
||||
|
||||
assert resolved == WS_URL
|
||||
mock_get.assert_called_once_with(VERSION_URL, timeout=10)
|
||||
|
||||
def test_resolves_bare_ws_hostport_to_discovery_websocket(self):
|
||||
from tools.browser_tool import _resolve_cdp_override
|
||||
|
||||
response = Mock()
|
||||
response.raise_for_status.return_value = None
|
||||
response.json.return_value = {"webSocketDebuggerUrl": WS_URL}
|
||||
|
||||
with patch("tools.browser_tool.requests.get", return_value=response) as mock_get:
|
||||
resolved = _resolve_cdp_override(f"ws://{HOST}:{PORT}")
|
||||
|
||||
assert resolved == WS_URL
|
||||
mock_get.assert_called_once_with(VERSION_URL, timeout=10)
|
||||
|
||||
def test_falls_back_to_raw_url_when_discovery_fails(self):
|
||||
from tools.browser_tool import _resolve_cdp_override
|
||||
|
||||
with patch("tools.browser_tool.requests.get", side_effect=RuntimeError("boom")):
|
||||
assert _resolve_cdp_override(HTTP_URL) == HTTP_URL
|
||||
Reference in New Issue
Block a user