@AutomatedTester AutomatedTester released this Oct 4, 2018 · 22 commits to master since this release

Assets 8

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.


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



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

@AutomatedTester AutomatedTester released this Sep 15, 2018 · 22 commits to master since this release

Assets 8

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.


  • Support for WebDriver web element-, web frame-, and web window
    identifiers from Firefox.

  • Added support for the non-configurable setWindowRect capability
    from WebDriver.

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

  • A new extension capability moz:geckodriverVersion is returned
    upon session creation.


  • All JSON serialization and deserialisation has moved from
    rustc_serialize to serde.

  • The HTTP status codes used for script timeout and timeout
    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.

  • The HTTP/1.1 Keep-Alive timeout for persistent connections has
    been increased to 90 seconds.

  • An invalid session ID error is now returned when there is no
    active session.

  • An invalid argument error is now returned when Add Cookie
    is given invalid parameters.

  • The handshake when geckodriver connects to Marionette has been
    hardened by killing the Firefox process if it fails.

  • The handshake read timeout has been reduced to 10 seconds instead
    of waiting forever.

  • The HTTP server geckodriver uses, hyper, has been upgraded to
    version 0.12, thanks to Bastien Orivel.

  • geckodriver version number is no longer logged on startup, as
    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

  • The webdriver library has been updated to version 0.37.0.


@AutomatedTester AutomatedTester released this Jun 15, 2018 · 22 commits to master since this release

Assets 8

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

  • Firefox 57 (and greater)
  • Selenium 3.11 (and greater)


  • Support for the chrome element identifier from Firefox.

  • The unhandledPromptBehavior capability now accepts accept and notify, dismiss and notify, and ignore options.

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


  • Firefox will now be started with the -foreground and -no-remote
    flags if they have not already been specified by the user in

    -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

  • WebDriver commands that do not have a return value now correctly
    return {value: null} instead of an empty dictionary.

  • The HTTP server now accepts Keep-Alive connections.

  • Firefox remote protocol command mappings updated.

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

  • Overhaul of Firefox preferences.

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

  • webdriver crate upgraded to 0.36.0.


  • Force use of IPv4 network stack.

    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

  • geckodriver failed to locate the correct Firefox binary if it was
    found under a firefox or firefox-bin directory, depending on
    the system, because it thought the parent directory was the

  • On Unix systems (macOS, Linux), geckodriver falsely reported
    non-executable files as valid binaries.

  • When stdout and stderr is redirected by geckodriver, a bug prevented
    the redirections from taking effect.

@AutomatedTester AutomatedTester released this Apr 8, 2018 · 22 commits to master since this release

Assets 8


  • Avoid attempting to kill Firefox process that has stopped.

    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.

@AutomatedTester AutomatedTester released this Mar 12, 2018 · 22 commits to master since this release

Assets 8


  • New --jsdebugger flag to open the Browser Toolbox when Firefox
    launches. This is useful for debugging Marionette internals.

  • Introduced the temporary, boolean capability
    moz:useNonSpecCompliantPointerOrigin to disable the WebDriver
    conforming behavior of calculating the Pointer Origin.


  • HTTP status code for the StaleElementReference error changed
    from 400 (Bad Request) to 404 (Not Found).

  • Backtraces from geckodriver no longer substitute for missing
    Marionette stacktraces.

  • webdriver crate upgraded to 0.35.0.


  • The Firefox process is now given ample time to shut down, allowing
    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.

  • Grapheme clusters are now accepted as input for keyboard input
    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.

  • Improved error messages for malformed capability values.

@AutomatedTester AutomatedTester released this Oct 31, 2017 · 22 commits to master since this release

Assets 8


  • Search suggestions in the location bar turned off as not to
    trigger network connections

  • Block addons incompatible with E10s


  • Marionette stacktraces are now correctly propagated

  • Some error messages have been clarified


  • Removed obsolete socksUsername and socksPassword proxy
    configuration keys because neither were picked up or recognised

