This commit is contained in:
nose
2025-12-17 03:16:41 -08:00
parent 86918f2ae2
commit 5104689a53
10 changed files with 146 additions and 620 deletions

View File

@@ -1,5 +1,6 @@
from __future__ import annotations
import contextlib
from dataclasses import dataclass
from typing import Any, Dict, Iterator, Optional
@@ -70,6 +71,7 @@ class PlaywrightTool:
def _load_defaults(self) -> PlaywrightDefaults:
cfg = self._config
defaults = PlaywrightDefaults()
tool_block = _get_nested(cfg, "tool", "playwright")
if not isinstance(tool_block, dict):
tool_block = {}
@@ -87,14 +89,14 @@ class PlaywrightTool:
val = _get_nested(cfg, "playwright", name)
return fallback if val is None else val
browser = str(_get("browser", PlaywrightDefaults.browser)).strip().lower() or "chromium"
browser = str(_get("browser", defaults.browser)).strip().lower() or "chromium"
if browser not in {"chromium", "firefox", "webkit"}:
browser = "chromium"
headless_raw = _get("headless", PlaywrightDefaults.headless)
headless_raw = _get("headless", defaults.headless)
headless = bool(headless_raw)
ua = str(_get("user_agent", PlaywrightDefaults.user_agent))
ua = str(_get("user_agent", defaults.user_agent))
def _int(name: str, fallback: int) -> int:
raw = _get(name, fallback)
@@ -103,11 +105,11 @@ class PlaywrightTool:
except Exception:
return fallback
vw = _int("viewport_width", PlaywrightDefaults.viewport_width)
vh = _int("viewport_height", PlaywrightDefaults.viewport_height)
nav_timeout = _int("navigation_timeout_ms", PlaywrightDefaults.navigation_timeout_ms)
vw = _int("viewport_width", defaults.viewport_width)
vh = _int("viewport_height", defaults.viewport_height)
nav_timeout = _int("navigation_timeout_ms", defaults.navigation_timeout_ms)
ignore_https = bool(_get("ignore_https_errors", PlaywrightDefaults.ignore_https_errors))
ignore_https = bool(_get("ignore_https_errors", defaults.ignore_https_errors))
return PlaywrightDefaults(
browser=browser,
@@ -128,6 +130,7 @@ class PlaywrightTool:
f"detail: {detail}"
)
@contextlib.contextmanager
def open_page(
self,
*,