tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

CHANGES.md (72493B)


<!-- markdownlint-disable MD024 -->

Change log

All notable changes to this program are documented in this file.

0.36.0 (2025-02-25, `a3d508507022`)

Known problems

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].

Since their introduction in geckodriver 0.34.0, several Virtual Authenticator endpoints have been reported as non-functional or behaving unexpectedly. We recommend avoiding the use of these commands until the known issues have been resolved.

Added

Implemented by [Gatlin Newhouse].

to an Android device.

to allow the installation of a WebExtension that is enabled in Private Browsing mode.

be required for future versions of Firefox (potentially starting with 138.0) to allow testing in the chrome context.

Firefox crashes. If the MINIDUMP_SAVE_PATH environment variable is set to an existing folder, crash dumps will be saved accordingly. For mobile devices, the generated minidump files will be automatically transferred to the host machine.

For more details see the documentation of how to handle [crash reports].

Changed

from integer to fractional numbers to ensure a more precise input control.

Note: Support for fractional values is available starting with Firefox 137. For older versions, clients or tests must explicitly pass integer values for both fields.

prevent crash reports from being submitted to Socorro. This argument will be completely removed in the next version.

Instead, use the MINIDUMP_SAVE_PATH environment variable to get minidump files saved to a specified location.

Fixed

geckodriver 0.34.0 but mistakenly registered under /sessions/ instead of /session/, causing them to be non-functional.

Removed

0.35.0 (2024-08-06, `9f0a0036bea4`)

Known problems

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].

Since their introduction in geckodriver 0.34.0, several Virtual Authenticator endpoints have been reported as non-functional or behaving unexpectedly. We recommend avoiding the use of these commands until the known issues have been resolved.

Added

within the browser. This enables automated tests to handle scenarios involving permissions like geolocation, notifications, and more.

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

to support finer configuration options for the [User Prompt Handler] which are particularly used by [WebDriver BiDi].

Fixed

error when the id parameter is missing.

Implemented by [James Hendry].

Removed

desiredCapabilities and requiredCapabilities.

Implemented by [James Hendry].

which has not been supported since Firefox 116.

0.34.0 (2024-01-03, `c44f0d09630a`)

Known problems

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].

Since their introduction in geckodriver 0.34.0, several Virtual Authenticator endpoints have been reported as non-functional or behaving unexpectedly. We recommend avoiding the use of these commands until the known issues have been resolved.

Added

[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:

- [Add Virtual Authenticator] - [Remove Virtual Authenticator] - [Add Credential] - [Get Credentials] - [Remove Credential] - [Remove All Credentials] - [Set User Verified]

Implemented by [Mitesh Gulecha].

Changed

anyhow and thiserror crates.

Implemented by [James Hendry].

and use an available free port on the system.

Fixed

used the Contents/MacOS/firefox-bin executable instead of the binary specified in the app bundle's info.plist file. This behavior resulted in a malfunction due to a regression in Firefox, particularly affecting the Firefox 121 release.

distributions with custom prefixes for the application name.

Implemented by [Razvan Cojocaru].

Removed

Implemented by [James Hendry].

0.33.0 (2023-04-03, `a80e5fd61076`)

Known problems

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].

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

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.

The commands allow a lookup of individual elements or collections of elements within an open or closed Shadow DOM. All location strategies except Tag name and XPath selector are currently supported.

Note that the minimum required Firefox version is 113.0.

Changed

marked as deprecated. Its removal is planned for the Firefox 116.0 release.

0.32.2 (2023-02-08, `602aa16c20d4`)

Known problems

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].

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

bumped to a semver incompatible version and caused cargo install geckodriver to fail for older releases.

0.32.1 (2023-02-02, `b7f075124503`)

Known problems

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].

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

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.

0.32.0 (2022-10-13, `4563dd583110`)

Added

wheel-type input device. This endpoint is supported by geckodriver when using Firefox version ≥106.

which is associated with a touch input device. This also includes the addition of all the remaining properties for pointer input sources as specified by WebDriver. This endpoint is supported by geckodriver when using Firefox version ≥104.

Fixed

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 the TMPDIR environment variable to a location that both Firefox and geckodriver have read/write access to e.g.:

`bash % mkdir $HOME/tmp % geckodriver --profile-root=~/tmp `

or

