1 <!-- markdownlint-disable MD024 -->
4 All notable changes to this program are documented in this file.
6 ## 0.33.0 (2023-04-03, `a80e5fd61076`)
10 - _Startup hang with Firefox running in a container (e.g. snap, flatpak):_
12 When Firefox is packaged inside a container (like the default Firefox browser
13 shipped with Ubuntu 22.04), it may see a different filesystem to the host.
14 This can affect access to the generated profile directory, which may result
15 in a hang when starting Firefox. Workarounds are listed in the geckodriver
16 [usage documentation].
18 - _Potential hang with `moz:debuggerAddress` capability set to `true`:_
20 After enabling the site-isolation feature in Firefox with geckodriver 0.32.1
21 some WebDriver clients like Selenium that use the Chrome DevTools Protocol (CDP)
22 by default for logging events could trigger a hang in Firefox's experimental CDP
23 implementation. The fix for this problem will be shipped with Firefox 112.
24 Until then the following Firefox preferences should be set:
26 - `fission.bfcacheInParent: false`
27 - `fission.webContentIsolationStrategy: 0`
31 - Support for [Get Computed Label] and [Get Computed Role]
33 The command [Get Computed Label] returns the accessibility label (sometimes
34 also referred to as Accessible Name), which is a short string that labels the
35 function of the control (e.g. the string "Comment" or "Sign In" on a button).
37 The command [Get Computed Role] returns the reserved token value (in ARIA,
38 button, heading, etc.) that describes the type of control or content in the
41 Note that the minimum required Firefox version is 113.0.
43 - Support for [Find Element From Shadow Root] and [Find Elements From Shadow Root]
45 The commands allow a lookup of individual elements or collections of elements
46 within an open or closed Shadow DOM. All location strategies except `Tag name` and
47 `XPath selector` are currently supported.
49 Note that the minimum required Firefox version is 113.0.
53 - The Mozilla specific capability `moz:useNonSpecCompliantPointerOrigin` has been
54 marked as deprecated. Its removal is planned for the Firefox 116.0 release.
56 ## 0.32.2 (2023-02-08, `602aa16c20d4`)
60 - _Startup hang with Firefox running in a container (e.g. snap, flatpak):_
62 When Firefox is packaged inside a container (like the default Firefox browser
63 shipped with Ubuntu 22.04), it may see a different filesystem to the host.
64 This can affect access to the generated profile directory, which may result
65 in a hang when starting Firefox. Workarounds are listed in the geckodriver
66 [usage documentation].
68 - _Potential hang with `moz:debuggerAddress` capability set to `true`:_
70 After enabling the site-isolation feature in Firefox with geckodriver 0.32.1
71 some WebDriver clients like Selenium that use the Chrome DevTools Protocol (CDP)
72 by default for logging events could trigger a hang in Firefox's experimental CDP
73 implementation. The fix for this problem will be shipped with Firefox 112.
74 Until then the following Firefox preferences should be set:
76 - `fission.bfcacheInParent: false`
77 - `fission.webContentIsolationStrategy: 0`
81 - With the release of geckodriver 0.32.1 the marionette crate was inappropriately
82 bumped to a semver incompatible version and caused `cargo install geckodriver`
83 to fail for older releases.
85 ## 0.32.1 (2023-02-02, `b7f075124503`)
89 - _Startup hang with Firefox running in a container (e.g. snap, flatpak):_
91 When Firefox is packaged inside a container (like the default Firefox browser
92 shipped with Ubuntu 22.04), it may see a different filesystem to the host.
93 This can affect access to the generated profile directory, which may result
94 in a hang when starting Firefox. Workarounds are listed in the geckodriver
95 [usage documentation].
97 - _Potential hang with `moz:debuggerAddress` capability set to `true`:_
99 After enabling the site-isolation feature in Firefox with geckodriver 0.32.1
100 some WebDriver clients like Selenium that use the Chrome DevTools Protocol (CDP)
101 by default for logging events could trigger a hang in Firefox's experimental CDP
102 implementation. The fix for this problem will be shipped with Firefox 112.
103 Until then the following Firefox preferences should be set:
105 - `fission.bfcacheInParent: false`
106 - `fission.webContentIsolationStrategy: 0`
110 - When using the boolean capability `moz:debuggerAddress` with a value of `true`
111 the site-isolation feature in Firefox will no longer accidentally be turned off.
112 This behavior affected all users of WebDriver clients especially Selenium, which
113 set this capability by default, and caused Firefox on desktop systems to be
114 launched in an unsupported mode.
116 ## 0.32.0 (2022-10-13, `4563dd583110`)
120 - Native aarch64 builds of geckodriver for Linux and Windows are now available.
122 - Support `wheel` input source for [Actions], which is associated with a
123 wheel-type input device. This endpoint is supported by geckodriver when
124 using Firefox version ≥106.
126 - Support `touch` as `pointerType` for `pointer` input source for [Actions],
127 which is associated with a touch input device. This also includes the
128 addition of all the remaining properties for `pointer` input sources as
129 specified by WebDriver. This endpoint is supported by geckodriver when using
130 Firefox version ≥104.
134 - Using geckodriver to launch Firefox inside a sandbox -- for example
135 a Firefox distribution using Snap or Flatpak -- can fail with a
136 "Profile not found" error if the sandbox restricts Firefox's ability
137 to access the system temporary directory. geckodriver uses the
138 temporary directory to store Firefox profiles created during the run.
140 This issue can now be worked around by using the `--profile-root`
141 command line option or setting the `TMPDIR` environment variable to
142 a location that both Firefox and geckodriver have read/write access
147 % geckodriver --profile-root=~/tmp
153 % TMPDIR=$HOME/tmp geckodriver
156 Alternatively, geckodriver may be used with a Firefox install that
157 is not packaged inside a sandbox e.g. from [mozilla.org].
159 - The sandboxed Firefox binary is now automatically detected when geckodriver
160 is used from within a Snap confinement.
162 Implemented by [Olivier Tilloy].
164 - On MacOS the geckodriver binary is now technically both signed and notarized.
166 Note: The actual validation can only be performed if the machine that starts
167 the geckodriver binary for the very first time is online. You can find more
168 details on how to work around this issue in the [macOS notarization] section
169 of the documentation.
171 - The backup of the original Firefox preferences are now correctly restored
172 on Android when the WebDriver session ends.
176 - Update dependencies
178 ## 0.31.0 (2022-04-11, `b617178ef491`)
182 - _Firefox running in Linux Sandbox (e.g. Snap package):_
184 Using geckodriver to launch Firefox inside a sandbox -- for example
185 a Firefox distribution using Snap or Flatpak -- can fail with a
186 "Profile not found" error if the sandbox restricts Firefox's ability
187 to access the system temporary directory. geckodriver uses the
188 temporary directory to store Firefox profiles created during the run.
190 As workaround geckodriver may be used with a Firefox install that
191 is not packaged inside a sandbox e.g. from [mozilla.org].
193 - _macOS 10.15 (Catalina) and later:_
195 Due to the requirement from Apple that all programs must be
196 notarized, geckodriver will not work on Catalina if you manually
197 download it through another notarized program, such as Firefox.
199 Whilst we are working on a repackaging fix for this problem, you can
200 find more details on how to work around this issue in the [macOS
201 notarization] section of the documentation.
205 - Users with the [Rust] toolchain installed can now build and install
206 geckodriver from [crates.io] using Cargo:
208 % cargo install geckodriver
210 - Support for [Get Element Shadow Root]
212 Implemented by [David Burns].
214 The standardised WebDriver [Get Element Shadow Root] endpoint provides a way
215 to retrieve the Shadow Root of a given web element. This endpoint is
216 supported by geckodriver when using Firefox version ≥96.
218 - Support for additional hosts and origins
220 Users can now specify a list of allowed `Host` and `Origin` headers for
221 incoming requests using the [`--allow-hosts`] and [`--allow-origins`] command
222 line options, respectively. When such a flag is provided, exactly the given
223 values will be permitted.
225 By default any request with an `Origin` header is rejected, and only requests
226 containing the bound hostname (specified via `--host`), or an IP address,
227 in the Host header are allowed. These configuration options are
228 designed to support scenarios where geckodriver is running on a different
229 network node to the host e.g. some container based setups.
233 - Geckodriver lets Marionette itself select a system allocated port, so that
234 it's no longer required to specify a fixed port when using a custom Firefox
235 profile. This is done by reading the `MarionetteActivePort` file of the
236 Firefox profile in-use. This helps to avoid port collisions when multiple
237 Firefox instances are run in parallel.
239 - It's no longer possible to specify both the `androidPackage` and `binary`
240 capabilities togther within [`moz:firefoxOptions`] because these capabilites
241 are mutually exclusive.
243 ## 0.30.0 (2021-09-16, `d372710b98a6`)
249 Fixed a DNS rebinding issues by enforcing a stricter `Host` header check.
251 Reported by Gabriel Corona.
253 - Improved `Host` header checks to reject requests not sent to a well-known
254 local hostname or IP, or the server-specified hostname.
258 - geckodriver restricts connections to local IP addresses. This can interfere
259 with deployments in which geckodriver is running on a different network node
260 to the tests e.g. some container or virtual-machine based setups.
262 - _macOS 10.15 (Catalina) and later:_
264 Due to the requirement from Apple that all programs must be
265 notarized, geckodriver will not work on Catalina if you manually
266 download it through another notarized program, such as Firefox.
268 Whilst we are working on a repackaging fix for this problem, you can
269 find more details on how to work around this issue in the [macOS
270 notarization] section of the documentation.
274 For releases of Firefox 89.0 and earlier Marionette will only be enabled in
275 GeckoView based applications when the Firefox preference
276 `devtools.debugger.remote-enabled` is set to `true` via [`moz:firefoxOptions`].
280 - Support for WebDriver clients to opt in to WebDriver BiDi.
282 Introduced the new boolean capability [`webSocketUrl`] that can be used by
283 WebDriver clients to opt in to a bidirectional connection. A string capability
284 with the same name will be returned by [`NewSession`], which contains the
285 WebSocket URL of the newly created WebDriver session in the form of:
286 `ws://host:port/session/<session id>`.
288 When running on Android a port forward will be set on the host machine,
289 which is using the exact same port as on the device.
291 All the supported WebDriver BiDi commands depend on the version of
292 Firefox, and not geckodriver. The first commands will be shipped in
295 - It's now possible to set additional preferences when a custom profile has been
296 specified. At the end of the session they will be removed.
300 - Added validation that the `--host` argument resolves to a local IP address.
302 - Limit the `--foreground` argument of Firefox to MacOS only.
304 - Increased Marionette handshake timeout to not fail for slow connections.
306 - `Marionette:Quit` is no longer sent twice during session deletion.
308 - When deleting a session that was attached to an already running browser
309 instance, the browser is not getting closed anymore.
313 - Starting Firefox on Android from a Windows based host will now succeed as
314 we are using the correct Unix path separator to construct on-device paths.
316 - Arguments as specified in [`moz:firefoxOptions`] are now used when starting
319 - Port forwards set for Marionette and the WebSocket server (WebDriver BiDi)
320 are now correctly removed when geckodriver exits.
322 - The test root folder is now removed when geckodriver exists.
324 ## 0.29.1 (2021-04-09, `970ef713fe58`)
328 - _macOS 10.15 (Catalina) and later:_
330 Due to the requirement from Apple that all programs must be
331 notarized, geckodriver will not work on Catalina if you manually
332 download it through another notarized program, such as Firefox.
334 Whilst we are working on a repackaging fix for this problem, you can
335 find more details on how to work around this issue in the [macOS
336 notarization] section of the documentation.
340 Marionette will only be enabled in GeckoView based applications when the
341 Firefox preference `devtools.debugger.remote-enabled` is set to `true` via
342 [`moz:firefoxOptions`]. This will be fixed in the Firefox 90 release for
347 - When testing GeckoView based applications on Android it's now enough to
348 specify the `androidPackage` capability. The appropriate activity name,
349 and required intent arguments will now automatically be used for
350 applications released by Mozilla.
352 - Native AArch64 (M1) builds of geckodriver for MacOS are now available. These
353 are currently shipped as Tier2 due to missing test infrastructure. Please let
354 us know if you experience issues.
358 - Fixed a stack overflow crash in thread 'webdriver dispatcher' when
359 handling certain device errors.
361 - Fixed an application crash due to missing permissions on unrooted devices
362 by changing the location of the test related files, e.g the profile folder.
363 Therefore the deprecated --android-storage command line argument
364 now defaults to the `sdcard` option, which changed its location to
365 `$EXTERNAL_STORAGE/Android/data/%androidPackage%/files/`. With this change
366 proper support for unrooted devices running Android 10+ has been added.
368 _Note_: Do not use the --android-storage command line argument
369 anymore unless there is a strong reason. It will be removed in a future
372 ## 0.29.0 (2021-01-14, `cf6956a5ec8e`)
376 - _macOS 10.15 (Catalina) and later:_
378 Due to the requirement from Apple that all programs must be
379 notarized, geckodriver will not work on Catalina if you manually
380 download it through another notarized program, such as Firefox.
382 Whilst we are working on a repackaging fix for this problem, you can
383 find more details on how to work around this issue in the [macOS
384 notarization] section of the documentation.
388 Marionette will only be enabled in GeckoView based applications when the
389 Firefox preference `devtools.debugger.remote-enabled` is set to `true` via
390 [`moz:firefoxOptions`]. This will be fixed in one of the upcoming Firefox
391 for Android releases.
393 In some cases geckodriver could crash due to a stack overflow when handling
394 certain device errors.
396 On unrooted Android 10+ devices startup crashes of the application can be
397 experienced due to an inappropriate location of test related files, e.g the
402 - Introduced the new boolean capability [`moz:debuggerAddress`] that can be used
403 to opt-in to the experimental Chrome DevTools Protocol (CDP) implementation.
404 A string capability with the same name will be returned by [`NewSession`],
405 which contains the `host:port` combination of the HTTP server that can be
406 used to query for websockets of available targets.
408 Note: For this experimental feature the site-isolation support of
409 Firefox aka [Fission] will be not available.
411 ## 0.28.0 (2020-11-03, `c00d2b6acd3f`)
415 - _macOS 10.15 (Catalina) and later:_
417 Due to the requirement from Apple that all programs must be
418 notarized, geckodriver will not work on Catalina if you manually
419 download it through another notarized program, such as Firefox.
421 Whilst we are working on a repackaging fix for this problem, you can
422 find more details on how to work around this issue in the [macOS
423 notarization] section of the documentation.
427 Marionette will only be enabled in GeckoView based applications when the
428 Firefox preference `devtools.debugger.remote-enabled` is set to `true` via
429 [`moz:firefoxOptions`]. This will be fixed in one of the upcoming Firefox
430 for Android releases.
432 In some cases geckodriver could crash due to a stack overflow when handling
433 certain device errors.
435 On unrooted Android 10+ devices startup crashes of the application can be
436 experienced due to an inappropriate location of test related files, e.g the
441 - The command line flag `--android-storage` has been added, to allow geckodriver
442 to also control Firefox on root-less Android devices.
443 See the [documentation][Flags] for available values.
447 - Firefox can be started again via a shell script that is located outside of the
448 Firefox directory on Linux.
450 - If Firefox cannot be started by geckodriver the real underlying error message is
453 - Version numbers for minor and extended support releases of Firefox are now parsed correctly.
457 - Since Firefox 72 extension commands for finding an element’s anonymous children
458 and querying its attributes are no longer needed, and have been removed.
460 ## 0.27.0 (2020-07-27, `7b8c4f32cdde`)
466 Improved validation of incoming requests to prevent remote
467 requests being treated as local.
469 Reported by Gabriel Corona.
471 - Added additional checks on the `Content-Type` header for `POST`
472 requests to disallow `application/x-www-form-urlencoded`,
473 `multipart/form-data` and `text/plain`.
475 - Added checking of the `Origin` header for `POST` requests.
477 - The version number of Firefox is now checked when establishing a session.
481 - _macOS 10.15 (Catalina) and later:_
483 Due to the requirement from Apple that all programs must be
484 notarized, geckodriver will not work on Catalina if you manually
485 download it through another notarized program, such as Firefox.
487 Whilst we are working on a repackaging fix for this problem, you can
488 find more details on how to work around this issue in the [macOS
489 notarization] section of the documentation.
493 Marionette will only be enabled in GeckoView based applications when the
494 Firefox preference `devtools.debugger.remote-enabled` is set to `true` via
495 [`moz:firefoxOptions`]. This will be fixed in one of the upcoming Firefox
496 for Android releases.
498 In some cases geckodriver could crash due to a stack overflow when handling
499 certain device errors.
503 - To set environment variables for the launched Firefox for Android,
504 it is now possible to add an `env` object on [`moz:firefoxOptions`]
505 (note: this is not supported for Firefox Desktop)
507 - Support for print-to-PDF
509 The newly standardised WebDriver [Print] endpoint provides a way to
510 render pages to a paginated PDF representation. This endpoint is
511 supported by geckodriver when using Firefox version ≥78.
513 - Support for same-site cookies
515 Cookies can now be set with a `same-site` parameter, and the value
516 of that parameter will be returned when cookies are
517 retrieved. Requires Firefox version ≥79. Thanks to [Peter Major] for
524 - Firefox running on Android devices can now be controlled from a Windows host.
526 - Setups with multiple connected Android devices are now supported.
528 - Improved cleanup of configuration files. This prevents crashes if
529 the application is started manually after launching it through
532 - Windows and Linux binaries are again statically linked.
534 ## 0.26.0 (2019-10-12, `e9783a644016'`)
536 Note that with this release the minimum recommended Firefox version
537 has changed to Firefox ≥60.
541 - _macOS 10.15 (Catalina) and later:_
543 Due to the recent requirement from Apple that all programs must
544 be notarized, geckodriver will not work on Catalina if you manually
545 download it through another notarized program, such as Firefox.
547 Whilst we are working on a repackaging fix for this problem, you
548 can find more details on how to work around this issue in the
549 [macOS notarization] section of the documentation.
553 You must still have the [Microsoft Visual Studio redistributable
554 runtime] installed on your system for the binary to run. This
555 is a known bug which we weren't able fix for this release.
559 Marionette will only be enabled in GeckoView based applications when the
560 Firefox preference `devtools.debugger.remote-enabled` is set to `true` via
561 [`moz:firefoxOptions`]. This will be fixed in one of the upcoming Firefox
562 for Android releases.
564 In some cases geckodriver could crash due to a stack overflow when handling
565 certain device errors.
569 - Support for Firefox on Android
571 Starting with this release geckodriver is able to connect to
572 Firefox on Android systems, and to control packages based on
575 Support for Android works by the geckodriver process running on
576 a host system and Firefox running within either an emulator or
577 on a physical device connected to the host system. This requires
578 you to first [enable remote debugging on the Android device].
580 The WebDriver client must set the [`platformName` capability] to
581 "`android`" and the `androidPackage` capability within
582 [`moz:firefoxOptions`] to the Android package name of the Firefox
585 The full list of new capabilities specific to Android, instructions
586 how to use them, and examples can be found in the [`moz:firefoxOptions`]
587 documentation on MDN.
589 When the session is created, the `platformName` capability will
590 return "`android`" instead of reporting the platform of the host
595 - Continued Marionette refactoring changes
597 0.25.0 came with a series of internal changes for how geckodriver
598 communicates with Firefox over the Marionette protocol. This
599 release contains the second half of the refactoring work.
603 - Connection attempts to Firefox made more reliable
605 geckodriver now waits for the Marionette handshake before assuming
606 the session has been established. This should improve reliability
607 in creating new WebDriver sessions.
609 - Corrected error codes used during session creation
611 When a new session was being configured with invalid input data,
612 the error codes returned was not always consistent. Attempting
613 to start a session with a malformed capabilities configuration
614 will now return the [`invalid argument`] error consistently.
616 ## 0.25.0 (2019-09-09, `bdb64cf16b68`)
618 __Note to Windows users!__
619 With this release you must have the [Microsoft Visual Studio redistributable runtime]
620 installed on your system for the binary to run.
621 This is a [known bug](https://github.com/mozilla/geckodriver/issues/1617)
622 with this particular release that we intend to release a fix for soon.
626 - Added support for HTTP `HEAD` requests to the HTTPD
628 geckodriver now responds correctly to HTTP `HEAD` requests,
629 which can be used for probing whether it supports a particular API.
631 Thanks to [Bastien Orivel] for this patch.
633 - Added support for searching for Nightly’s default path on macOS
635 If the location of the Firefox binary is not given, geckodriver
636 will from now also look for the location of Firefox Nightly in
637 the default locations. The ordered list of search paths on macOS
640 1. `/Applications/Firefox.app/Contents/MacOS/firefox-bin`
641 2. `$HOME/Applications/Firefox.app/Contents/MacOS/firefox-bin`
642 3. `/Applications/Firefox Nightly.app/Contents/MacOS/firefox-bin`
643 4. `$HOME/Applications/Firefox Nightly.app/Contents/MacOS/firefox-bin`
645 Thanks to [Kriti Singh] for this patch.
647 - Support for application bundle paths on macOS
649 It is now possible to pass an application bundle path, such as
650 `/Applications/Firefox.app` as argument to the `binary` field in
651 [`moz:firefoxOptions`]. This will be automatically resolved to
652 the absolute path of the binary when Firefox is started.
654 Thanks to [Nupur Baghel] for this patch.
656 - macOS and Windows builds are signed
658 With this release of geckodriver, executables for macOS and Windows
659 are signed using the same certificate key as Firefox. This should
660 help in cases where geckodriver previously got misidentified as
661 a virus by antivirus software.
665 - Dropped support for legacy Selenium web element references
667 The legacy way of serialising web elements, using `{"ELEMENT": <UUID>}`,
668 has been removed in this release. This may break older Selenium
669 clients and clients which are otherwise not compatible with the
672 Thanks to [Shivam Singhal] for this patch.
674 - Removed `--webdriver-port` command-line option
676 `--webdriver-port <PORT>` was an undocumented alias for `--port`,
677 initially used for backwards compatibility with clients
678 prior to Selenium 3.0.0.
682 - Refactored Marionette serialisation
684 Much of geckodriver’s internal plumbing for serialising WebDriver
685 requests to Marionette messages has been refactored to decrease
686 the amount of manual lifting.
688 This work should have no visible side-effects for users.
690 Thanks to [Nupur Baghel] for working on this throughout her
691 Outreachy internship at Mozilla.
693 - Improved error messages for incorrect command-line usage
697 - Errors related to incorrect command-line usage no longer hidden
699 By mistake, earlier versions of geckodriver failed to print incorrect
700 flag use. With this release problems are again written to stderr.
702 - Search system path for Firefox binary on BSDs
704 geckodriver would previously only search the system path for the
705 `firefox` binary on Linux. Now it supports different BSD flavours
708 ## 0.24.0 (2019-01-28, `917474f3473e`)
712 - Introduces `strictFileInteractability` capability
714 The new capability indicates if strict interactability checks
715 should be applied to `<input type=file>` elements. As strict
716 interactability checks are off by default, there is a change
717 in behaviour when using [Element Send Keys] with hidden file
720 - Added new endpoint `GET /session/{session id}/moz/screenshot/full`
721 for taking full document screenshots, thanks to Greg Fraley.
723 - Added new `--marionette-host <hostname>` flag for binding to a
724 particular interface/IP layer on the system.
726 - Added new endpoint `POST /session/{session_id}/window/new`
727 for the [New Window] command to create a new top-level browsing
728 context, which can be either a window or a tab. The first version
729 of Firefox supporting this command is Firefox 66.0.
731 - When using the preference `devtools.console.stdout.content` set to
732 `true` logging of console API calls like `info()`, `warn()`, and
733 `error()` can be routed to stdout.
735 - geckodriver now sets the `app.update.disabledForTesting` preference
736 to prevent Firefox >= 65 from automatically updating whilst under
741 - ARMv7 HF builds have been discontinued
743 We announced back in September 2018 that we would stop building for ARM,
744 but builds can be self-serviced by building from source.
746 To cross-compile from another host system, you can use this command:
748 % cargo build --target armv7-unknown-linux-gnueabihf
752 - Allow file uploads to hidden `<input type=file>` elements
754 Through a series of changes to the WebDriver specification,
755 geckodriver is now aligned with chromedriver’s behaviour that
756 allows interaction with hidden `<input type=file>` elements.
758 This allows WebDriver to be used with various popular web
759 frameworks that—through indirection—hides the file upload control
760 and invokes it through other means.
762 - Allow use of an indefinite script timeout for the [Set Timeouts]
763 command, thanks to reimu.
767 - Corrected `Content-Type` of response header to `utf-8` to fix
768 an HTTP/1.1 compatibility bug.
770 - Relaxed the deserialization of timeouts parameters to allow unknown
771 fields for the [Set Timeouts] command.
773 - Fixed a regression in the [Take Element Screenshot] to not screenshot
774 the viewport, but the requested element.
776 ## 0.23.0 (2018-10-03)
778 This release contains a number of fixes for regressions introduced
779 in 0.22.0, where we shipped a significant refactoring to the way
780 geckodriver internally dealt with JSON serialisation.
784 - The POST `/session/{session id}/element/{element id}/tap` endpoint
785 was removed, thanks to Kerem Kat.
789 - [webdriver crate] upgraded to 0.38.0.
793 - `desiredCapabilities` and `requiredCapabilities` are again
794 recognised on session creation
796 A regression in 0.22.0 caused geckodriver to recognise `desired`
797 and `required` instead of the correct `desiredCapabilities`
798 and `requiredCapabilities`. This will have caused significant
799 problems for users who relied on this legacy Selenium-style
800 session creation pattern.
802 Do however note that support for Selenium-styled new session
803 requests is temporary and that this will be removed sometime
804 before the 1.0 release.
806 - `duration` field made optional on pause actions
808 A regression in 0.22.0 caused the pause action primitive to
809 require a `duration` field. This has now been fixed so that
810 pauses in action chains can be achieved with the default duration.
812 - Log level formatted to expected Marionette input
814 A regression in 0.22.0 caused the log level to be improperly
815 formatted when using Firefox pre-releases. This is now fixed so
816 that the requested log level is correctly interpreted by Marionette.
818 - `temporary` field on addon installation made optional
820 A regression in 0.22.0 caused the `temporary` field for POST
821 `/session/{session id}/moz/addon/install` to be mandatory. This has
822 now been fixed so that an addon is installed permanently by default.
824 - SHA1s in version information uses limited number of characters
826 The SHA1 used in `--version` when building geckodriver from a
827 git repository is now limited to 12 characters, as it is when
828 building from an hg checkout. This ensures reproducible builds.
830 ## 0.22.0 (2018-09-15)
832 This release marks an important milestone on the path towards
833 a stable release of geckodriver. Large portions of geckodriver
834 and the [webdriver] library it is based on has been refactored to
835 accommodate using [serde] for JSON serialization.
837 We have also made great strides to improving [WebDriver conformance],
838 to the extent that geckodriver is now _almost_ entirely conforming
843 - Support for WebDriver web element-, web frame-, and web window
844 identifiers from Firefox.
846 - Added support for the non-configurable `setWindowRect` capability
849 This capability informs whether the attached browser supports
850 manipulating the window dimensions and position.
852 - A new extension capability `moz:geckodriverVersion` is returned
853 upon session creation.
857 - All JSON serialization and deserialisation has moved from
858 rustc_serialize to [serde].
860 - The HTTP status codes used for [script timeout] and [timeout]
861 errors has changed from Request Timeout (408) to Internal Server
862 Error (500) in order to not break HTTP/1.1 `Keep-Alive` support,
863 as HTTP clients interpret the old status code to mean they should
864 duplicate the request.
866 - The HTTP/1.1 `Keep-Alive` timeout for persistent connections has
867 been increased to 90 seconds.
869 - An [invalid session ID] error is now returned when there is no
872 - An [invalid argument] error is now returned when [Add Cookie]
873 is given invalid parameters.
875 - The handshake when geckodriver connects to Marionette has been
876 hardened by killing the Firefox process if it fails.
878 - The handshake read timeout has been reduced to 10 seconds instead
881 - The HTTP server geckodriver uses, [hyper], has been upgraded to
882 version 0.12, thanks to [Bastien Orivel].
884 - geckodriver version number is no longer logged on startup, as
885 the log level is not configured until a session is created.
887 The version number is available through `--version`, and now
888 also through a new `moz:geckodriverVersion` field in the matched
891 - [webdriver crate] upgraded to 0.37.0.
895 - Parsing [timeout object] values has been made WebDriver conforming,
896 by allowing floats as input.
898 - Implicit downloads of OpenH264 and Widevine plugins has been disabled.
900 - The commit hash and date displayed when invoking `--version`
901 is now well-formatted when built from an hg repository, thanks to
904 - Many documentation improvements, now published on
905 <https://firefox-source-docs.mozilla.org/testing/geckodriver/>.
907 ## 0.21.0 (2018-06-15)
909 Note that with this release of geckodriver the minimum recommended
910 Firefox and Selenium versions have changed:
912 - Firefox 57 (and greater)
913 - Selenium 3.11 (and greater)
917 - Support for the chrome element identifier from Firefox.
919 - The `unhandledPromptBehavior` capability now accepts `accept and
920 notify`, `dismiss and notify`, and `ignore` options.
922 Note that the unhandled prompt handler is not fully supported in
923 Firefox at the time of writing.
927 - Firefox will now be started with the `-foreground` and `-no-remote`
928 flags if they have not already been specified by the user in
929 [`moz:firefoxOptions`].
931 `-foreground` will ensure the application window gets focus when
932 Firefox is started, and `-no-remote` will prevent remote commands
933 to this instance of Firefox and also ensure we always start a new
936 - WebDriver commands that do not have a return value now correctly
937 return `{value: null}` instead of an empty dictionary.
939 - The HTTP server now accepts `Keep-Alive` connections.
941 - Firefox remote protocol command mappings updated.
943 All Marionette commands changed to make use of the `WebDriver:`
944 prefixes introduced with Firefox 56.
946 - Overhaul of Firefox preferences.
948 Already deprecated preferences in Firefox versions earlier than
951 - [webdriver crate] upgraded to 0.36.0.
955 - Force use of IPv4 network stack.
957 On certain system configurations, where `localhost` resolves to
958 an IPv6 address, geckodriver would attempt to connect to Firefox
959 on the wrong IP stack, causing the connection attempt to time out
960 after 60 seconds. We now ensure that geckodriver uses IPv4
961 consistently to both connect to Firefox and for allocating a free
964 - geckodriver failed to locate the correct Firefox binary if it was
965 found under a _firefox_ or _firefox-bin_ directory, depending on
966 the system, because it thought the parent directory was the
969 - On Unix systems (macOS, Linux), geckodriver falsely reported
970 non-executable files as valid binaries.
972 - When stdout and stderr is redirected by geckodriver, a bug prevented
973 the redirections from taking effect.
975 ## 0.20.1 (2018-04-06)
979 - Avoid attempting to kill Firefox process that has stopped.
981 With the change to allow Firefox enough time to shut down in
982 0.20.0, geckodriver started unconditionally killing the process
983 to reap its exit status. This caused geckodriver to inaccurately
984 report a successful Firefox shutdown as a failure.
986 The regression should not have caused any functional problems, but
987 the termination cause and the exit status are now reported correctly.
989 ## 0.20.0 (2018-03-08)
993 - New `--jsdebugger` flag to open the [Browser Toolbox] when Firefox
994 launches. This is useful for debugging Marionette internals.
996 - Introduced the temporary, boolean capability
997 `moz:useNonSpecCompliantPointerOrigin` to disable the WebDriver
998 conforming behavior of calculating the Pointer Origin.
1002 - HTTP status code for the [`StaleElementReference`] error changed
1003 from 400 (Bad Request) to 404 (Not Found).
1005 - Backtraces from geckodriver no longer substitute for missing
1006 Marionette stacktraces.
1008 - [webdriver crate] upgraded to 0.35.0.
1012 - The Firefox process is now given ample time to shut down, allowing
1013 enough time for the Firefox shutdown hang monitor to kick in.
1015 Firefox has an integrated background monitor that observes
1016 long-running threads during shutdown. These threads will be
1017 killed after 63 seconds in the event of a hang. To allow Firefox
1018 to shut down these threads on its own, geckodriver has to wait
1019 that time and some additional seconds.
1021 - Grapheme clusters are now accepted as input for keyboard input
1024 Input to the `value` field of the `keyDown` and `keyUp` action
1025 primitives used to only accept single characters, which means
1026 geckodriver would error when a valid grapheme cluster was sent in,
1027 for example with the tamil nadu character U+0BA8 U+0BBF.
1029 Thanks to Greg Fraley for fixing this bug.
1031 - Improved error messages for malformed capability values.
1033 ## 0.19.1 (2017-10-30)
1037 - Search suggestions in the location bar turned off as not to
1038 trigger network connections
1040 - Block addons incompatible with E10s
1044 - Marionette stacktraces are now correctly propagated
1046 - Some error messages have been clarified
1050 - Removed obsolete `socksUsername` and `socksPassword` proxy
1051 configuration keys because neither were picked up or recognised
1053 ## 0.19.0 (2017-09-16)
1055 Note that with geckodriver 0.19.0 the following versions are recommended:
1057 - Firefox 55.0 (and greater)
1058 - Selenium 3.5 (and greater)
1063 - POST `/session/{session id}/window/minimize` for the [Minimize Window]
1066 - Added preference `extensions.shield-recipe-client.api_url` to disable
1067 shield studies which could unexpectedly change the behavior of Firefox
1069 - Introduced the temporary, boolean capability `moz:webdriverClick` to
1070 enable the WebDriver conforming behavior of the [Element Click] command
1072 - Added crashreporter environment variables to better control the browser
1075 - Added preference `dom.file.createInChild` set to true to allow file
1076 object creation in content processes
1080 - Log all used application arguments and not only `-marionette`
1082 - Early abort connection attempts to Marionette if the Firefox process
1085 - Removed deprecated `socksProxyVersion` in favor of `socksVersion`
1087 - Removed `ftpProxyPort`, `httpProxyPort`, `sslProxyPort`, and
1088 `socksProxyPort` because _ports_ have to be set for `ftpProxy`,
1089 `httpProxy`, `sslProxy`, and `socksProxy` using ":<PORT>"
1091 - The `proxyType` `noproxy` has been replaced with `direct` in accordance
1092 with recent WebDriver specification changes
1094 - The [`WindowRectParameters`] have been updated to return signed 32-bit
1095 integers in accordance with the CSS and WebDriver specifications, and
1096 to be more liberal with the input types
1098 - Mapped the [`FullscreenWindow`] to the correct Marionette command
1100 - To make sure no browser process is left behind when the [`NewSession`]
1101 fails, the process is closed immediately now
1103 - `/moz/addon/install` command accepts an `addon` parameter, in lieu of
1104 `path`, containing an addon as a Base64 string (fixed by [Jason Juang])
1106 - [webdriver crate] upgraded to version 0.31.0
1108 - [mozrunner crate] upgraded to version 0.5.0
1112 - Removed the following obsolete preferences for Firefox:
1113 - `browser.safebrowsing.enabled`
1114 - `browser.safebrowsing.forbiddenURIs.enabled`
1115 - `marionette.defaultPrefs.port`
1116 - `marionette.logging`
1118 ## 0.18.0 (2017-07-10)
1122 - [`RectResponse`] permits returning floats for `width` and `height`
1125 - New type [`CookieResponse`] for the [`GetNamedCookie`] command returns
1126 a single cookie, as opposed to an array of a single cookie
1128 - To pick up a prepared profile from the filesystem, it is now possible
1129 to pass `["-profile", "/path/to/profile"]` in the `args` array on
1130 [`moz:firefoxOptions`]
1132 - geckodriver now recommends Firefox 53 and greater
1134 - Version information (`--version`) contains the hash from from the
1135 commit used to build geckodriver
1137 - geckodriver version logged on startup
1139 - [webdriver crate] upgraded to version 0.27.0
1141 - [mozrunner crate] upgraded to version 0.4.1
1145 - The [`SetTimeouts`] command maps to the Marionette `setTimeouts`
1146 command, which makes geckodriver compatible with Firefox 56 and greater
1148 - Linux x86 (i686-unknown-linux-musl) builds are fixed
1150 ## 0.17.0 (2017-06-09)
1155 - POST `/session/{session id}/window/fullscreen` to invoke the window
1156 manager-specific `full screen` operation
1157 - POST `/session/{session id}/moz/addon/install` to install an extension
1159 - POST `/session/{session id}/moz/addon/uninstall` to uninstall an
1160 extension (Gecko only)
1164 - Increasing the length of the `network.http.phishy-userpass-length`
1165 preference will cause Firefox to not prompt when navigating to a
1166 website with a username or password in the URL
1168 - Library dependencies upgraded to mozrunner 0.4 and mozprofile 0.3
1169 to allow overriding of preferences via capabilities if those have been
1170 already set in the profile
1172 - Library dependencies upgraded to mozversion 0.1.2 to only use the
1173 normalized path of the Firefox binary for version checks but not to
1174 actually start the browser, which broke several components in Firefox
1179 - The [SetWindowRect] command now returns the [WindowRectResponse]
1182 - Use ASCII versions of array symbols to properly display them in the
1183 Windows command prompt
1185 - Use [`SessionNotCreated`] error instead of [`UnknownError`] if there
1186 is no current session
1188 ## 0.16.1 (2017-04-26)
1192 - Read Firefox version number from stdout when failing
1193 to look for the application .ini file (fixes [Selenium
1194 #3884](https://github.com/SeleniumHQ/selenium/issues/3884))
1196 - Session is now ended when closing the last Firefox window (fixes
1197 [#613](https://github.com/mozilla/geckodriver/issues/613))
1199 ## 0.16.0 (2017-04-21)
1201 Note that geckodriver v0.16.0 is only compatible with Selenium 3.4
1206 - Support for WebDriver-conforming [New Session] negotiation, with
1207 `desiredCapabilities`/`requiredCapabilities` negotiation as fallback
1209 - Added two new endpoints:
1210 - GET `/session/{session id}/window/rect` for [Get Window Rect]
1211 - POST `/session/{session id}/window/rect` for [Set Window Rect]
1213 - Align errors with the [WebDriver errors]:
1214 - Introduces new errors [`ElementClickIntercepted`],
1215 [`ElementNotInteractable`], [`InvalidCoordinates`], [`NoSuchCookie`],
1216 [`UnableToCaptureScreen`], and [`UnknownCommand`]
1217 - Removes `ElementNotVisible` and `InvalidElementCoordinates` errors
1221 - Removed following list of unused endpoints:
1222 - GET `/session/{session id}/alert_text`
1223 - POST `/session/{session id}/alert_text`
1224 - POST `/session/{session id}/accept_alert`
1225 - POST `/session/{session id}/dismiss_alert`
1226 - GET `/session/{session id}/window_handle`
1227 - DELETE `/session/{session id}/window_handle`
1228 - POST `/session/{session id}/execute_async`
1229 - POST `/session/{session id}/execute`
1233 - [`SendKeysParameters`], which is used for the [Element Send Keys] and
1234 [Send Alert Text] commands, has been updated to take a string `text`
1237 - [`CookieResponse`] and [`CloseWindowResponse`] fixed to be properly
1238 wrapped in a `value` field, like other responses
1240 - Allow negative numbers for `x` and `y` fields in `pointerMove` action
1242 - Disable Flash and the plugin container in Firefox by
1243 default, which should help mitigate the “Plugin Container
1244 for Firefox has stopped working” problems [many users were
1245 reporting](https://github.com/mozilla/geckodriver/issues/225) when
1248 - Preferences passed in a profile now take precedence over
1249 set of default preferences defined by geckodriver (fixed by
1250 [Marc Fisher](https://github.com/DrMarcII))
1251 - The exceptions are the `marionette.port` and `marionette.log.level`
1252 preferences and their fallbacks, which are set unconditionally and
1253 cannot be overridden
1255 - Remove default preference that disables unsafe CPOW checks
1257 - WebDriver library updated to 0.25.2
1261 - Fix for the “corrupt deflate stream” exception that
1262 sometimes occurred when trying to write an empty profile by
1263 [@kirhgoph](https://github.com/kirhgoph)
1265 - Recognise `sslProxy` and `sslProxyPort` entries in the proxy
1266 configuration object (fixed by [Jason Juang])
1268 - Fix “`httpProxyPort` was not an integer” error (fixed by [Jason
1271 - Fix broken unmarshaling of _Get Timeouts_ response format from Firefox
1272 52 and earlier (fixed by [Jason Juang])
1274 - Allow preferences in [`moz:firefoxOptions`] to be both positive- and
1275 negative integers (fixed by [Jason Juang])
1277 - Allow IPv6 hostnames in the proxy configuration object
1279 - i686-unknown-linux-musl (Linux 32-bit) build fixed
1281 - Log messages from other Rust modules are now ignored
1283 - Improved log messages to the HTTPD
1285 ## 0.15.0 (2017-03-08)
1289 - Added routing and parsing for the [Get Timeouts] command
1293 - All HTTP responses are now wrapped in `{value: …}` objects per the
1294 WebDriver specification; this may likely require you to update your
1297 - Pointer move action’s `element` key changed to `origin`, which
1298 lets pointer actions originate within the context of the viewport,
1299 the pointer’s current position, or from an element
1301 - Now uses about:blank as the new tab document; this was previously
1302 disabled due to [bug 1333736](https://bugzil.la/1333736) in Marionette
1304 - WebDriver library updated to 0.23.0
1308 - Aligned the data structure accepted by the [Set Timeouts] command with
1309 the WebDriver specification
1311 ## 0.14.0 (2017-01-31)
1315 - Firefox process is now terminated and session ended when the last
1318 - WebDriver library updated to version 0.20.0
1322 - Stacktraces are now included when the error originates from within
1325 - HTTPD now returns correct response headers for `Content-Type` and
1326 `Cache-Control` thanks to [Mike Pennisi]
1328 ## 0.13.0 (2017-01-06)
1332 - When navigating to a document with an insecure- or otherwise invalid
1333 TLS certificate, an [insecure certificate] error will be returned
1335 - On macOS, deducing Firefox’ location on the system will look for
1336 _firefox-bin_ on the system path (`PATH` environmental variable) before
1337 looking in the applications folder
1339 - Window position coordinates are allowed to be negative numbers, to
1340 cater for maximised window positioning on Windows
1342 - WebDriver library updated to version 0.18.0
1346 - Check for single-character key codes in action sequences now counts
1347 characters instead of bytes
1349 ## 0.12.0 (2017-01-03)
1353 - Added [Take Element Screenshot] command
1355 - Added new [Status] command
1357 - Added routing for the [Get Timeouts] command, but it is not yet
1358 implemented in Marionette, and will return an _unsupported operation_
1361 - Implemented routing for [new actions API](Actions), but it too is not
1362 yet fully implemented in Marionette
1367 preferences](https://github.com/mozilla/geckodriver/commit/2bfdc3ec8151c427a6a75a6ba3ad203459540495)
1368 with those used in Mozilla automation
1370 - Default log level for debug builds of Firefox, which used to be `DEBUG`,
1371 changed to `INFO`-level
1373 - WebDriver library dependency upgraded to 0.17.1
1375 - Using _session not created_ error when failing to start session
1377 - geckodriver will exit with exit code 69 to indicate that the port
1382 - Improved logging when starting Firefox
1384 - Reverted to synchronous logging, which should address cases of
1385 inconsistent output when failing to bind to port
1387 - Clarified in README that geckodriver is not supported on Windows XP
1389 - Added documentation of supported capabilities to [README]
1391 - Included capabilities example in the [README]
1393 ## 0.11.1 (2016-10-10)
1397 - Version number in binary now reflects the release version
1399 ## 0.11.0 (2016-10-10)
1403 - Introduced continuous integration builds for Linux- and Windows 32-bit
1406 - Added commands for setting- and getting the window position
1408 - Added new extension commands for finding an element’s anonymous
1409 children and querying its attributes; accessible through the
1410 `/session/{sessionId}/moz/xbl/{elementId}/anonymous_children`
1411 to return all anonymous children and
1412 `/session/{sessionId}/moz/xbl/{elementId}/anonymous_by_attribute` to
1413 return an anonymous element by a name and attribute query
1415 - Introduced a [`moz:firefoxOptions`] capability to customise a Firefox
1418 - The `binary`, `args`, and `profile` entries on this dictionary
1419 is equivalent to the old `firefox_binary`, `firefox_args`, and
1420 `firefox_profile` capabilities, which have now all been removed
1422 - The `log` capability takes a dictionary such as `{log: "trace"}`
1423 to enable trace level verbosity in Gecko
1425 - The `prefs` capability lets you define Firefox preferences through
1428 - Re-introduced the `--webdriver-port` argument as a hidden alias to
1433 - `firefox_binary`, `firefox_args`, and `firefox_profile` capabilities
1434 removed in favour of the [`moz:firefoxOptions`] dictionary detailed above
1437 - Removed `--no-e10s` flag, and geckodriver will from now rely on the
1438 Firefox default multiprocessing settings (override using preferences)
1440 - Disable pop-up blocker in the default profile by @juangj
1442 - Changed Rust compiler version to 1.12 (beta)
1443 temporarily because of [trouble linking Musl
1444 binaries](https://github.com/rust-lang/rust/issues/34978)
1446 - Replaced _env_logger_ logging facility with the _slog_ package,
1447 causing the `RUST_LOG` environment variable to no longer have any affect
1449 - Updated the WebDriver Rust library to version 0.15
1453 - Corrected link to repository in Cargo metadata
1455 - Verbosity shorthand flag `-v[v]` now works again, following the
1456 replacement of the argument parsing library in the previous release
1458 - When the HTTPD fails to start, errors are propagated to the user
1460 - Disabled the additional welcome URL
1461 (`startup.homepage_welcome_url.additional`) so that officially branded
1462 Firefox builds do not start with two open tabs in fresh profiles
1464 - Disabled homepage override URL redirection on milestone upgrades,
1465 which means a tab with an upgrade notice is not displayed when launching
1466 a new Firefox version
1468 ## 0.10.0 (2016-08-02)
1472 - Use multi-process Firefox (e10s) by default, added flag `--no-e10s`
1473 to disable it and removed `--e10s` flag
1475 - Disable autofilling of forms by default by [Sven Jost]
1477 - Replace _argparse_ with _clap_ for arguments parsing
1481 - Attempt to deploy a single file from Travis when making a release
1483 - Grammar fix in [README]
1485 ## 0.9.0 (2016-06-30)
1489 - Add ability to use `firefox_binary` capability to define location of
1492 - Automatically detect the default Firefox path if one is not given
1494 - Cross-compile to Windows and ARMv7 (HF) in CI
1496 - Add Musl C library-backed static binaries in CI
1498 - Add `-v`, `-vv`, and `--log LEVEL` flags to increase Gecko verbosity
1500 - Add Get Element Property endpoint
1502 - Add new `--version` flag showing copying information and a link to
1507 - Now connects to a Marionette on a random port by default
1509 - Update webdriver-rust library dependency
1511 - Migrated to use Travis to deploy new releases
1513 - Reduced amount of logging
1515 - Introduced a changelog (this)
1517 ## 0.8.0 (2016-06-07)
1521 - Allow specifying array of arguments to the Firefox binary through the
1522 `firefox_args` capability
1524 - Pass parameters with [New Session] command
1528 - Change product name to _geckodriver_
1530 - Make README more exhaustive
1532 - Quit Firefox when deleting a session
1534 - Update webdriver-rust library
1536 - Update dependencies
1542 - FIx typo in error message for parsing errors
1544 ## 0.7.1 (2016-04-27)
1548 - Add command line flag for using e10s enabled Firefox by [Kalpesh
1551 - Allow providing custom profiles
1555 - Allow binding to an IPv6 address by [Jason Juang]
1557 - By default, connect to host-agnostic localhost by [Jason Juang]
1559 - Make `GeckoContextParameters` public
1561 - Update dependencies
1565 - Squash rustc 1.6 warnings by using `std::thread::sleep(dur: Duration)`
1567 ## 0.6.2 (2016-01-20)
1571 - Add LICENSE file from [Joshua Burning]
1573 - Schedule builds in CI on pushes and pull requests
1577 - Enable CPOWs in Marionette
1579 ## 0.6.0 (2016-01-12)
1583 - Add Get Page Source endpoint
1587 - Handle arrays being sent from Marionette
1589 - Correct build steps in [README]
1591 - Update what properties are read from errors sent by Marionette
1593 - Update dependencies
1595 ## 0.5.0 (2015-12-10)
1599 - Update argparse dependency to use Cargo
1601 - Update to the latest version of the Marionette wire protocol
1603 - Update to latest webdriver-rust library
1605 - Update dependencies
1607 ## 0.4.2 (2015-10-02)
1611 - Skip compiling optional items in hyper
1613 ## 0.4.1 (2015-10-02)
1617 - Update webdriver-rust library
1619 - Update dependencies
1621 ## 0.4.0 (2015-09-28)
1625 - Add command extensions for switching between content- and chrome
1628 - Add more documentation from [Vlad Filippov]
1632 - Update Cargo.lock with new dependencies for building
1634 - Update for protocol updates that flatten commands
1636 - Update to new protocol error handling
1638 - Update for Marionette protocol version 3 changes
1640 - Strip any leading and trailing `{}` from the `sessionId` Marionette
1643 - Update dependencies
1647 - Fix `GetCSSValue` message to send correct key `propertyName`
1649 - Fix example in documentation from @vladikoff
1651 ## 0.3.0 (2015-08-17)
1655 - Add support for finding elements in subtrees
1657 ## 0.2.0 (2015-05-20)
1661 - Extra debug messages
1663 - Add ability to set WebDriver port
1665 - Add support for getting the active element
1667 - Add support for `GetCookies` and `DeleteCookie`/`DeleteCookies`
1669 - Add preferences that switch off certain features not required for
1674 - Make failing to communicate with Firefox a fatal error that closes
1677 - Shut down session only when losing connection
1679 - Better handling of missing command line flags
1681 - Poll for connection every 100ms rather than every 100s
1683 - Switch to string-based error codes
1685 - Switch webdriver-rust library dependency to be pulled from git
1687 - Update dependencies
1691 - Handle null id for switching to frame more correctly
1693 ## 0.1.0 (2015-04-09)
1697 - Add proxy for converting WebDriver HTTP protocol to Marionette protocol
1699 - Add endpoints for modal dialogue support
1701 - Allow connecting to a running Firefox instance
1703 - Add explicit Cargo.lock file
1705 - Start Firefox when we get a [NewSession] command
1707 - Add flag parsing and address parsing
1709 - Add basic error handling
1713 - Update for Rust beta
1715 - Switch to new IO libraries
1717 - Pin webdriver-rust commit so we can upgrade rustc versions independently
1719 - Set preferences when starting Firefox
1721 - Improve some error messages
1723 - Re-enable environment variable based logging
1727 - Fix Get Element Rect command to return floats instead of integers
1729 - Fix passing of web elements to Switch To Frame command
1731 - Fix serialisation of script commands
1733 - Fix assorted bugs found by the Selenium test suite
1735 - Fix conversion of Find Element/Find Elements responses from Marionette
1738 - Fixed build by updating Cargo.lock with new dependencies for building
1740 - Squash compile warnings
1742 [README]: https://github.com/mozilla/geckodriver/blob/master/README.md
1743 [usage documentation]: <https://firefox-source-docs.mozilla.org/testing/geckodriver/Usage.html#Running-Firefox-in-an-container-based-package>
1744 [Browser Toolbox]: https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox
1745 [WebDriver conformance]: https://wpt.fyi/results/webdriver/tests?label=experimental
1746 [`webSocketUrl`]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/webSocketUrl
1747 [`moz:firefoxOptions`]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities/firefoxOptions
1748 [`moz:debuggerAddress`]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Capabilities.html#moz-debuggeraddress
1749 [Microsoft Visual Studio redistributable runtime]: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
1750 [GeckoView]: https://wiki.mozilla.org/Mobile/GeckoView
1751 [Fission]: https://wiki.mozilla.org/Project_Fission
1752 [Capabilities]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Capabilities.html
1753 [Flags]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html
1754 [`--allow-hosts`]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#code-allow-hosts-var-allow-hosts-var-code
1755 [`--allow-origins`]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#code-allow-origins-var-allow-origins-var-code
1756 [enable remote debugging on the Android device]: https://developers.google.com/web/tools/chrome-devtools/remote-debugging
1757 [macOS notarization]: https://firefox-source-docs.mozilla.org/testing/geckodriver/Notarization.html
1758 [Rust]: https://rustup.rs/
1759 [mozilla.org] https://www.mozilla.org/firefox/
1761 [`CloseWindowResponse`]: https://docs.rs/webdriver/newest/webdriver/response/struct.CloseWindowResponse.html
1762 [`CookieResponse`]: https://docs.rs/webdriver/newest/webdriver/response/struct.CookieResponse.html
1763 [`DeleteSession`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.DeleteSession
1764 [`ElementClickIntercepted`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.ElementClickIntercepted
1765 [`ElementNotInteractable`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.ElementNotInteractable
1766 [`FullscreenWindow`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.FullscreenWindow
1767 [`GetNamedCookie`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.GetNamedCookie
1768 [`GetWindowRect`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.GetWindowRect
1769 [`InvalidCoordinates`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.InvalidCoordinates
1770 [`MaximizeWindow`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.MaximizeWindow
1771 [`MinimizeWindow`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.MinimizeWindow
1772 [`NewSession`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.NewSession
1773 [`NoSuchCookie`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.NoSuchCookie
1774 [`RectResponse`]: https://docs.rs/webdriver/0.27.0/webdriver/response/struct.RectResponse.html
1775 [`SendKeysParameters`]: https://docs.rs/webdriver/newest/webdriver/command/struct.SendKeysParameters.html
1776 [`SessionNotCreated`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.SessionNotCreated
1777 [`SetTimeouts`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.SetTimeouts
1778 [`SetWindowRect`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.SetWindowRect
1779 [`StaleElementReference`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.StaleElementReference
1780 [`UnableToCaptureScreen`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnableToCaptureScreen
1781 [`UnknownCommand`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnknownCommand
1782 [`UnknownError`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnknownError
1783 [`WindowRectParameters`]: https://docs.rs/webdriver/newest/webdriver/command/struct.WindowRectParameters.html
1785 [Add Cookie]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Commands/AddCookie
1786 [invalid argument]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/InvalidArgument
1787 [invalid session id]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/InvalidSessionID
1788 [script timeout]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/ScriptTimeout
1789 [timeout]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Errors/Timeout
1790 [timeout object]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Timeouts
1791 [`platformName` capability]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Capabilities#platformName
1793 [hyper]: https://hyper.rs/
1794 [mozrunner crate]: https://crates.io/crates/mozrunner
1795 [serde]: https://serde.rs/
1796 [webdriver crate]: https://crates.io/crates/webdriver
1798 [Actions]: https://w3c.github.io/webdriver/webdriver-spec.html#actions
1799 [Element Click]: https://w3c.github.io/webdriver/webdriver-spec.html#element-click
1800 [Find Element From Shadow Root]: https://w3c.github.io/webdriver/#dfn-find-element-from-shadow-root
1801 [Find Elements From Shadow Root]: https://w3c.github.io/webdriver/#dfn-find-elements-from-shadow-root
1802 [Get Computed Label]: https://w3c.github.io/webdriver/#get-computed-label
1803 [Get Computed Role]: https://w3c.github.io/webdriver/#get-computed-role
1804 [Get Element Shadow Root]: https://w3c.github.io/webdriver/#get-element-shadow-root
1805 [Get Timeouts]: https://w3c.github.io/webdriver/webdriver-spec.html#get-timeouts
1806 [Get Window Rect]: https://w3c.github.io/webdriver/webdriver-spec.html#get-window-rect
1807 [insecure certificate]: https://w3c.github.io/webdriver/webdriver-spec.html#dfn-insecure-certificate
1808 [Minimize Window]: https://w3c.github.io/webdriver/webdriver-spec.html#minimize-window
1809 [New Session]: https://w3c.github.io/webdriver/webdriver-spec.html#new-session
1810 [New Window]: https://developer.mozilla.org/en-US/docs/Web/WebDriver/Commands/New_Window
1811 [Print]: https://w3c.github.io/webdriver/webdriver-spec.html#print
1812 [Send Alert Text]: https://w3c.github.io/webdriver/webdriver-spec.html#send-alert-text
1813 [Set Timeouts]: https://w3c.github.io/webdriver/webdriver-spec.html#set-timeouts
1814 [Set Window Rect]: https://w3c.github.io/webdriver/webdriver-spec.html#set-window-rect
1815 [Status]: https://w3c.github.io/webdriver/webdriver-spec.html#status
1816 [Take Element Screenshot]: https://w3c.github.io/webdriver/webdriver-spec.html#take-element-screenshot
1817 [WebDriver errors]: https://w3c.github.io/webdriver/webdriver-spec.html#handling-errors
1819 [Bastien Orivel]: https://github.com/Eijebong
1820 [David Burns]: https://github.com/AutomatedTester
1821 [Jason Juang]: https://github.com/juangj
1822 [Jeremy Lempereur]: https://github.com/o0Ignition0o
1823 [Kalpesh Krishna]: https://github.com/martiansideofthemoon
1824 [Kriti Singh]: https://github.com/kritisingh1
1825 [Mike Pennisi]: https://github.com/jugglinmike
1826 [Nupur Baghel]: https://github.com/nupurbaghel
1827 [Peter Major]: https://github.com/aldaris
1828 [Shivam Singhal]: https://github.com/championshuttler
1829 [Sven Jost]: https://github/mythsunwind
1830 [Vlad Filippov]: https://github.com/vladikoff
1831 [Olivier Tilloy]: https://github.com/oSoMoN