Skip to content

Releases: mozilla/geckodriver

0.35.0

06 Aug 12:16
53f2b32
Compare
Choose a tag to compare

0.35.0 (2024-08-06, 9f0a0036bea4)

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

  • Support for Permissions that allow controlling permission prompts
    within the browser. This enables automated tests to handle scenarios
    involving permissions like geolocation, notifications, and more.

  • The command line flag --enable-crash-reporter has been added, to allow
    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

  • The validation of the unhandledPromptBehavior capability has been enhanced
    to support finer configuration options for the User Prompt Handler which
    are particularly used by WebDriver BiDi.

Fixed

  • The Switch To Frame command now correctly raises an "invalid argument"
    error when the id parameter is missing.

    Implemented by James Hendry.

Removed

  • Removed support for session negotiation using the deprecated
    desiredCapabilities and requiredCapabilities.

    Implemented by James Hendry.

  • Removed support for the moz:useNonSpecCompliantPointerOrigin capability,
    which has not bee supported since Firefox 116.

0.34.0

03 Jan 09:42
3bcc92b
Compare
Choose a tag to compare

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.

0.33.0

03 Apr 11:17
c0521a0
Compare
Choose a tag to compare

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.

0.32.2

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

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.

0.32.1

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

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

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.