`bash % 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].

is used from within a Snap confinement.

Implemented by [Olivier Tilloy].

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.

on Android when the WebDriver session ends.

Changed

0.31.0 (2022-04-11, `b617178ef491`)

Known problems

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.

As workaround geckodriver may be used with a Firefox install that is not packaged inside a sandbox e.g. from [mozilla.org].

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

geckodriver from [crates.io] using Cargo:

% cargo install geckodriver

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.

Users can now specify a list of allowed Host and Origin 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

it's no longer required to specify a fixed port when using a custom Firefox profile. This is done by reading the MarionetteActivePort file of the Firefox profile in-use. This helps to avoid port collisions when multiple Firefox instances are run in parallel.

capabilities togther within [moz:firefoxOptions] because these capabilites are mutually exclusive.

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.

Known problems

with deployments in which geckodriver is running on a different network node to the tests e.g. some container or virtual-machine based setups.

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.

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 to true via [moz:firefoxOptions].

Added

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 by [NewSession], 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.

specified. At the end of the session they will be removed.

Fixed

instance, the browser is not getting closed anymore.

- 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 (2021-04-09, `970ef713fe58`)

Known problems

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.

Marionette will only be enabled in GeckoView based applications when the Firefox preference devtools.debugger.remote-enabled is set to true via [moz:firefoxOptions]. This will be fixed in the Firefox 90 release for Android.

Added

specify the androidPackage capability. The appropriate activity name, and required intent arguments will now automatically be used for applications released by Mozilla.

are currently shipped as Tier2 due to missing test infrastructure. Please let us know if you experience issues.

Fixed

handling certain device errors.

by changing the location of the test related files, e.g the profile folder. Therefore the deprecated &#x2D;&#x2D;android-storage command line argument now defaults to the sdcard 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 &#x2D;&#x2D;android-storage command line argument anymore unless there is a strong reason. It will be removed in a future release.

0.29.0 (2021-01-14, `cf6956a5ec8e`)

Known problems

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.

Marionette will only be enabled in GeckoView based applications when the Firefox preference devtools.debugger.remote-enabled is set to true via [moz:firefoxOptions]. This will be fixed in one of the upcoming Firefox for Android releases.

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

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 the host: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 (2020-11-03, `c00d2b6acd3f`)

Known problems

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.

Marionette will only be enabled in GeckoView based applications when the Firefox preference devtools.debugger.remote-enabled is set to true via [moz:firefoxOptions]. This will be fixed in one of the upcoming Firefox for Android releases.

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

to also control Firefox on root-less Android devices. See the [documentation][Flags] for available values.

Fixed

Firefox directory on Linux.

now being reported.

Removed

and querying its attributes are no longer needed, and have been removed.

0.27.0 (2020-07-27, `7b8c4f32cdde`)

Security Fixes

Improved validation of incoming requests to prevent remote requests being treated as local.

Reported by Gabriel Corona.

- Added additional checks on the Content-Type header for POST requests to disallow application/x-www-form-urlencoded, multipart/form-data and text/plain.

- Added checking of the Origin header for POST requests.

- The version number of Firefox is now checked when establishing a session.

Known problems

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.

Marionette will only be enabled in GeckoView based applications when the Firefox preference devtools.debugger.remote-enabled is set to true via [moz:firefoxOptions]. This will be fixed in one of the upcoming Firefox for Android releases.

In some cases geckodriver could crash due to a stack overflow when handling certain device errors.

Added

it is now possible to add an env object on [moz:firefoxOptions] (note: this is not supported for Firefox Desktop)

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.

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

- 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.

0.26.0 (2019-10-12, `e9783a644016'`)

Note that with this release the minimum recommended Firefox version has changed to Firefox ≥60.

Known problems

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.

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.

Marionette will only be enabled in GeckoView based applications when the Firefox preference devtools.debugger.remote-enabled is set to true via [moz:firefoxOptions]. This will be fixed in one of the upcoming Firefox for Android releases.

In some cases geckodriver could crash due to a stack overflow when handling certain device errors.

