wip: add web console cockpit regression tests for #394
This commit is contained in:
61
tests/tools/test_browser_runtime_cockpit.py
Normal file
61
tests/tools/test_browser_runtime_cockpit.py
Normal file
@@ -0,0 +1,61 @@
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
|
||||
class TestBrowserRuntimeCockpit:
|
||||
def setup_method(self):
|
||||
import tools.browser_tool as bt
|
||||
self.bt = bt
|
||||
self.orig_active = bt._active_sessions.copy()
|
||||
self.orig_last = bt._session_last_activity.copy()
|
||||
|
||||
def teardown_method(self):
|
||||
self.bt._active_sessions.clear()
|
||||
self.bt._active_sessions.update(self.orig_active)
|
||||
self.bt._session_last_activity.clear()
|
||||
self.bt._session_last_activity.update(self.orig_last)
|
||||
|
||||
def test_runtime_status_reports_mode_and_sessions(self):
|
||||
import tools.browser_tool as bt
|
||||
|
||||
bt._active_sessions['task-a'] = {
|
||||
'session_name': 'sess-a',
|
||||
'bb_session_id': 'bb_123',
|
||||
'cdp_url': 'ws://browser/devtools/browser/abc',
|
||||
}
|
||||
bt._session_last_activity['task-a'] = 111.0
|
||||
|
||||
provider = Mock()
|
||||
provider.provider_name.return_value = 'browserbase'
|
||||
|
||||
with patch('tools.browser_tool._get_cdp_override', return_value='ws://browser/devtools/browser/override'), \
|
||||
patch('tools.browser_tool._get_cloud_provider', return_value=provider), \
|
||||
patch('tools.browser_tool.check_browser_requirements', return_value=True), \
|
||||
patch('tools.browser_tool._find_agent_browser', return_value='/usr/local/bin/agent-browser'):
|
||||
status = bt.browser_runtime_status()
|
||||
|
||||
assert status['mode'] == 'cdp'
|
||||
assert status['available'] is True
|
||||
assert status['cloud_provider'] == 'browserbase'
|
||||
assert status['session_count'] == 1
|
||||
assert status['active_sessions'][0]['task_id'] == 'task-a'
|
||||
assert status['self_healing']['orphan_reaper'] is True
|
||||
|
||||
def test_runtime_heal_cleans_sessions(self):
|
||||
import tools.browser_tool as bt
|
||||
|
||||
bt._active_sessions['task-a'] = {'session_name': 'sess-a'}
|
||||
bt._active_sessions['task-b'] = {'session_name': 'sess-b'}
|
||||
|
||||
with patch('tools.browser_tool.cleanup_all_browsers') as mock_cleanup, \
|
||||
patch('tools.browser_tool._reap_orphaned_browser_sessions') as mock_reap, \
|
||||
patch('tools.browser_tool.browser_runtime_status', side_effect=[
|
||||
{'session_count': 2, 'mode': 'local', 'available': True},
|
||||
{'session_count': 0, 'mode': 'local', 'available': True},
|
||||
]):
|
||||
result = bt.browser_runtime_heal()
|
||||
|
||||
mock_cleanup.assert_called_once_with()
|
||||
mock_reap.assert_called_once_with()
|
||||
assert result['success'] is True
|
||||
assert result['before']['session_count'] == 2
|
||||
assert result['after']['session_count'] == 0
|
||||
Reference in New Issue
Block a user