11import contextlib
2- import os
2+ from collections . abc import Generator
33from typing import TYPE_CHECKING , cast
44
55import pytest
1111if TYPE_CHECKING :
1212 from requestium .requestium_mixin import DriverMixin
1313
14+ # ruff: noqa FBT003
1415
15- @pytest .fixture
16+
17+ @pytest .fixture (scope = "module" )
1618def example_html () -> str :
1719 return """
1820 <html>
@@ -34,29 +36,30 @@ def example_html() -> str:
3436 "chrome-headless" ,
3537 "chrome" ,
3638 "firefox-headless" ,
37- pytest .param ("firefox" , marks = pytest .mark .skipif (os .getenv ("CI" ) == "true" , reason = "Non-headless Firefox unreliable in CI" )),
38- ]
39+ "firefox" ,
40+ ],
41+ scope = "module" ,
3942)
40- def session (request ): # noqa: ANN001, ANN201
43+ def session (request ) -> Generator [ requestium . Session ] : # noqa: ANN001
4144 driver_type = request .param
4245
43- if driver_type == "chrome-headless" :
44- options = webdriver . ChromeOptions ()
45- options . add_argument ( "--headless=new" )
46- options .add_argument ("--no-sandbox" ) # Helps when running on Github Actions
47- options .add_argument ("--disable-dev-shm-usage" ) # Helps when running on Github Actions
48- driver = webdriver . Chrome ( options = options )
49- elif driver_type == "chrome" :
50- options = webdriver .ChromeOptions ( )
51- options . add_argument ( "--no-sandbox" ) # Helps when running on Github Actions
52- options . add_argument ( "--disable-dev-shm-usage" ) # Helps when running on Github Actions
53- driver = webdriver . Chrome ( options = options )
54- elif driver_type == "firefox-headless" :
55- options = webdriver . FirefoxOptions ( )
56- options . add_argument ( "--headless" )
57- driver = webdriver . Firefox ( options = options )
58- elif driver_type == "firefox" :
59- driver = webdriver .Firefox ()
46+ driver : webdriver . Chrome | webdriver . Firefox
47+ if "chrome" in driver_type :
48+ chrome_options : webdriver . ChromeOptions = webdriver . ChromeOptions ( )
49+ chrome_options .add_argument ("--no-sandbox" ) # Helps when running on Github Actions
50+ chrome_options .add_argument ("--disable-dev-shm-usage" ) # Helps when running on Github Actions
51+ if driver_type == "chrome-headless" :
52+ chrome_options . add_argument ( "--headless=new" )
53+ driver = webdriver .Chrome ( options = chrome_options )
54+ elif "firefox" in driver_type :
55+ firefox_options : webdriver . FirefoxOptions = webdriver . FirefoxOptions ()
56+ firefox_options . set_preference ( "browser.cache.disk.enable" , False )
57+ firefox_options . set_preference ( "browser.cache.memory.enable" , False )
58+ firefox_options . set_preference ( "browser.cache.offline.enable" , False )
59+ firefox_options . set_preference ( "network.http.use-cache" , False )
60+ if driver_type == "firefox-headless" :
61+ firefox_options . add_argument ( "--headless" )
62+ driver = webdriver .Firefox (options = firefox_options )
6063 else :
6164 msg = f"Unknown driver type: { driver_type } "
6265 raise ValueError (msg )
0 commit comments