Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
"""Regression coverage for provider-authoritative cloud browser expiry."""
|
||||
|
||||
from unittest.mock import Mock
|
||||
|
||||
import tools.browser_tool as browser_tool
|
||||
from plugins.browser.browser_use import provider as browser_use_provider
|
||||
|
||||
|
||||
def _isolate_browser_state(monkeypatch):
|
||||
monkeypatch.setattr(browser_tool, "_active_sessions", {})
|
||||
monkeypatch.setattr(browser_tool, "_session_last_activity", {})
|
||||
monkeypatch.setattr(browser_tool, "_start_browser_cleanup_thread", lambda: None)
|
||||
monkeypatch.setattr(browser_tool, "_ensure_cdp_supervisor", lambda task_id: None)
|
||||
|
||||
|
||||
def test_browser_use_preserves_provider_timeout(monkeypatch):
|
||||
provider = browser_use_provider.BrowserUseBrowserProvider()
|
||||
response = Mock(
|
||||
ok=True,
|
||||
headers={},
|
||||
)
|
||||
response.json.return_value = {
|
||||
"id": "browser-session-1",
|
||||
"cdpUrl": "ws://browser-use.example/devtools/browser/1",
|
||||
"timeoutAt": "2030-01-01T00:05:00Z",
|
||||
}
|
||||
|
||||
monkeypatch.setattr(
|
||||
provider,
|
||||
"_get_config",
|
||||
lambda: {
|
||||
"api_key": "test-key",
|
||||
"base_url": "https://api.browser-use.example/api/v3",
|
||||
"managed_mode": False,
|
||||
},
|
||||
)
|
||||
monkeypatch.setattr(browser_use_provider.requests, "post", Mock(return_value=response))
|
||||
|
||||
session = provider.create_session("task-1")
|
||||
|
||||
assert session["expires_at"] == "2030-01-01T00:05:00Z"
|
||||
|
||||
|
||||
def test_live_cloud_session_is_reused(monkeypatch):
|
||||
_isolate_browser_state(monkeypatch)
|
||||
existing = {
|
||||
"session_name": "existing",
|
||||
"bb_session_id": "browser-session-1",
|
||||
"cdp_url": "ws://browser-use.example/devtools/browser/1",
|
||||
"expires_at": "2999-01-01T00:05:00Z",
|
||||
}
|
||||
browser_tool._active_sessions["task-1"] = existing
|
||||
provider = Mock()
|
||||
monkeypatch.setattr(browser_tool, "_get_cloud_provider", lambda: provider)
|
||||
|
||||
session = browser_tool._get_session_info("task-1")
|
||||
|
||||
assert session is existing
|
||||
provider.create_session.assert_not_called()
|
||||
|
||||
|
||||
def test_expired_cloud_session_is_replaced_without_reusing_dead_cdp(monkeypatch):
|
||||
_isolate_browser_state(monkeypatch)
|
||||
browser_tool._active_sessions["task-1"] = {
|
||||
"session_name": "expired",
|
||||
"bb_session_id": "browser-session-old",
|
||||
"cdp_url": "ws://browser-use.example/devtools/browser/old",
|
||||
"expires_at": "2020-01-01T00:05:00Z",
|
||||
}
|
||||
browser_tool._session_last_activity["task-1"] = 1.0
|
||||
|
||||
provider = Mock()
|
||||
provider.create_session.return_value = {
|
||||
"session_name": "replacement",
|
||||
"bb_session_id": "browser-session-new",
|
||||
"cdp_url": "ws://browser-use.example/devtools/browser/new",
|
||||
"expires_at": "2999-01-01T00:05:00Z",
|
||||
}
|
||||
monkeypatch.setattr(browser_tool, "_get_cloud_provider", lambda: provider)
|
||||
monkeypatch.setattr(browser_tool, "_get_cdp_override", lambda: "")
|
||||
monkeypatch.setattr(browser_tool, "_stop_cdp_supervisor", Mock())
|
||||
monkeypatch.setattr(browser_tool, "_maybe_stop_recording", Mock())
|
||||
monkeypatch.setattr(browser_tool, "_run_browser_command", Mock())
|
||||
monkeypatch.setattr(browser_tool.os.path, "exists", lambda path: False)
|
||||
|
||||
session = browser_tool._get_session_info("task-1")
|
||||
|
||||
assert session["bb_session_id"] == "browser-session-new"
|
||||
assert browser_tool._active_sessions["task-1"] is session
|
||||
assert "task-1" in browser_tool._session_last_activity
|
||||
provider.close_session.assert_called_once_with("browser-session-old")
|
||||
provider.create_session.assert_called_once_with("task-1")
|
||||
browser_tool._run_browser_command.assert_not_called()
|
||||
Reference in New Issue
Block a user