WebDriver is a remote control interface that enables introspection and control of user agents. As such it can help developers to verify that their websites are working and performing well with all major browsers. The protocol is standardized by the W3C and consists of two separate specifications: WebDriver classic (HTTP) and the new WebDriver BiDi (Bi-Directional).
This newsletter gives an overview of the work we’ve done as part of the Firefox 138 release cycle.
Contributions
Firefox is an open source project, and we are always happy to receive external code contributions to our WebDriver implementation. We want to give special thanks to everyone who filed issues, bugs and submitted patches.
In Firefox 138, several contributors managed to land fixes and improvements in our codebase:
- Liam (ldebeasi) updated the
browsingContext.Info
type to include aclientWindow
property. - Spencer (speneth1) enabled preferences required to pipe logs to stdout.
WebDriver code is written in JavaScript, Python, and Rust so any web developer can contribute! Read how to setup the work environment and check the list of mentored issues for Marionette, or the list of mentored JavaScript bugs for WebDriver BiDi. Join our chatroom if you need any help to get started!
General
New: --remote-enable-system-access
Firefox argument
A new Firefox argument, --remote-enable-system-access
, was added to enable sensitive features, such as interacting with Browsing Contexts in the parent process (e.g., Browser UI) or using privileged APIs in content processes. This will be used for WebDriver BiDi features in the next releases, and can already be used with Marionette (see the Marionette section below).
Bug fixes:
- All remote protocols now enable the preferences required to properly pipe logs to stdout.
WebDriver BiDi
Updated: webExtension.install
command now installs web extensions temporarily
The webExtension.install
command now installs web extensions temporarily by default, allowing it to be used with unsigned extensions – either as an XPI file or as an unpacked folder. A new Firefox-specific parameter, moz:permanent
, has been added to force installation as a regular extension instead.
Updated: browsingContext.setViewport
command now supports userContexts
The browsingContext.setViewport
command now supports a userContexts
parameter, which must be an array of user context (Firefox container) ids. When provided, the viewport configuration will be applied to all Browsing Contexts belonging to those user contexts, as well as any future contexts created within them. This parameter cannot be used together with the existing context
parameter.
Updated: browsingContext.Info
now includes a clientWindow
property
The browsingContext.Info
type now includes a clientWindow
property corresponding to the ID of the window owning the Browsing Context. It is typically returned by browsingContext.getTree
or included in the payload of events such as browsingContext.contextCreated
.
Marionette
Updated: --remote-enable-system-access
required to use chrome
context
Switching to the chrome
(parent process) context with Marionette now requires using the --remote-enable-system-access
command-line flag when starting Firefox.
Leave a Reply