Geckodriver Versions Save

WebDriver for Firefox

v0.34.0

4 months ago

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

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's info.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.

v0.33.0

1 year ago

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 to true:

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

v0.32.2

1 year ago

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 to true:

    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 caused cargo install geckodriver to fail for older releases.

v0.32.1

1 year ago

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 to true:

    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 of true 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

v0.32.0

1 year ago

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 as pointerType for pointer input source for Actions, 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

  • 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 the TMPDIR 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

v0.31.0

2 years ago

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 geckodriver

    Alternatively, 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 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

  • 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 the MarionetteActivePort 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 and binary capabilities togther within moz:firefoxOptions because these capabilites are mutually exclusive.

v0.30.0

2 years ago

0.30.0 (2021-09-16, d372710b98a6)

Security Fixes

  • CVE-2021-4138

    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

  • 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 to true 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 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.

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

v0.29.1

3 years ago

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 preference devtools.debugger.remote-enabled is set to True 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 the androidPackage 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 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 --android-storage command line argument anymore unless there is a strong reason. It will be removed in a future release.

v0.29.0

3 years ago

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 preference devtools.debugger.remote-enabled is set to True 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 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.

v0.28.0

3 years ago

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 preference devtools.debugger.remote-enabled is set to True 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.