Skip to content

Releases: mozilla/geckodriver

0.31.0

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

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

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

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

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

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

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.

v0.25.0

Compare
Choose a tag to compare

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

  • Added support for HTTP HEAD requests to the HTTPD

    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.

  • Added support for searching for Nightly’s default path on macOS

    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.

  • Support for application bundle paths on macOS

    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.

  • macOS and Windows builds are signed

    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

  • Dropped support for legacy Selenium web element references

    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.

  • Removed --webdriver-port command-line option

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

Changed

  • Refactored Marionette serialisation

    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.

  • Improved error messages for incorrect command-line usage

Fixed

  • Errors related to incorrect command-line usage no longer hidden

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

  • Search system path for Firefox binary on BSDs

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

v0.24.0

Compare
Choose a tag to compare

Built from 917474f3473e.

Added

  • Introduces strictFileInteractability capability

    The new capabilitiy 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.

  • Added new endpoint GET /session/{session id}/moz/screenshot/full
    for taking full document screenshots, thanks to Greg Fraley.

  • Added new --marionette-host <HOSTNAME> flag for binding to a
    particular interface/IP layer on the system.

  • Added new endpoint POST /session/{session_id}/window/new
    for the New Window command to create a new top-level browsing context,
    which can be either a window or a tab. This feature requires
    Firefox 66 or later.

  • When using the preference devtools.console.stdout.content set to
    true logging of console API calls like info(), warn(), and
    error() can be routed to stdout.

  • geckodriver now sets the app.update.disabledForTesting preference
    to prevent Firefox >= 65 from automatically updating whilst under
    automation.

Removed

  • Turned off builds for arm7hf, which will no longer be released but
    can still be built from the source.

Changed

  • Allow file uploads to hidden <input type=file> elements

    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.

  • Allow use of an indefinite script timeout for the Set Timeouts
    command, thanks to reimu.

Fixed

  • Corrected Content-Type of response header to utf-8 to fix
    an HTTP/1.1 compatibility bug.

  • Relaxed the deserialization of timeouts parameters to allow unknown
    fields for the Set Timeouts command.

  • Fixed a regression in the Take Element Screenshot to not screenshot
    the viewport, but the requested element.

v0.23.0

Compare
Choose a tag to compare

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

  • The POST /session/{session id}/element/{element id}/tap endpoint
    was removed, thanks to Kerem Kat.

Changed

Fixed

  • desiredCapabilities and requiredCapabilities are again
    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.

  • duration field made optional on pause actions

    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.

  • Log level formatted to expected Marionette input

    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.

  • temporary field on addon installation made optional

    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.

  • SHA1s in version information uses limited number of characters

    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.