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 149 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 149, multiple WebDriver bugs were fixed by contributors:
- Sameem updated the screenshot implementations for both the WebDriver BiDi and WebDriver classic protocols to correctly return an error when the requested screenshot area exceeds the maximum supported dimensions, rather than silently clipping it.
- Khalid updated asserts for the WebDriver BiDi network wdspec tests to take a single object for the expected events, wdspec tests to use the “iframe” fixture when inlining iframes, and WebDriver BiDi client modules to validate data types in command responses.
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
WebDriver BiDi
- Added support for automatic user prompt handling, which can be configured through capabilities with the
session.newcommand. - Added the
browser.setDownloadBehaviorcommand, which lets clients allow or prohibit the downloads and also set a custom download folder. This behavior can be configured per session or per user contexts. - Added the
script.realmCreatedandscript.realmDestroyedevents for worker realms (for dedicated, shared and service workers). - Fixed an issue where the
browsingContext.userPromptOpenedandbrowsingContext.userPromptClosedevents incorrectly reported the top-level context ID instead of the iframe’s context ID on Android. - Fixed the serialization for DOM nodes to stop exposing User Agent specific shadow roots.
- Updated the logic of applying different settings to new browsing contexts to make sure that in the case of creating a browsing context with the
window.opencommand, emulations, viewport overrides, and preload scripts apply before the command returns.
Marionette
- Improved several WebDriver classic commands to handle
implicitandpageLoadtimeouts in line with the script timeout, allowingnullvalues to disable the timeouts.
Leave a Reply