Skip to content

Releases: mozilla/geckodriver

0.32.2

08 Feb 11:56
96e044c
Compare
Choose a tag to compare

0.32.2 (2023-02-08, 602aa16c20d4)

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.

0.32.1

02 Feb 14:24
752316f
Compare
Choose a tag to compare

0.32.1 (2023-02-02, b7f075124503)

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

0.32.0

13 Oct 19:40
4f6a980
Compare
Choose a tag to compare

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

0.31.0

11 Apr 09:18
9b5f85c
Compare
Choose a tag to compare

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.

0.30.0

16 Sep 13:03
d06ed1b
Compare
Choose a tag to compare

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.

0.29.1

09 Apr 08:22
87fc845
Compare
Choose a tag to compare

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.

0.29.0

14 Jan 11:17
8f93764
Compare
Choose a tag to compare

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.

0.28.0

03 Nov 17:01
2acb733
Compare
Choose a tag to compare

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.

0.27.0

29 Jul 08:50
917daac
Compare
Choose a tag to compare

0.27.0 (2020-07-27, 7b8c4f32cdde)

Security Fixes

  • CVE-2020-15660

    • 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

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

Added

  • To set environment variables for the launched Firefox for Android, it is now possible to add an env object on moz: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

11 Oct 23:34
Compare
Choose a tag to compare

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

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

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