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.
With Firefox being an open source project, we are grateful to get contributions from people outside of Mozilla:
- Scott Ly renamed the
hasModuleClassfor the Remote Agent’s
- 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.
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.performActionsany 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
input.performActionsan 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:GetComputedRolenow correctly wait for the requested Accessible for an element to exist if it just got inserted into the DOM.