Releases: mozilla/geckodriver
0.35.0
0.35.0 (2024-08-06, 9f0a0036bea4
)
Known problems
-
Startup hang with Firefox running in a container (e.g. snap, flatpak):
When Firefox is packaged inside a container (like the default Firefox browser
shipped with Ubuntu 22.04), it may see a different filesystem to the host.
This can affect access to the generated profile directory, which may result
in a hang when starting Firefox. Workarounds are listed in the geckodriver
usage documentation.
Added
-
Support for Permissions that allow controlling permission prompts
within the browser. This enables automated tests to handle scenarios
involving permissions likegeolocation
,notifications
, and more. -
The command line flag
--enable-crash-reporter
has been added, to allow
the crash reporter in Firefox to automatically submit crash reports to
Mozilla's crash reporting system if a tab or the browser itself crashes.Note that this feature is disabled by default and should only be used when a
crash situation needs to be investigated. See our documentation for
crash reports in how to share these with us.Implemented by Razvan Cojocaru.
Changed
- The validation of the
unhandledPromptBehavior
capability has been enhanced
to support finer configuration options for the User Prompt Handler which
are particularly used by WebDriver BiDi.
Fixed
-
The Switch To Frame command now correctly raises an "invalid argument"
error when theid
parameter is missing.Implemented by James Hendry.
Removed
-
Removed support for session negotiation using the deprecated
desiredCapabilities
andrequiredCapabilities
.Implemented by James Hendry.
-
Removed support for the
moz:useNonSpecCompliantPointerOrigin
capability,
which has not bee supported since Firefox 116.
0.34.0
0.34.0 (2024-01-03, c44f0d09630a
)
Known problems
-
Startup hang with Firefox running in a container (e.g. snap, flatpak):
When Firefox is packaged inside a container (like the default Firefox browser
shipped with Ubuntu 22.04), it may see a different filesystem to the host.
This can affect access to the generated profile directory, which may result
in a hang when starting Firefox. Workarounds are listed in the geckodriver
usage documentation.
Added
-
Support for Virtual Authenticators
Virtual Authenticators serve as a WebDriver Extension designed to simulate user authentication (WebAuthn) on web applications during automated testing. This functionality encompasses a range of methods, including passwords,
biometrics, and security keys.Geckodriver supports all available commands:
-
Support for using a page range as integer for the Print command.
Implemented by Mitesh Gulecha.
Changed
-
The error handling has undergone refactoring, now utilizing the anyhow and thiserror crates.
Implemented by James Hendry.
-
Specifying
--port=0
as an argument allows geckodriver to dynamically find and use an available free port on the system. -
Updated dependencies (base64, clap, rust-url)
Fixed
-
While searching for a default Firefox installation on the system, geckodriver used the
Contents/MacOS/firefox-bin
executable instead of the binary specified in the app bundle'sinfo.plist
file. This behavior resulted in a malfunction due to a regression in Firefox, particularly affecting the Firefox 121 release. -
The Firefox version check has been extended to enable the execution of distributions with custom prefixes for the application name.
Implemented by Razvan Cojocaru.
Removed
-
Removed the
unknown path
error which is not part of the WebDriver specification.Implemented by James Hendry.
0.33.0
0.33.0 (2023-04-03, a80e5fd61076
)
Known problems
-
Startup hang with Firefox running in a container (e.g. snap, flatpak):
When Firefox is packaged inside a container (like the default Firefox browser
shipped with Ubuntu 22.04), it may see a different filesystem to the host.
This can affect access to the generated profile directory, which may result
in a hang when starting Firefox. Workarounds are listed in the geckodriver
usage documentation. -
Potential hang with
moz:debuggerAddress
capability set totrue
:After enabling the site-isolation feature in Firefox with geckodriver 0.32.1
some WebDriver clients like Selenium that use the Chrome DevTools Protocol (CDP)
by default for logging events could trigger a hang in Firefox's experimental CDP
implementation. The fix for this problem will be shipped with Firefox 112.
Until then the following Firefox preferences should be set:fission.bfcacheInParent: false
fission.webContentIsolationStrategy: 0
Added
-
Support for Get Computed Label and Get Computed Role
The command
Get Computed Label
returns the accessibility label (sometimes
also referred to as Accessible Name), which is a short string that labels the
function of the control (e.g. the string "Comment" or "Sign In" on a button).The command
Get Computed Role
returns the reserved token value (in ARIA,
button, heading, etc.) that describes the type of control or content in the
element.Note that the minimum required Firefox version is 113.0.
-
Support for Find Element From Shadow Root and Find Elements From Shadow Root
The commands allow a lookup of individual elements or collections of elements
within an open or closed Shadow DOM. All location strategies exceptTag name
and
XPath selector
are currently supported.Note that the minimum required Firefox version is 113.0.
Changed
- The Mozilla specific capability
moz:useNonSpecCompliantPointerOrigin
has been
marked as deprecated. Its removal is planned for the Firefox 116.0 release.
0.32.2
0.32.2 (2023-02-08, 602aa16c20d4
)
Known problems
-
Startup hang with Firefox running in a container (e.g. snap, flatpak):
When Firefox is packaged inside a container (like the default Firefox browser
shipped with Ubuntu 22.04), it may see a different filesystem to the host.
This can affect access to the generated profile directory, which may result
in a hang when starting Firefox. Workarounds are listed in the geckodriver
usage documentation. -
Potential hang with
moz:debuggerAddress
capability set totrue
:After enabling the site-isolation feature in Firefox with geckodriver 0.32.1
some WebDriver clients like Selenium that use the Chrome DevTools Protocol (CDP)
by default for logging events could trigger a hang in Firefox's experimental CDP
implementation. The fix for this problem will be shipped with Firefox 112.
Until then the following Firefox preferences should be set:fission.bfcacheInParent: false
fission.webContentIsolationStrategy: 0
Fixed
- With the release of geckodriver 0.32.1 the marionette crate was inappropriately
bumped to a semver incompatible version and causedcargo install geckodriver
to fail for older releases.
0.32.1
0.32.1 (2023-02-02, b7f075124503
)
Known problems
-
Startup hang with Firefox running in a container (e.g. snap, flatpak):
When Firefox is packaged inside a container (like the default Firefox browser
shipped with Ubuntu 22.04), it may see a different filesystem to the host.
This can affect access to the generated profile directory, which may result
in a hang when starting Firefox. Workarounds are listed in the geckodriver
usage documentation. -
Potential hang with
moz:debuggerAddress
capability set totrue
:After enabling the site-isolation feature in Firefox with geckodriver 0.32.1
some WebDriver clients like Selenium that use the Chrome DevTools Protocol (CDP)
by default for logging events could trigger a hang in Firefox's experimental CDP
implementation. The fix for this problem will be shipped with Firefox 112.
Until then the following Firefox preferences should be set:fission.bfcacheInParent: false
fission.webContentIsolationStrategy: 0
Fixed
- When using the boolean capability
moz:debuggerAddress
with a value oftrue
the site-isolation feature in Firefox will no longer accidentally be turned off.
This behavior affected all users of WebDriver clients especially Selenium, which
set this capability by default, and caused Firefox on desktop systems to be
launched in an unsupported mode.
Changed
- Update dependencies
0.32.0
0.32.0 (2022-10-13, 4563dd583110
)
Added
-
Native aarch64 builds of geckodriver for Linux and Windows are now available.
-
Support
wheel
input source for Actions, which is associated with a wheel-type input device. This endpoint is supported by geckodriver when using Firefox version β₯106. -
Support
touch
aspointerType
forpointer
input source for Actions, which is associated with a touch input device. This also includes the addition of all the remaining properties forpointer
input sources as specified by WebDriver. This endpoint is supported by geckodriver when using Firefox version β₯104.
Fixed
-
Using geckodriver to launch Firefox inside a sandbox -- for example a Firefox distribution using Snap or Flatpak -- can fail with a "Profile not found" error if the sandbox restricts Firefox's ability to access the system temporary directory. geckodriver uses the temporary directory to store Firefox profiles created during the run.
This issue can now be worked around by using the
--profile-root
command line option or setting theTMPDIR
environment variable to a location that both Firefox and geckodriver have read/write access to e.g.:% mkdir $HOME/tmp % geckodriver --profile-root=~/tmp
or
% TMPDIR=$HOME/tmp geckodriver
Alternatively, geckodriver may be used with a Firefox install that is not packaged inside a sandbox e.g. from mozilla.org.
-
The sandboxed Firefox binary is now automatically detected when geckodriver is used from within a Snap confinement.
Implemented by Olivier Tilloy.
-
On MacOS the geckodriver binary is now technically both signed and notarized.
Note: The actual validation can only be performed if the machine that starts the geckodriver binary for the very first time is online. You can find more details on how to work around this issue in the macOS notarization section of the documentation.
-
The backup of the original Firefox preferences are now correctly restored on Android when the WebDriver session ends.
Changed
- Update dependencies
0.31.0
0.31.0 (2022-04-11, b617178ef491
)
Known problems
-
Firefox running in Linux Sandbox (e.g. Snap package):
Using geckodriver to launch Firefox inside a sandbox -- for example
a Firefox distribution using Snap or Flatpak -- can fail with a
"Profile not found" error if the sandbox restricts Firefox's ability
to access the system temporary directory. geckodriver uses the
temporary directory to store Firefox profiles created during the run.This issue can be worked around by setting the
TMPDIR
environment
variable to a location that both Firefox and geckodriver have
read/write access to e.g.:% mkdir $HOME/tmp
% TMPDIR=$HOME/tmp geckodriverAlternatively, geckodriver may be used with a Firefox install that
is not packaged inside a sandboxed e.g. from mozilla.org. -
macOS 10.15 (Catalina) and later:
Due to the requirement from Apple that all programs must be
notarized, geckodriver will not work on Catalina if you manually
download it through another notarized program, such as Firefox.Whilst we are working on a repackaging fix for this problem, you can
find more details on how to work around this issue in the macOS
notarization section of the documentation.
Added
-
Users with the Rust toolchain installed can now build and install
geckodriver from crates.io using Cargo:% cargo install geckodriver
-
Support for Get Element Shadow Root
Implemented by David Burns.
The standardised WebDriver Get Element Shadow Root endpoint provides a way
to retrieve the Shadow Root of a given web element. This endpoint is
supported by geckodriver when using Firefox version β₯96. -
Support for additional hosts and origins
Users can now specify a list of allowed
Host
andOrigin
headers for
incoming requests using the--allow-hosts
and--allow-origins
command
line options, respectively. When such a flag is provided, exactly the given
values will be permitted.By default any request with an
Origin
header is rejected, and only requests
containing the bound hostname (specified via--host
), or an IP address,
in the Host header are allowed. These configuration options are
designed to support scenarios where geckodriver is running on a different
network node to the host e.g. some container based setups.
Fixed
-
Geckodriver lets Marionette itself select a system allocated port, so that
it's no longer required to specify a fixed port when using a custom Firefox
profile. This is done by reading theMarionetteActivePort
file of the
Firefox profile in-use. This helps to avoid port collisions when multiple
Firefox instances are run in parallel. -
It's no longer possible to specify both the
androidPackage
andbinary
capabilities togther withinmoz:firefoxOptions
because these capabilites
are mutually exclusive.
0.30.0
0.30.0 (2021-09-16, d372710b98a6
)
Security Fixes
-
Fixed a DNS rebinding issues by enforcing a stricter
Host
header check.Reported by Gabriel Corona.
- Improved
Host
header checks to reject requests not sent to a well-known
local hostname or IP, or the server-specified hostname..
- Improved
Known problems
-
geckodriver restricts connections to local IP addresses. This can interfere
with deployments in which geckodriver is running on a different network node
to the tests e.g. some container or virtual-machine based setups. -
macOS 10.15 (Catalina) and later:
Due to the requirement from Apple that all programs must be
notarized, geckodriver will not work on Catalina if you manually
download it through another notarized program, such as Firefox.Whilst we are working on a repackaging fix for this problem, you can
find more details on how to work around this issue in the macOS
notarization section of the documentation. -
Android:
For releases of Firefox 89.0 and earlier Marionette will only be enabled in
GeckoView based applications when the Firefox preference
devtools.debugger.remote-enabled
is set totrue
via
moz:firefoxOptions
.
Added
-
Support for WebDriver clients to opt in to WebDriver BiDi.
Introduced the new boolean capability
webSocketUrl
that can be used by
WebDriver clients to opt in to a bidirectional connection. A string capability
with the same name will be returned byNewSession
, which contains the
WebSocket URL of the newly created WebDriver session in the form of:
ws://host:port/session/<session id>
.When running on Android a port forward will be set on the host machine,
which is using the exact same port as on the device.All the supported WebDriver BiDi commands depend on the version of
Firefox, and not geckodriver. The first commands will be shipped in
Firefox 94. -
It's now possible to set additional preferences when a custom profile has been
specified. At the end of the session they will be removed.
Fixed
-
Added validation that the
--host
argument resolves to a local IP address. -
Limit the
--foreground
argument of Firefox to MacOS only. -
Increased Marionette handshake timeout to not fail for slow connections.
-
Marionette:Quit
is no longer sent twice during session deletion. -
When deleting a session that was attached to an already running browser
instance, the browser is not getting closed anymore. -
Android
-
Starting Firefox on Android from a Windows based host will now succeed as
we are using the correct Unix path separator to construct on-device paths. -
Arguments as specified in
moz:firefoxOptions
are now used when starting Firefox. -
Port forwards set for Marionette and the WebSocket server (WebDriver BiDi)
are now correctly removed when geckodriver exits. -
The test root folder is now removed when geckodriver exists.
-
0.29.1
0.29.1 (2021-04-09), 970ef713fe58
)
Known problems
-
macOS 10.15 (Catalina):
Due to the requirement from Apple that all programs must be
notarized, geckodriver will not work on Catalina if you manually
download it through another notarized program, such as Firefox.Whilst we are working on a repackaging fix for this problem, you can
find more details on how to work around this issue in the macOS
notarization section of the documentation. -
Android:
Marionette will only be enabled in GeckoView based applications when the
Firefox preferencedevtools.debugger.remote-enabled
is set toTrue
via
moz:firefoxOptions
. This will be fixed in the Firefox 90 release for Android.
Added
-
When testing GeckoView based applications on Android it's now enough to
specify theandroidPackage
capability. The appropriate activity name,
and required intent arguments will now automatically be used for
applications released by Mozilla. -
Native AArch64 (M1) builds of geckodriver for MacOS are now available. These
are currently shipped as Tier2 due to missing test infrastructure. Please let
us know if you experience issues.
Fixed
-
Fixed a stack overflow crash in thread 'webdriver dispatcher' when
handling certain device errors. -
Fixed an application crash due to missing permissions on unrooted devices
by changing the location of the test related files, e.g the profile folder.
Therefore the deprecated --android-storage command line argument
now defaults to thesdcard
option, which changed its location to
$EXTERNAL_STORAGE/Android/data/%androidPackage%/files/
. With this change
proper support for unrooted devices running Android 10+ has been added.Note: Do not use the --android-storage command line argument
anymore unless there is a strong reason. It will be removed in a future
release.
0.29.0
0.29.0 (2021-01-14, cf6956a5ec8e
)
Known problems
-
macOS 10.15 (Catalina):
Due to the requirement from Apple that all programs must be
notarized, geckodriver will not work on Catalina if you manually
download it through another notarized program, such as Firefox.Whilst we are working on a repackaging fix for this problem, you can find
more details on how to work around this issue in the macOS notarization
section of the documentation. -
Android:
Marionette will only be enabled in GeckoView based applications when the
Firefox preferencedevtools.debugger.remote-enabled
is set toTrue
via
moz:firefoxOptions
. This will be fixed in the Firefox 90 release for Android.In some cases geckodriver could crash due to a stack overflow when handling
certain device errors.On unrooted Android 10+ devices startup crashes of the application can be
experienced due to an inappropriate location of test related files, e.g the
profile folder.
Added
-
Introduced the new boolean capability moz:debuggerAddress that can be used
to opt-in to the experimental Chrome DevTools Protocol (CDP) implementation.
A string capability with the same name will be returned by NewSession,
which contains thehost:port
combination of the HTTP server that can be
used to query for websockets of available targets.Note: For this experimental feature the site-isolation support of
Firefox aka Fission will be not available.