Browser internals

  • CDPselenium_cdp / playwright_cdp raw passthroughs.

  • StoragelocalStorage / sessionStorage / IndexedDB get / set / clear via injected JS.

  • Service worker / cache — unregister / clear caches / Network.setBypassServiceWorker.

  • Console + network capture — Playwright event listeners with assertions (no console errors / no 5xx).

  • Shadow DOM — selector chains pierce nested shadow roots.

  • iframes — switch chains and Playwright frame-locator chains.

  • File upload / download — element send_keys / set_input_files for upload; wait_for_download polls a directory for completed files.

  • Browser extension loaders — Chrome add_extension / Playwright --load-extension.

Browser & locale

  • device_emulationavailable_presets / playwright_kwargs("iPhone 15 Pro") / apply_to_chrome_options(opts, "Desktop 1080p") / cdp_emulation_command(name).

  • geo_locale.GeoOverride — yields both cdp_payloads(override) and playwright_context_kwargs(override).

  • multi_tab.TabChoreographer — track tabs by alias; register_current / open_new / switch_to / with_tab / close.

  • webauthn.enable_virtual_authenticator(driver) — CDP WebAuthn.addVirtualAuthenticator for passkey simulation.

Storybook / shadow DOM

  • storybook.discover_stories(index_or_path) reads Storybook 7+ index.json; plan_actions_for_stories(stories, base_url, run_a11y=True, capture_screenshot=True, extra_per_story=...) builds a flat action plan that visits each story under iframe.html?id=... and runs axe / screenshot.

  • storybook.visual_snapshots.capture_story_snapshots(stories, base_url, take_screenshot, navigate, baseline_dir=...) — per-story PNG capture with byte-level baseline comparison.

  • dom_traversal.shadow_pierce.find_first(driver, css_selector) / find_all walk open shadow roots recursively. execute_script for Selenium, evaluate for Playwright; assert_pierced_visible raises if the selector doesn’t match anywhere.

CDP tap / cross-browser / state diff

  • cdp_tap.CdpRecorder(output_path).attach(driver) — wraps execute_cdp_cmd so every call is appended to an ndjson log; CdpReplayer(load_recording(path)) plays the same sequence back.

  • cross_browser.diff_runs([chromium_run, firefox_run, webkit_run]) — buckets findings into major / minor (5xx → major, screenshot hash → minor); assert_parity(report, only_major=True) is the CI gate.

  • state_diff.capture_state(driver) snapshots cookies + localStorage + sessionStorage; diff_states(before, after) reports added / removed / changed keys per section.