Unify Selenium and Playwright browser management - #723
Merged
Merged
Conversation
- resolve Playwright Chrome launches through the shared Chrome-for-Testing browser and driver cache - centralize exact-version and Stable/Beta/Dev/Canary normalization with per-channel cache metadata - restrict Playwright browser creation to supported Chrome/Chromium variants and reject system Chrome - reuse named Selenium and Playwright sessions before resolving or launching another browser - persist the paired ChromeDriver path for exact Selenium CDP attachment - share Chromium defaults and Zeuz AI extension arguments across both launchers - use a temporary persistent Playwright context when extensions are enabled - remove the standalone Playwright browser installer and download cache path - add mocked regression coverage for shared binaries, extension loading, session reuse, and driver attachment
- parse Selenium-compatible add argument, add extension, and add encoded extension fields for Chromium launches - cache and unpack CRX, ZIP, extension-ID downloads, and encoded extension payloads for persistent Playwright contexts - support experimental options, Chrome preferences, excluded switches, and mobile emulation - map shared capabilities for insecure certificates, proxy settings, Chrome options, and page-load strategy - support debugger-address CDP attachment without resolving or launching Chrome-for-Testing - preserve Selenium element waits and navigation strategy across Playwright sessions - create and safely clean temporary Chrome preference profiles - correct CRX2 and CRX3 header extraction and handle failed extension downloads - add regression coverage for launch-field compatibility, extension unpacking, profile preferences, session behavior, and debugger attachment
- accept Firefox/FirefoxHeadless, WebKit/Safari, and Edge browser aliases in Playwright actions - restore Playwright-managed Firefox and WebKit installation in the persistent Zeuz browser cache - retain the Playwright system-channel launch path for Microsoft Edge - keep Chrome, Chromium, ChromeHeadless, and Chrome channels on the shared Chrome-for-Testing browser and driver installer - isolate Chromium-only arguments, extensions, preferences, and debugger attachment from Firefox and WebKit launches - mark non-CFT sessions as unsupported for lazy Selenium CDP attachment - run browser installation outside the async event loop and reuse cached binaries under an install lock - add mocked regression coverage for Firefox, WebKit, Safari, and Edge launch routing
- accept Selenium-style Chrome, Chromium, Edge, Firefox, and Safari option rows for the active Playwright browser - map Firefox arguments and preferences from firefox option and moz:firefoxOptions fields - map Edge arguments, preferences, extensions, and ms:edgeOptions fields through persistent Microsoft Edge contexts - pass Safari option arguments to WebKit launches - support Chromium localState profiles and browserVersion capabilities - map WebDriver implicit and page-load timeouts to Playwright context timeouts - handle accept, dismiss, notify variants, and ignore values for unhandled prompts - apply shared Chromium defaults and Zeuz extension arguments to Edge launches - add regression coverage for browser-specific options, vendor capabilities, extensions, preferences, timeouts, prompts, and local state
nasif-z
marked this pull request as ready for review
July 29, 2026 13:14
sazid
approved these changes
Jul 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issues
Changes
Validation