@AutomatedTester AutomatedTester released this Sep 16, 2017 · 22 commits to master since this release

Assets 8

Note that with geckodriver v0.19.0 the following versions are recommended:

  • Firefox 55.0 (and greater)
  • Selenium 3.5 (and greater)


  • Added endpoint:

    • POST /session/{session id}/window/minimize for the Minimize Window
  • Added preference extensions.shield-recipe-client.api_url to disable shield
    studies which could unexpectedly change the behavior of Firefox

  • Introduced the temporary, boolean capability moz:webdriverClick to enable
    the WebDriver conforming behavior of the Element Click command.

  • Added crashreporter environment variables to better control the browser
    in case of crashes

  • Added preference dom.file.createInChild set to true to allow file
    object creation in content processes


  • Log all used application arguments and not only -marionette

  • Early abort connection attempts to Marionette if the Firefox process
    closed unexpectetly

  • Removed deprecated socksProxyVersion in favor of socksVersion

  • Removed ftpProxyPort, httpProxyPort, sslProxyPort, and
    socksProxyPort because ports have to be set for ftpProxy,
    httpProxy, sslProxy, and socksProxy using ":"

  • The proxyType noproxy has been replaced with direct in accordance
    with recent WebDriver specification changes

  • The WindowRectParameters have been updated to return signed 32-bit
    integers in accordance with the CSS and WebDriver specifications, and
    to be more liberal with the input types

  • Mapped the FullscreenWindow to the correct Marionette command

  • To make sure no browser process is left behind when the NewSession
    fails, the process is closed immediately now

  • /moz/addon/install command accepts an addon parameter, in lieu of
    path, containing an addon as a Base64 string (fixed by Jason Juang)

  • webdriver crate upgraded to version 0.31.0

  • mozrunner crate upgraded to version 0.5.0


  • Removed the following obsolete preferences for Firefox:
    • browser.safebrowsing.enabled
    • browser.safebrowsing.forbiddenURIs.enabled
    • marionette.defaultPrefs.port
    • marionette.logging

@andreastt andreastt released this Jul 11, 2017 · 22 commits to master since this release

Assets 8


  • RectResponse permits returning floats for width and height fields
  • New type CookieResponse for the GetNamedCookie command returns a single cookie, as opposed to an array of a single cookie
  • To pick up a prepared profile from the filesystem, it is now possible to pass ["-profile", "/path/to/profile"] in the args array on moz:firefoxOptions
  • geckodriver now recommends Firefox 53 and greater
  • Version information (--version) contains the hash from from the commit used to build geckodriver
  • geckodriver version logged on startup
  • webdriver crate upgraded to version 0.27.0
  • mozrunner crate upgraded to version 0.4.1


  • The SetTimeouts command maps to the Marionette setTimeouts command, which makes geckodriver compatible with Firefox 56 and greater
  • Linux x86 (i686-unknown-linux-musl) builds are fixed

@AutomatedTester AutomatedTester released this Jun 9, 2017 · 22 commits to master since this release

Assets 8


  • Added endpoints:
    • 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]


  • Increasing the length of the network.http.phishy-userpass-length preference will cause Firefox to not prompt when navigating to a website with a username or password in the URL
  • Library dependencies upgraded to mozrunner 0.4 and mozprofile 0.3 to allow overriding of preferences via capabilities if those have been already set in the profile
  • Library dependencies upgraded to mozversion 0.1.2 to only use the normalized path of the Firefox binary for version checks but not to actually start the browser, which broke several components in Firefox on Windows


  • The SetWindowRect command now returns the WindowRect when it is done
  • Use ASCII versions of array symbols to properly display them in the Windows command prompt
  • Use SessionNotCreated error instead of UnknownError if there is no current session

@AutomatedTester AutomatedTester released this Apr 26, 2017 · 30 commits to master since this release

Assets 7


  • Read Firefox version number from stdout when failing to look for the application .ini file (fixes Selenium #3884)
  • Session is now ended when closing the last Firefox window (fixes #613)