Bug 1835529 [wpt PR 40276] - Update wpt metadata, a=testonly
[gecko.git] / testing / geckodriver / CHANGES.md
blob3fb016a82d32a97c1df1c39cbe5e65e1bce63073
1 <!-- markdownlint-disable MD024 -->
2 # Change log
4 All notable changes to this program are documented in this file.
6 ## 0.33.0  (2023-04-03, `a80e5fd61076`)
8 ### Known problems
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`
29 ### Added
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
39   element.
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.
51 ### Changed
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`)
58 ### Known problems
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`
79 ### Fixed
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`)
87 ### Known problems
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`
108 ### Fixed
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`)
118 ### Added
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.
132 ### Fixed
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
143   to e.g.:
145   ```bash
146   % mkdir $HOME/tmp
147   % geckodriver --profile-root=~/tmp
148   ```
150   or
152   ```bash
153   % TMPDIR=$HOME/tmp geckodriver
154   ```
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.
174 ### Changed
176 - Update dependencies
178 ## 0.31.0  (2022-04-11, `b617178ef491`)
180 ### Known problems
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.
203 ### Added
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.
231 ### Fixed
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`)
245 ### Security Fixes
247 - CVE-2021-4138
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.
256 ### Known problems
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.
272 - _Android:_
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`].
278 ### Added
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
293   Firefox 94.
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.
298 ### Fixed
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.
311 - Android
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
317     Firefox.
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`)
326 ### Known problems
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.
338 - _Android:_
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
343   Android.
345 ### Added
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.
356 ### Fixed
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 &#x2D;&#x2D;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 &#x2D;&#x2D;android-storage command line argument
369   anymore unless there is a strong reason. It will be removed in a future
370   release.
372 ## 0.29.0  (2021-01-14, `cf6956a5ec8e`)
374 ### Known problems
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.
386 - _Android:_
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
398   profile folder.
400 ### Added
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`)
413 ### Known problems
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.
425 - _Android:_
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
437   profile folder.
439 ### Added
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.
445 ### Fixed
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
451   now being reported.
453 - Version numbers for minor and extended support releases of Firefox are now parsed correctly.
455 ### Removed
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`)
462 ### Security Fixes
464 - CVE-2020-15660
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.
479 ### Known problems
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.
491 - _Android:_
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.
501 ### Added
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
518   the patch.
520 ### Fixed
522 - _Android:_
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
530     geckodriver.
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.
539 ### Known problems
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.
551 - _Windows:_
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.
557 - _Android:_
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.
567 ### Added
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
573   [GeckoView].
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
583   application.
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
591   system.
593 ### Changed
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.
601 ### Fixed
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.
624 ### Added
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
638   is as follows:
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.
663 ### Removed
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
670   WebDriver standard.
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.
680 ### Changed
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
695 ### Fixed
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
706   as well.
708 ## 0.24.0 (2019-01-28, `917474f3473e`)
710 ### Added
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
718   upload controls.
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
737   automation.
739 ### Removed
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
750 ### Changed
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.
765 ### Fixed
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.
782 ### Removed
784 - The POST `/session/{session id}/element/{element id}/tap` endpoint
785   was removed, thanks to Kerem Kat.
787 ### Changed
789 - [webdriver crate] upgraded to 0.38.0.
791 ### Fixed
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
839 to the standard.
841 ### Added
843 - Support for WebDriver web element-, web frame-, and web window
844   identifiers from Firefox.
846 - Added support for the non-configurable `setWindowRect` capability
847   from WebDriver.
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.
855 ### Changed
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
870   active session.
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
879   of waiting forever.
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
889   capabilities.
891 - [webdriver crate] upgraded to 0.37.0.
893 ### Fixed
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
902   [Jeremy Lempereur].
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)
915 ### Added
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.
925 ### Changed
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
934   instance.
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
949   57 got removed.
951 - [webdriver crate] upgraded to 0.36.0.
953 ### Fixed
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
962   port.
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
967   executable.
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)
977 ### Fixed
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)
991 ### Added
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.
1000 ### Changed
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.
1010 ### Fixed
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
1022   to actions.
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)
1035 ### Changed
1037 - Search suggestions in the location bar turned off as not to
1038   trigger network connections
1040 - Block addons incompatible with E10s
1042 ### Fixed
1044 - Marionette stacktraces are now correctly propagated
1046 - Some error messages have been clarified
1048 ### Removed
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)
1060 ### Added
1062 - Added endpoint:
1063   - POST `/session/{session id}/window/minimize` for the [Minimize Window]
1064     command
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
1073   in case of crashes
1075 - Added preference `dom.file.createInChild` set to true to allow file
1076   object creation in content processes
1078 ### Changed
1080 - Log all used application arguments and not only `-marionette`
1082 - Early abort connection attempts to Marionette if the Firefox process
1083   closed unexpectetly
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
1110 ### Removed
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)
1120 ### Changed
1122 - [`RectResponse`] permits returning floats for `width` and `height`
1123   fields
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
1143 ### Fixed
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)
1152 ### Added
1154 - Added endpoints:
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
1158     (Gecko only)
1159   - POST `/session/{session id}/moz/addon/uninstall` to uninstall an
1160     extension (Gecko only)
1162 ### Changed
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
1175   on Windows
1177 ### Fixed
1179 - The [SetWindowRect] command now returns the [WindowRectResponse]
1180   when it is done
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)
1190 ### Fixed
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
1202 and greater.
1204 ### Added
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
1219 ### Removed
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`
1231 ### Changed
1233 - [`SendKeysParameters`], which is used for the [Element Send Keys] and
1234   [Send Alert Text] commands, has been updated to take a string `text`
1235   field
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
1246   deleting a session
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
1259 ### Fixed
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
1269   Juang])
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)
1287 ### Added
1289 - Added routing and parsing for the [Get Timeouts] command
1291 ### Changed
1293 - All HTTP responses are now wrapped in `{value: …}` objects per the
1294   WebDriver specification; this may likely require you to update your
1295   client library
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
1306 ### Fixed
1308 - Aligned the data structure accepted by the [Set Timeouts] command with
1309   the WebDriver specification
1311 ## 0.14.0 (2017-01-31)
1313 ### Changed
1315 - Firefox process is now terminated and session ended when the last
1316   window is closed
1318 - WebDriver library updated to version 0.20.0
1320 ### Fixed
1322 - Stacktraces are now included when the error originates from within
1323   the Rust stack
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)
1330 ### Changed
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
1344 ### Fixed
1346 - Check for single-character key codes in action sequences now counts
1347   characters instead of bytes
1349 ## 0.12.0 (2017-01-03)
1351 ### Added
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_
1359   error until it is
1361 - Implemented routing for [new actions API](Actions), but it too is not
1362   yet fully implemented in Marionette
1364 ### Changed
1366 - [Synced Firefox
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
1378   is unavailable
1380 ### Fixed
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)
1395 ### Fixed
1397 - Version number in binary now reflects the release version
1399 ## 0.11.0 (2016-10-10)
1401 ### Added
1403 - Introduced continuous integration builds for Linux- and Windows 32-bit
1404   binaries
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
1416   session:
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
1426     capabilities
1428 - Re-introduced the `--webdriver-port` argument as a hidden alias to
1429   `--port`
1431 ### Changed
1433 - `firefox_binary`, `firefox_args`, and `firefox_profile` capabilities
1434   removed in favour of the [`moz:firefoxOptions`] dictionary detailed above
1435   and in the [README]
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
1451 ### Fixed
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)
1470 ### Changed
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
1479 ### Fixed
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)
1487 ### Added
1489 - Add ability to use `firefox_binary` capability to define location of
1490   Firefox to use
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
1503   the repository
1505 ### Changed
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)
1519 ### Added
1521 - Allow specifying array of arguments to the Firefox binary through the
1522   `firefox_args` capability
1524 - Pass parameters with [New Session] command
1526 ### Changed
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
1538 ### Fixed
1540 - Fix tests
1542 - FIx typo in error message for parsing errors
1544 ## 0.7.1 (2016-04-27)
1546 ### Added
1548 - Add command line flag for using e10s enabled Firefox by [Kalpesh
1549   Krishna]
1551 - Allow providing custom profiles
1553 ### Changed
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
1563 ### Fixed
1565 - Squash rustc 1.6 warnings by using `std::thread::sleep(dur: Duration)`
1567 ## 0.6.2 (2016-01-20)
1569 ### Added
1571 - Add LICENSE file from [Joshua Burning]
1573 - Schedule builds in CI on pushes and pull requests
1575 ### Changed
1577 - Enable CPOWs in Marionette
1579 ## 0.6.0 (2016-01-12)
1581 ### Added
1583 - Add Get Page Source endpoint
1585 ### Changed
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)
1597 ### Changed
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)
1609 ### Changed
1611 - Skip compiling optional items in hyper
1613 ## 0.4.1 (2015-10-02)
1615 ### Changed
1617 - Update webdriver-rust library
1619 - Update dependencies
1621 ## 0.4.0 (2015-09-28)
1623 ### Added
1625 - Add command extensions for switching between content- and chrome
1626   contexts
1628 - Add more documentation from [Vlad Filippov]
1630 ### Changed
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
1641   returns
1643 - Update dependencies
1645 ### Fixed
1647 - Fix `GetCSSValue` message to send correct key `propertyName`
1649 - Fix example in documentation from @vladikoff
1651 ## 0.3.0 (2015-08-17)
1653 ### Added
1655 - Add support for finding elements in subtrees
1657 ## 0.2.0 (2015-05-20)
1659 ### Added
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
1670   WebDriver tests
1672 ### Changed
1674 - Make failing to communicate with Firefox a fatal error that closes
1675   the session
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
1689 ### Fixed
1691 - Handle null id for switching to frame more correctly
1693 ## 0.1.0 (2015-04-09)
1695 ### Added
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
1711 ### Changed
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
1725 ### Fixed
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
1736   to WebDriver
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