| """ |
| 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() |
|
|