Removed

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.

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.

Added

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

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

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

Changed

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.

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)

Added

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.

Changed

Firefox will now be started with the -foreground and -no-remote
flags if they have not already been specified by the user inmoz:firefoxOptions.

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

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.

Fixed

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

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

Fixed

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.

Fixed

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.

Changed

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

Fixed

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