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 150 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 150, Khalid AlHaddad contributed several improvements:
- Added a new test to check that viewport dimentions are correct immediately after
browsingContext.createresolves. - And more test improvements:
- Asynchronous tests now consistently use
pytest asynciomarkers. - Introduced a new fixture to install WebExtensions and automatically uninstall them at the end of the test.
- Updated the helper for waiting on BiDi events to use a timeout multiplier, and migrated it to a fixture.
- Asynchronous tests now consistently use
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
- Fixed an issue where pending downloads could block browser shutdown due to a confirmation prompt. The prompt is now dismissed automatically.
WebDriver BiDi
- Added the
emulation.setNetworkConditionscommand, which supports thetype: offlineat the moment. Using this, you can emulate offline mode either on specific browsing contexts, on user contexts (a.k.a. containers) or globally. - Improved handling of non utf-8 header values across
networkmodule commands and events. These are now correctly serialized asBytesValue. - Fixed an issue where download events triggered by responses with a “Content-Disposition” header were missing the
navigationproperty when initiated from a link withtarget="_blank". - Updated the
log.entryAddedevent so it is only emitted for console API calls that produce a visible output in developer tools (see also the console specification: using the printer). Calls such asconsole.clearorconsole.timeno longer trigger an event. - Fixed a race condition in
browsingContext.setViewportwhich could cause timeouts when multiple contexts were created in parallel. - Improved
browsingContext.locateNodesto allow retrieval of the HTML element (documentElement) of a page when using thecsslocator.
Marionette
- Fixed the
WebDriver:getShadowRootcommand to no longer return user-agent shadow roots.
Leave a Reply