test_browser_test.py•4.66 kB
#!/usr/bin/env python3
"""
Simple test script for Session-Based Browser Automation MCP Server
Tests the basic functionality without requiring instance_id parameters
"""
import unittest
# Import the session-based browser manager
from browser_fastmcp_server import SessionBrowserManager, BrowserConfig
class TestSessionBrowser(unittest.IsolatedAsyncioTestCase):
async def asyncSetUp(self):
self.manager = SessionBrowserManager(max_instances=5, default_ttl=300)
async def asyncTearDown(self):
await self.manager.shutdown()
async def test_session_creation(self):
"""Test creating browser sessions"""
print("\n🧪 Testing session creation...")
# Create first session
session1 = "test_session_1"
instance1 = await self.manager.get_or_create_session_instance(session1, BrowserConfig(headless=True))
print(f"✅ Created session: {session1}")
# Create second session
session2 = "test_session_2"
instance2 = await self.manager.get_or_create_session_instance(session2, BrowserConfig(headless=True))
print(f"✅ Created session: {session2}")
# Verify sessions are different
self.assertNotEqual(instance1.session_id, instance2.session_id)
print("✅ Sessions are isolated")
# Test getting existing session
existing_instance = await self.manager.get_session_instance(session1)
self.assertEqual(existing_instance.session_id, session1)
print("✅ Retrieved existing session")
# Test session info
info = await self.manager.get_session_info(session1)
self.assertIsNotNone(info)
self.assertEqual(info.session_id, session1)
print("✅ Session info retrieved")
async def test_session_isolation(self):
"""Test that sessions are properly isolated"""
print("\n🧪 Testing session isolation...")
session1 = "isolation_test_1"
session2 = "isolation_test_2"
# Create two sessions
instance1 = await self.manager.get_or_create_session_instance(session1)
instance2 = await self.manager.get_or_create_session_instance(session2)
# Verify they have different temp directories
self.assertNotEqual(instance1.temp_dir, instance2.temp_dir)
print("✅ Sessions have different temp directories")
# Verify they have different browser sessions
self.assertIsNot(instance1.browser_session, instance2.browser_session)
print("✅ Sessions have different browser instances")
# Test session count
count = self.manager.get_session_count()
self.assertGreaterEqual(count, 2)
print(f"✅ Session count: {count}")
# 关闭
await self.manager.close_session(session1)
await self.manager.close_session(session2)
async def test_session_cleanup(self):
"""Test session cleanup"""
print("\n🧪 Testing session cleanup...")
session = "cleanup_test"
instance = await self.manager.get_or_create_session_instance(session)
# Verify session exists
info = await self.manager.get_session_info(session)
self.assertIsNotNone(info)
print("✅ Session created for cleanup test")
# Close session
await self.manager.close_session(session)
print("✅ Session closed")
# Verify session is gone - should raise exception or return None
try:
info = await self.manager.get_session_info(session)
self.assertIsNone(info, "Session should not exist after cleanup")
except Exception as e:
if "not found" in str(e):
print("✅ Session properly cleaned up")
else:
raise e
async def test_session_manager_status(self):
"""Test session manager status functions"""
print("\n🧪 Testing session manager status...")
# Create a test session
session = "status_test"
await self.manager.get_or_create_session_instance(session)
# Test get_all_sessions_info
sessions_info = await self.manager.get_all_sessions_info()
self.assertGreater(len(sessions_info), 0)
print(f"✅ Found {len(sessions_info)} active sessions")
# Test get_session_count
count = self.manager.get_session_count()
self.assertGreater(count, 0)
print(f"✅ Session count: {count}")
# Clean up
await self.manager.close_session(session)