from typing import AsyncGenerator, Generator import pytest import pytest_asyncio from browser_env import AsyncScriptBrowserEnv, ScriptBrowserEnv HEADLESS = True SLOW_MO = 0 @pytest.fixture(scope="function") def script_browser_env() -> Generator[ScriptBrowserEnv, None, None]: """Create a ScriptBrowserEnv instance for testing. It is automatically closed after the test session. This is helpful when the test failed and the browser is still open. """ env = ScriptBrowserEnv( headless=HEADLESS, slow_mo=SLOW_MO, ) yield env env.close() @pytest.fixture(scope="function") def current_viewport_script_browser_env() -> Generator[ ScriptBrowserEnv, None, None ]: env = ScriptBrowserEnv( headless=HEADLESS, slow_mo=SLOW_MO, current_viewport_only=True, ) yield env env.close() @pytest.fixture(scope="function") def accessibility_tree_script_browser_env() -> Generator[ ScriptBrowserEnv, None, None ]: env = ScriptBrowserEnv( headless=HEADLESS, slow_mo=SLOW_MO, observation_type="accessibility_tree", ) yield env env.close() @pytest.fixture(scope="function") def accessibility_tree_script_browser_env_with_sleep() -> Generator[ ScriptBrowserEnv, None, None ]: env = ScriptBrowserEnv( headless=HEADLESS, slow_mo=SLOW_MO, observation_type="accessibility_tree", sleep_after_execution=1.0 ) yield env env.close() @pytest.fixture(scope="function") def accessibility_tree_current_viewport_script_browser_env() -> Generator[ ScriptBrowserEnv, None, None ]: env = ScriptBrowserEnv( headless=HEADLESS, slow_mo=SLOW_MO, observation_type="accessibility_tree", current_viewport_only=True, ) yield env env.close() @pytest_asyncio.fixture(scope="function", autouse=True) async def async_script_browser_env() -> AsyncGenerator[ AsyncScriptBrowserEnv, None ]: env = AsyncScriptBrowserEnv(headless=HEADLESS, slow_mo=SLOW_MO) yield env await env.aclose()