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 116 release cycle.
Contributions
With Firefox being an open source project, we are grateful to get contributions from people outside of Mozilla:
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, and geckodriver.
WebDriver BiDi
By enhancing the implementation of the WebDriver BiDi protocol we can offer more features to our users.
New command: session.end
With the support of the session.end
command, users can terminate the automation session. This was previously only possible for sessions using both WebDriver Classic and WebDriver BiDi. It is now possible also for WebDriver BiDi-only sessions.
Capability matching for session.new
Capability matching is a feature already supported in WebDriver Classic. It allows to define expectations about the target browser, such as browser name, platform name, … But it is also used to configure the session to some extent. For instance to specify whether insecure certificates should be accepted.
When using the session.new
command, users should provide a capabilities
parameter, which can contain the alwaysMatch
and the firstMatch
properties. To learn more about those properties and capability matching in general, the WebDriver Capabilities page on MDN is a good reference.
Note that WebDriver BiDi sessions do not support all the capabilities from WebDriver classic, because some of them are irrelevant for WebDriver BiDi. The following capabilities are not supported for a WebDriver BiDi only session: pageLoadStrategy
, timeouts
, strictFileInteractability
, unhandledPromptBehavior
, webSocketUrl
, moz:webdriverClick
, moz:debuggerAddress
, moz:firefoxOptions
.
On top of this, the session.new
result will also contain a capabilities
property with the matched capabilities.
Bug fixes
The release 116 also comes with a few bug fixes, including:
- Shadow roots are now correctly serialized when they are the root of a returned value.
- The
network
event time origin information was renamed fromoriginTime
totimeOrigin
. - The
network
event network.responseCompleted is now correctly emitted for navigation requests involving a redirect.
Marionette (WebDriver classic)
Removing the moz:useNonSpecCompliantPointerOrigin capability
A deprecation warning for this capability was added since geckodriver 0.33.0. Support for this capability has now been removed in Firefox 116. Users who still need this feature can still use the Firefox 115 ESR release as long as it is supported.
Bug fixes
A couple of bugs have been fixed for Marionette and WebDriver Classic:
- A regression in Marionette has been fixed that prevented us from differentiating stale elements (DOM elements that have been seen before on the page) from unknown elements for a given browsing context.
- Creating a new session should now properly wait for the initial context to be loaded.
Leave a Reply