Source code for jupyterlite_pyodide_lock_webdriver.browsers

"""Browser details for ``jupyterlite-pyodide-lock-webdriver``."""
# Copyright (c) jupyterlite-pyodide-lock contributors.
# Distributed under the terms of the BSD-3-Clause License.

from typing import TypedDict

from selenium.webdriver import (
    Chrome,
    ChromeOptions,
    ChromeService,
    Firefox,
    FirefoxOptions,
    FirefoxService,
)
from selenium.webdriver.common.options import ArgOptions
from selenium.webdriver.common.service import Service
from selenium.webdriver.remote.webdriver import WebDriver

from jupyterlite_pyodide_lock.constants import (
    BROWSER_BIN,
    CHROME,
    CHROMIUM,
    FIREFOX,
)

__all__ = ["ArgOptions", "Browser", "Service", "WebDriver"]


[docs] class Browser(TypedDict, total=False): """Common values for selenium configuration.""" webdriver_class: type[WebDriver] options_class: type[ArgOptions] service_class: type[Service] log_output: str webdriver_path: str browser_binary: str service_args: list[str]
#: known testable open source browsers BROWSERS: dict[str, Browser] = { FIREFOX: Browser( webdriver_class=Firefox, options_class=FirefoxOptions, service_class=FirefoxService, browser_binary=BROWSER_BIN[FIREFOX], webdriver_path="geckodriver", log_output="geckodriver.log", ), CHROMIUM: Browser( browser_binary=BROWSER_BIN[CHROMIUM], webdriver_class=Chrome, options_class=ChromeOptions, service_class=ChromeService, log_output="chromedriver.log", webdriver_path="chromedriver", ), } #: known testable white-label derivatives BROWSERS[CHROME] = Browser(**BROWSERS[CHROMIUM]) BROWSERS[CHROME]["browser_binary"] = BROWSER_BIN[CHROME]