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 115 release cycle.
Contributions
With Firefox being an open source project, we are grateful to get contributions from people outside of Mozilla:
- Scott Ly renamed the
hasModule
method tohasModuleClass
for the Remote Agent’sModuleCache
implementation. - Michael S created a shared helper for generating a UUID that is conforming to the WebDriver specifications and is now used across the Remote Protocol code base.
- Victoria Ajala updated all instances of
window.setTimeout()
in our privileged code running in content processes to use the Timer.sys.mjs module instead. This prevents throttling of the timers in case the given tab for automation is in the background.
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. For this release of Firefox no new commands were added, but the following bug fixes are included:
- The payload now always includes stack traces for responses and events without capping it after the first 50 “throw” usages in a realm.
- When using
input.performActions
any ongoing wheel transaction is now reset at the end of the command to not retain state and to not leak into following actions within the same tab. - When using a
pointerMove
action withinput.performActions
an invalid element origin is now correctly raising a “no such error” failure. - A race condition for the initial page load has been fixed that could appear when directly interacting with a newly opened tab or window.
Marionette (WebDriver classic)
No new features have been added for this release of Firefox but the following bug was fixed:
- Both the commands
WebDriver:GetComputedLabel
andWebDriver:GetComputedRole
now correctly wait for the requested Accessible for an element to exist if it just got inserted into the DOM.
Leave a Reply