Releases: mozilla/geckodriver
0.32.2
0.32.1
0.32.1 (2023-02-02, b7f075124503
)
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.
0.28.0
0.28.0 (2020-11-03, c00d2b6acd3f
)
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
- The command line flag
--android-storage
has been added, to allow geckodriver to also control Firefox on root-less Android devices. See the documentation for available values.
Fixed
-
Firefox can be started again via a shell script that is located outside of the Firefox directory on Linux.
-
If Firefox cannot be started by geckodriver the real underlying error message is now being reported.
-
Version numbers for minor and extended support releases of Firefox are now parsed correctly.
Removed
- Since Firefox 72 extension commands for finding an element’s anonymous children and querying its attributes are no longer needed, and have been removed.
0.27.0
0.27.0 (2020-07-27, 7b8c4f32cdde
)
Security Fixes
-
-
Added additional checks on the
Content-Type
header forPOST
requests to disallowapplication/x-www-form-urlencoded
,multipart/form-data
andtext/plain
. -
Added checking of the
Origin
header forPOST
requests. -
The version number of Firefox is now checked when establishing a session.
-
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.
Added
-
To set environment variables for the launched Firefox for Android, it is now possible to add an
env
object onmoz:firefoxOptions
(note: this is not supported for Firefox Desktop) -
Support for print-to-PDF
The newly standardised WebDriver [Print] endpoint provides a way to render pages to a paginated PDF representation. This endpoint is supported by geckodriver when using Firefox version ≥78.
-
Support for same-site cookies
Cookies can now be set with a
same-site
parameter, and the value of that parameter will be returned when cookies are retrieved. Requires Firefox version ≥79. Thanks to Peter Major for the patch.
Fixed
-
Android:
-
Firefox running on Android devices can now be controlled from a Windows host.
-
Setups with multiple connected Android devices are now supported.
-
Improved cleanup of configuration files. This prevents crashes if the application is started manually after launching it through geckodriver.
-
-
Windows and Linux binaries are again statically linked.
v0.26.0
Built from e9783a644016
.
Note that with this release the minimum recommended Firefox version
has changed to Firefox ≥60.
Known problems
-
macOS 10.15 (Catalina):
Due to the recent 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. -
Windows:
You must still have the Microsoft Visual Studio redistributable
runtime installed on your system for the binary to run. This
is a known bug which we weren't able fix for this release. -
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.
Added
-
Support for Firefox on Android
Starting with this release geckodriver is able to connect to
Firefox on Android systems, and to control packages based on
GeckoView.Support for Android works by the geckodriver process running on
a host system and Firefox running within either an emulator or
on a physical device connected to the host system. This requires
you to first enable remote debugging on the Android device.The WebDriver client must set the
platformName
capability to
"android
" and theandroidPackage
capability within
moz:firefoxOptions
to the Android package name of the Firefox
application.The full list of new capabilities specific to Android, instructions
how to use them, and examples can be found in themoz:firefoxOptions
documentation on MDN.When the session is created, the
platformName
capability will
return "android
" instead of reporting the platform of the host
system.
Changed
-
Continued Marionette refactoring changes
0.25.0 came with a series of internal changes for how geckodriver
communicates with Firefox over the Marionette protocol. This
release contains the second half of the refactoring work.
Fixed
-
Connection attempts to Firefox made more reliable
geckodriver now waits for the Marionette handshake before assuming
the session has been established. This should improve reliability
in creating new WebDriver sessions. -
Corrected error codes used during session creation
When a new session was being configured with invalid input data,
the error codes returned was not always consistent. Attempting
to start a session with a malformed capabilities configuration
will now return the invalid argument error consistently.