|
|
""" |
|
|
Test configuration for browser-use. |
|
|
""" |
|
|
|
|
|
import logging |
|
|
import os |
|
|
import sys |
|
|
|
|
|
import pytest |
|
|
from langchain_openai import ChatOpenAI |
|
|
from pydantic import SecretStr |
|
|
|
|
|
|
|
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) |
|
|
|
|
|
|
|
|
from dotenv import load_dotenv |
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
|
|
|
logging.basicConfig(level=logging.DEBUG) |
|
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
|
|
|
from browser_use.browser.browser import Browser, BrowserConfig |
|
|
from browser_use.browser.context import BrowserContext |
|
|
|
|
|
|
|
|
@pytest.fixture(scope='session') |
|
|
def llm(): |
|
|
""" |
|
|
Fixture to provide a ChatOpenAI instance or a mock for testing. |
|
|
Uses a mock if OPENAI_API_KEY is not set. |
|
|
""" |
|
|
api_key = os.getenv('OPENAI_API_KEY') |
|
|
logger.debug(f'API Key present: {bool(api_key)}') |
|
|
logger.debug('Using actual ChatOpenAI model') |
|
|
return ChatOpenAI(model='gpt-4o', api_key=SecretStr(api_key) if api_key else None) |
|
|
|
|
|
|
|
|
@pytest.fixture(scope='session') |
|
|
def browser(): |
|
|
""" |
|
|
Fixture to provide a Browser instance for testing. |
|
|
""" |
|
|
logger.debug('Creating Browser instance for testing') |
|
|
return Browser(config=BrowserConfig(headless=True, disable_security=True)) |
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function') |
|
|
async def browser_context(browser): |
|
|
""" |
|
|
Fixture to provide a BrowserContext instance for testing. |
|
|
""" |
|
|
logger.debug('Creating BrowserContext instance for testing') |
|
|
context = BrowserContext(browser=browser) |
|
|
yield context |
|
|
await context.close() |
|
|
|