Added

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 the androidPackage 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 the [moz: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

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

geckodriver now waits for the Marionette handshake before assuming the session has been established. This should improve reliability in creating new WebDriver sessions.

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.

0.25.0 (2019-09-09, `bdb64cf16b68`)

Note to Windows users! With this release you must have the [Microsoft Visual Studio redistributable runtime] installed on your system for the binary to run. This is a known bug with this particular release that we intend to release a fix for soon.

Added

geckodriver now responds correctly to HTTP HEAD requests, which can be used for probing whether it supports a particular API.

Thanks to [Bastien Orivel] for this patch.

If the location of the Firefox binary is not given, geckodriver will from now also look for the location of Firefox Nightly in the default locations. The ordered list of search paths on macOS is as follows:

1. /Applications/Firefox.app/Contents/MacOS/firefox-bin 2. $HOME/Applications/Firefox.app/Contents/MacOS/firefox-bin 3. /Applications/Firefox Nightly.app/Contents/MacOS/firefox-bin 4. $HOME/Applications/Firefox Nightly.app/Contents/MacOS/firefox-bin

Thanks to [Kriti Singh] for this patch.

It is now possible to pass an application bundle path, such as /Applications/Firefox.app as argument to the binary field in [moz:firefoxOptions]. This will be automatically resolved to the absolute path of the binary when Firefox is started.

Thanks to [Nupur Baghel] for this patch.

With this release of geckodriver, executables for macOS and Windows are signed using the same certificate key as Firefox. This should help in cases where geckodriver previously got misidentified as a virus by antivirus software.

Removed

The legacy way of serialising web elements, using {"ELEMENT": <UUID>}, has been removed in this release. This may break older Selenium clients and clients which are otherwise not compatible with the WebDriver standard.

Thanks to [Shivam Singhal] for this patch.

--webdriver-port <PORT> was an undocumented alias for --port, initially used for backwards compatibility with clients prior to Selenium 3.0.0.

Changed

Much of geckodriver’s internal plumbing for serialising WebDriver requests to Marionette messages has been refactored to decrease the amount of manual lifting.

This work should have no visible side-effects for users.

Thanks to [Nupur Baghel] for working on this throughout her Outreachy internship at Mozilla.

Fixed

By mistake, earlier versions of geckodriver failed to print incorrect flag use. With this release problems are again written to stderr.

geckodriver would previously only search the system path for the firefox binary on Linux. Now it supports different BSD flavours as well.

0.24.0 (2019-01-28, `917474f3473e`)

Added

The new capability indicates if strict interactability checks should be applied to <input type=file> elements. As strict interactability checks are off by default, there is a change in behaviour when using [Element Send Keys] with hidden file upload controls.

for taking full document screenshots, thanks to Greg Fraley.

particular interface/IP layer on the system.

for the [New Window] command to create a new top-level browsing context, which can be either a window or a tab. The first version of Firefox supporting this command is Firefox 66.0.

true logging of console API calls like info(), warn(), and error() can be routed to stdout.

to prevent Firefox >= 65 from automatically updating whilst under automation.

Removed

We announced back in September 2018 that we would stop building for ARM, but builds can be self-serviced by building from source.

To cross-compile from another host system, you can use this command:

% cargo build --target armv7-unknown-linux-gnueabihf

Changed

Through a series of changes to the WebDriver specification, geckodriver is now aligned with chromedriver’s behaviour that allows interaction with hidden <input type=file> elements.

This allows WebDriver to be used with various popular web frameworks that—through indirection—hides the file upload control and invokes it through other means.

command, thanks to reimu.

Fixed

an HTTP/1.1 compatibility bug.

fields for the [Set Timeouts] command.

the viewport, but the requested element.

0.23.0 (2018-10-03)

This release contains a number of fixes for regressions introduced in 0.22.0, where we shipped a significant refactoring to the way geckodriver internally dealt with JSON serialisation.

Removed

was removed, thanks to Kerem Kat.

Changed

Fixed

recognised on session creation

A regression in 0.22.0 caused geckodriver to recognise desired and required instead of the correct desiredCapabilities and requiredCapabilities. This will have caused significant problems for users who relied on this legacy Selenium-style session creation pattern.

Do however note that support for Selenium-styled new session requests is temporary and that this will be removed sometime before the 1.0 release.

A regression in 0.22.0 caused the pause action primitive to require a duration field. This has now been fixed so that pauses in action chains can be achieved with the default duration.

A regression in 0.22.0 caused the log level to be improperly formatted when using Firefox pre-releases. This is now fixed so that the requested log level is correctly interpreted by Marionette.

A regression in 0.22.0 caused the temporary field for POST /session/{session id}/moz/addon/install to be mandatory. This has now been fixed so that an addon is installed permanently by default.

The SHA1 used in --version when building geckodriver from a git repository is now limited to 12 characters, as it is when building from an hg checkout. This ensures reproducible builds.

0.22.0 (2018-09-15)

This release marks an important milestone on the path towards a stable release of geckodriver. Large portions of geckodriver and the [webdriver] library it is based on has been refactored to accommodate using [serde] for JSON serialization.

We have also made great strides to improving [WebDriver conformance], to the extent that geckodriver is now almost entirely conforming to the standard.

Added

identifiers from Firefox.

from WebDriver.

This capability informs whether the attached browser supports manipulating the window dimensions and position.

upon session creation.

Changed

rustc_serialize to [serde].

errors has changed from Request Timeout (408) to Internal Server Error (500) in order to not break HTTP/1.1 Keep-Alive support, as HTTP clients interpret the old status code to mean they should duplicate the request.

been increased to 90 seconds.

active session.

is given invalid parameters.

hardened by killing the Firefox process if it fails.

of waiting forever.

version 0.12, thanks to [Bastien Orivel].

the log level is not configured until a session is created.

The version number is available through --version, and now also through a new moz:geckodriverVersion field in the matched capabilities.

Fixed

by allowing floats as input.

is now well-formatted when built from an hg repository, thanks to [Jeremy Lempereur].

<https://firefox-source-docs.mozilla.org/testing/geckodriver/>.

0.21.0 (2018-06-15)

Note that with this release of geckodriver the minimum recommended Firefox and Selenium versions have changed:

Added

notify, dismiss and notify, and ignore` options.

Note that the unhandled prompt handler is not fully supported in Firefox at the time of writing.

Changed

flags if they have not already been specified by the user in [moz:firefoxOptions].

-foreground will ensure the application window gets focus when Firefox is started, and -no-remote will prevent remote commands to this instance of Firefox and also ensure we always start a new instance.

return {value: null} instead of an empty dictionary.

All Marionette commands changed to make use of the WebDriver: prefixes introduced with Firefox 56.

Already deprecated preferences in Firefox versions earlier than 57 got removed.

Fixed

On certain system configurations, where localhost resolves to an IPv6 address, geckodriver would attempt to connect to Firefox on the wrong IP stack, causing the connection attempt to time out after 60 seconds. We now ensure that geckodriver uses IPv4 consistently to both connect to Firefox and for allocating a free port.

found under a firefox or firefox-bin directory, depending on the system, because it thought the parent directory was the executable.

non-executable files as valid binaries.

the redirections from taking effect.

0.20.1 (2018-04-06)

Fixed

With the change to allow Firefox enough time to shut down in 0.20.0, geckodriver started unconditionally killing the process to reap its exit status. This caused geckodriver to inaccurately report a successful Firefox shutdown as a failure.

The regression should not have caused any functional problems, but the termination cause and the exit status are now reported correctly.

0.20.0 (2018-03-08)

Added

launches. This is useful for debugging Marionette internals.

moz:useNonSpecCompliantPointerOrigin to disable the WebDriver conforming behavior of calculating the Pointer Origin.

Changed

from 400 (Bad Request) to 404 (Not Found).

Marionette stacktraces.

Fixed

enough time for the Firefox shutdown hang monitor to kick in.

Firefox has an integrated background monitor that observes long-running threads during shutdown. These threads will be killed after 63 seconds in the event of a hang. To allow Firefox to shut down these threads on its own, geckodriver has to wait that time and some additional seconds.

to actions.

Input to the value field of the keyDown and keyUp action primitives used to only accept single characters, which means geckodriver would error when a valid grapheme cluster was sent in, for example with the tamil nadu character U+0BA8 U+0BBF.

Thanks to Greg Fraley for fixing this bug.

0.19.1 (2017-10-30)

Changed

trigger network connections

Fixed

Removed

configuration keys because neither were picked up or recognised

0.19.0 (2017-09-16)

Note that with geckodriver 0.19.0 the following versions are recommended:

Added

- POST /session/{session id}/window/minimize for the [Minimize Window] command

shield studies which could unexpectedly change the behavior of Firefox

enable the WebDriver conforming behavior of the [Element Click] command

in case of crashes

object creation in content processes

Changed

closed unexpectetly

socksProxyPort because ports have to be set for ftpProxy, httpProxy, sslProxy, and socksProxy using ":<PORT>"

with recent WebDriver specification changes

integers in accordance with the CSS and WebDriver specifications, and to be more liberal with the input types

fails, the process is closed immediately now

path, containing an addon as a Base64 string (fixed by [Jason Juang])

Removed

- browser.safebrowsing.enabled - browser.safebrowsing.forbiddenURIs.enabled - marionette.defaultPrefs.port - marionette.logging

0.18.0 (2017-07-10)

Changed

fields

a single cookie, as opposed to an array of a single cookie

to pass ["-profile", "/path/to/profile"] in the args array on [moz:firefoxOptions]

commit used to build geckodriver

Fixed

command, which makes geckodriver compatible with Firefox 56 and greater

0.17.0 (2017-06-09)

Added

- POST /session/{session id}/window/fullscreen to invoke the window manager-specific full screen operation - POST /session/{session id}/moz/addon/install to install an extension (Gecko only) - POST /session/{session id}/moz/addon/uninstall to uninstall an extension (Gecko only)

Changed

preference will cause Firefox to not prompt when navigating to a website with a username or password in the URL

to allow overriding of preferences via capabilities if those have been already set in the profile

normalized path of the Firefox binary for version checks but not to actually start the browser, which broke several components in Firefox on Windows

Fixed

when it is done

Windows command prompt

is no current session

0.16.1 (2017-04-26)

Fixed

to look for the application .ini file (fixes [Selenium #3884](https://github.com/SeleniumHQ/selenium/issues/3884))

#613)

0.16.0 (2017-04-21)

Note that geckodriver v0.16.0 is only compatible with Selenium 3.4 and greater.

Added

desiredCapabilities/requiredCapabilities negotiation as fallback

- GET /session/{session id}/window/rect for [Get Window Rect] - POST /session/{session id}/window/rect for [Set Window Rect]

- Introduces new errors [ElementClickIntercepted], [ElementNotInteractable], [InvalidCoordinates], [NoSuchCookie], [UnableToCaptureScreen], and [UnknownCommand] - Removes ElementNotVisible and InvalidElementCoordinates errors

Removed

- GET /session/{session id}/alert_text - POST /session/{session id}/alert_text - POST /session/{session id}/accept_alert - POST /session/{session id}/dismiss_alert - GET /session/{session id}/window_handle - DELETE /session/{session id}/window_handle - POST /session/{session id}/execute_async - POST /session/{session id}/execute

Changed

[Send Alert Text] commands, has been updated to take a string text field

wrapped in a value field, like other responses

default, which should help mitigate the “Plugin Container for Firefox has stopped working” problems [many users were reporting](https://github.com/mozilla/geckodriver/issues/225) when deleting a session

set of default preferences defined by geckodriver (fixed by Marc Fisher) - The exceptions are the marionette.port and marionette.log.level preferences and their fallbacks, which are set unconditionally and cannot be overridden

Fixed

sometimes occurred when trying to write an empty profile by @kirhgoph

configuration object (fixed by [Jason Juang])

Juang])

52 and earlier (fixed by [Jason Juang])

negative integers (fixed by [Jason Juang])

0.15.0 (2017-03-08)

Added

Changed

WebDriver specification; this may likely require you to update your client library

lets pointer actions originate within the context of the viewport, the pointer’s current position, or from an element

disabled due to bug 1333736 in Marionette

Fixed

the WebDriver specification

0.14.0 (2017-01-31)

Changed

window is closed

Fixed

the Rust stack

Cache-Control thanks to [Mike Pennisi]

0.13.0 (2017-01-06)

Changed

TLS certificate, an [insecure certificate] error will be returned

firefox-bin on the system path (PATH environmental variable) before looking in the applications folder

cater for maximised window positioning on Windows

Fixed

characters instead of bytes

0.12.0 (2017-01-03)

Added

implemented in Marionette, and will return an unsupported operation error until it is

yet fully implemented in Marionette

Changed

preferences](https://github.com/mozilla/geckodriver/commit/2bfdc3ec8151c427a6a75a6ba3ad203459540495) with those used in Mozilla automation

changed to INFO-level

is unavailable

Fixed

inconsistent output when failing to bind to port

0.11.1 (2016-10-10)

Fixed

0.11.0 (2016-10-10)

Added

binaries

children and querying its attributes; accessible through the /session/{sessionId}/moz/xbl/{elementId}/anonymous_children to return all anonymous children and /session/{sessionId}/moz/xbl/{elementId}/anonymous_by_attribute to return an anonymous element by a name and attribute query

session:

- The binary, args, and profile entries on this dictionary is equivalent to the old firefox_binary, firefox_args, and firefox_profile capabilities, which have now all been removed

- The log capability takes a dictionary such as {log: "trace"} to enable trace level verbosity in Gecko

- The prefs capability lets you define Firefox preferences through capabilities

--port

Changed

removed in favour of the [moz:firefoxOptions] dictionary detailed above and in the [README]

Firefox default multiprocessing settings (override using preferences)

temporarily because of [trouble linking Musl binaries](https://github.com/rust-lang/rust/issues/34978)

causing the RUST_LOG environment variable to no longer have any affect

Fixed

replacement of the argument parsing library in the previous release

(startup.homepage_welcome_url.additional) so that officially branded Firefox builds do not start with two open tabs in fresh profiles

which means a tab with an upgrade notice is not displayed when launching a new Firefox version

0.10.0 (2016-08-02)

Changed

to disable it and removed --e10s flag

Fixed

0.9.0 (2016-06-30)

Added

Firefox to use

the repository

Changed

0.8.0 (2016-06-07)

Added

firefox_args capability

Changed

Fixed

0.7.1 (2016-04-27)

Added

Krishna]

Changed

Fixed

0.6.2 (2016-01-20)

Added

Changed

0.6.0 (2016-01-12)

Added

Changed

0.5.0 (2015-12-10)

Changed

0.4.2 (2015-10-02)

Changed

0.4.1 (2015-10-02)

Changed

0.4.0 (2015-09-28)

Added

contexts

Changed

returns

Fixed

0.3.0 (2015-08-17)

Added

0.2.0 (2015-05-20)

Added

WebDriver tests

Changed

the session

Fixed

0.1.0 (2015-04-09)

Added

Changed

Fixed

to WebDriver

[README]: https://github.com/mozilla/geckodriver/blob/master/README.md [crash reports]: <https://firefox-source-docs.mozilla.org/testing/geckodriver/CrashReports.html> [usage documentation]: <https://firefox-source-docs.mozilla.org/testing/geckodriver/Usage.html#running-firefox-in-a-container-based-package> [Browser Toolbox]: https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox [WebDriver conformance]: https://wpt.fyi/results/webdriver/tests?label=experimental [webSocketUrl]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/webSocketUrl [moz:firefoxOptions]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions [moz:debuggerAddress]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Capabilities.html#moz-debuggeraddress [Microsoft Visual Studio redistributable runtime]: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads [GeckoView]: https://wiki.mozilla.org/Mobile/GeckoView [Fission]: https://wiki.mozilla.org/Project_Fission [Capabilities]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Capabilities.html [Flags]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html [--allow-hosts]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#allow-hosts-allow-hosts [--allow-origins]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#allow-origins-allow-origins [enable remote debugging on the Android device]: https://developers.google.com/web/tools/chrome-devtools/remote-debugging [macOS notarization]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Notarization.html [Rust]: https://rustup.rs/ [mozilla.org] https://www.mozilla.org/firefox/

[CloseWindowResponse]: https://docs.rs/webdriver/newest/webdriver/response/struct.CloseWindowResponse.html [CookieResponse]: https://docs.rs/webdriver/newest/webdriver/response/struct.CookieResponse.html [DeleteSession]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.DeleteSession [ElementClickIntercepted]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.ElementClickIntercepted [ElementNotInteractable]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.ElementNotInteractable [FullscreenWindow]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.FullscreenWindow [GetNamedCookie]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.GetNamedCookie [GetWindowRect]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.GetWindowRect [InvalidCoordinates]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.InvalidCoordinates [MaximizeWindow]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.MaximizeWindow [MinimizeWindow]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.MinimizeWindow [NewSession]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.NewSession [NoSuchCookie]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.NoSuchCookie [RectResponse]: https://docs.rs/webdriver/0.27.0/webdriver/response/struct.RectResponse.html [SendKeysParameters]: https://docs.rs/webdriver/newest/webdriver/command/struct.SendKeysParameters.html [SessionNotCreated]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.SessionNotCreated [SetTimeouts]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.SetTimeouts [SetWindowRect]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.SetWindowRect [StaleElementReference]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.StaleElementReference [UnableToCaptureScreen]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnableToCaptureScreen [UnknownCommand]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnknownCommand [UnknownError]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnknownError [WindowRectParameters]: https://docs.rs/webdriver/newest/webdriver/command/struct.WindowRectParameters.html

[Add Cookie]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Commands/AddCookie [invalid argument]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/InvalidArgument [invalid session id]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/InvalidSessionID [script timeout]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/ScriptTimeout [timeout]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/Timeout [timeout object]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Timeouts [platformName capability]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities#platformName

[hyper]: https://hyper.rs/ [mozrunner crate]: https://crates.io/crates/mozrunner [serde]: https://serde.rs/ [webdriver crate]: https://crates.io/crates/webdriver

[Actions]: https://w3c.github.io/webdriver/webdriver-spec.html#actions [Element Click]: https://w3c.github.io/webdriver/webdriver-spec.html#element-click [Find Element From Shadow Root]: https://w3c.github.io/webdriver/#dfn-find-element-from-shadow-root [Find Elements From Shadow Root]: https://w3c.github.io/webdriver/#dfn-find-elements-from-shadow-root [Get Computed Label]: https://w3c.github.io/webdriver/#get-computed-label [Get Computed Role]: https://w3c.github.io/webdriver/#get-computed-role [Get Element Shadow Root]: https://w3c.github.io/webdriver/#get-element-shadow-root [Get Timeouts]: https://w3c.github.io/webdriver/webdriver-spec.html#get-timeouts [Get Window Rect]: https://w3c.github.io/webdriver/webdriver-spec.html#get-window-rect [insecure certificate]: https://w3c.github.io/webdriver/webdriver-spec.html#dfn-insecure-certificate [Minimize Window]: https://w3c.github.io/webdriver/webdriver-spec.html#minimize-window [New Session]: https://w3c.github.io/webdriver/webdriver-spec.html#new-session [New Window]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Commands/New_Window [Print]: https://w3c.github.io/webdriver/webdriver-spec.html#print [Send Alert Text]: https://w3c.github.io/webdriver/webdriver-spec.html#send-alert-text [Set Timeouts]: https://w3c.github.io/webdriver/webdriver-spec.html#set-timeouts [Set Window Rect]: https://w3c.github.io/webdriver/webdriver-spec.html#set-window-rect [Status]: https://w3c.github.io/webdriver/webdriver-spec.html#status [Switch to Frame]: https://w3c.github.io/webdriver/#dfn-switch-to-frame [Take Element Screenshot]: https://w3c.github.io/webdriver/webdriver-spec.html#take-element-screenshot [User Prompt Handler]: https://w3c.github.io/webdriver/#user-prompt-handler [WebDriver errors]: https://w3c.github.io/webdriver/webdriver-spec.html#handling-errors

[WebDriver BiDi]: https://w3c.github.io/webdriver-bidi/

[Permissions]: https://www.w3.org/TR/permissions/#automation-webdriver-bidi

[Virtual Authenticators]: https://www.w3.org/TR/webauthn-2/#sctn-automation [Add Credential]: https://www.w3.org/TR/webauthn-2/#add-credential [Add Virtual Authenticator]: https://www.w3.org/TR/webauthn-2/#add-virtual-authenticator [Get Credentials]: https://www.w3.org/TR/webauthn-2/#get-credentials [Remove All Credentials]: https://www.w3.org/TR/webauthn-2/#remove-all-credentials [Remove Credential]: https://www.w3.org/TR/webauthn-2/#remove-credential [Remove Virtual Authenticator]: https://www.w3.org/TR/webauthn-2/#remove-virtual-authenticator [Set User Verified]: https://www.w3.org/TR/webauthn-2/#set-user-verified

[Bastien Orivel]: https://github.com/Eijebong [David Burns]: https://github.com/AutomatedTester [James Hendry]: https://bugzilla.mozilla.org/userprofile?userid=720249 [Jason Juang]: https://github.com/juangj [Jeremy Lempereur]: https://github.com/o0Ignition0o [Kalpesh Krishna]: https://github.com/martiansideofthemoon [Kriti Singh]: https://github.com/kritisingh1 [Mitesh Gulecha]: https://github.com/mickyg03 [Mike Pennisi]: https://github.com/jugglinmike [Nupur Baghel]: https://github.com/nupurbaghel [Peter Major]: https://github.com/aldaris [Razvan Cojocaru]: https://github.com/rzvncj [Shivam Singhal]: https://github.com/championshuttler [Sven Jost]: https://github/mythsunwind [Vlad Filippov]: https://github.com/vladikoff [Olivier Tilloy]: https://github.com/oSoMoN [Gatlin Newhouse]: https://github.com/gatlinnewhouse