Skip to content

Commit

Permalink
import of 0.20.0
Browse files Browse the repository at this point in the history
  • Loading branch information
andreastt committed Mar 12, 2018
1 parent 3a6e102 commit 3bf0bda
Show file tree
Hide file tree
Showing 16 changed files with 1,014 additions and 748 deletions.
1 change: 0 additions & 1 deletion .hgignore

This file was deleted.

56 changes: 53 additions & 3 deletions CHANGES.md
Expand Up @@ -3,6 +3,52 @@ Change log

All notable changes to this program is documented in this file.

0.20.0 (2018-03-08)
-------------------

### Added

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

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

### Changed

- HTTP status code for the [`StaleElementReference`] error changed
from 400 (Bad Request) to 404 (Not Found).

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

- [webdriver crate] upgraded to 0.35.0.

### Fixed

- The Firefox process is now given ample time to shut down, allowing
enough time for the Firefox shutdown hang monitor to kick in.

Firefox has an integrated background monitor that observes
long-running threads during shutdown. These threads will be
killed after 63 seconds in the event of a hang. To allow Firefox
to shut down these threads on its own, geckodriver has to wait
that time and some additional seconds.

- Grapheme clusters are now accepted as input for keyboard input
to actions.

Input to the `value` field of the `keyDown` and `keyUp` action
primitives used to only accept single characters, which means
geckodriver would error when a valid grapheme cluster was sent in,
for example with the tamil nadu character U+0BA8 U+0BBF.

Thanks to Greg Fraley for fixing this bug.

- Improved error messages for malformed capability values.


0.19.1 (2017-10-30)
-------------------

Expand All @@ -28,7 +74,7 @@ All notable changes to this program is documented in this file.
0.19.0 (2017-09-16)
-------------------

Note that with geckodriver v0.19.0 the following versions are recommended:
Note that with geckodriver 0.19.0 the following versions are recommended:
- Firefox 55.0 (and greater)
- Selenium 3.5 (and greater)

Expand Down Expand Up @@ -763,9 +809,11 @@ and greater.


[README]: https://github.com/mozilla/geckodriver/blob/master/README.md
[Browser Toolbox]: https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox

[`CloseWindowResponse`]: https://docs.rs/webdriver/newest/webdriver/response/struct.CloseWindowResponse.html
[`CookieResponse`]: https://docs.rs/webdriver/newest/webdriver/response/struct.CookieResponse.html
[`DeleteSession`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.DeleteSession
[`ElementClickIntercepted`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.ElementClickIntercepted
[`ElementNotInteractable`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.ElementNotInteractable
[`FullscreenWindow`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.FullscreenWindow
Expand All @@ -781,6 +829,7 @@ and greater.
[`SessionNotCreated`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.SessionNotCreated
[`SetTimeouts`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.SetTimeouts
[`SetWindowRect`]: https://docs.rs/webdriver/newest/webdriver/command/enum.WebDriverCommand.html#variant.SetWindowRect
[`StaleElementReference`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.StaleElementReference
[`UnableToCaptureScreen`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnableToCaptureScreen
[`UnknownCommand`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnknownCommand
[`UnknownError`]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html#variant.UnknownError
Expand All @@ -790,15 +839,16 @@ and greater.
[webdriver crate]: https://crates.io/crates/webdriver

[Actions]: https://w3c.github.io/webdriver/webdriver-spec.html#actions
[Delete Session]: https://w3c.github.io/webdriver/webdriver-spec.html#delete-session
[Element Click]: https://w3c.github.io/webdriver/webdriver-spec.html#element-click
[Get Timeouts]: https://w3c.github.io/webdriver/webdriver-spec.html#get-timeouts
[Set Timeouts]: https://w3c.github.io/webdriver/webdriver-spec.html#set-timeouts
[Get Window Rect]: https://w3c.github.io/webdriver/webdriver-spec.html#get-window-rect
[Set Window Rect]: https://w3c.github.io/webdriver/webdriver-spec.html#set-window-rect
[insecure certificate]: https://w3c.github.io/webdriver/webdriver-spec.html#dfn-insecure-certificate
[Minimize Window]: https://w3c.github.io/webdriver/webdriver-spec.html#minimize-window
[New Session]: https://w3c.github.io/webdriver/webdriver-spec.html#new-session
[Send Alert Text]: https://w3c.github.io/webdriver/webdriver-spec.html#send-alert-text
[Set Timeouts]: https://w3c.github.io/webdriver/webdriver-spec.html#set-timeouts
[Set Window Rect]: https://w3c.github.io/webdriver/webdriver-spec.html#set-window-rect
[Status]: https://w3c.github.io/webdriver/webdriver-spec.html#status
[Take Element Screenshot]: https://w3c.github.io/webdriver/webdriver-spec.html#take-element-screenshot
[WebDriver errors]: https://w3c.github.io/webdriver/webdriver-spec.html#handling-errors
Expand Down
52 changes: 24 additions & 28 deletions CONTRIBUTING.md
Expand Up @@ -14,17 +14,17 @@ parts it can be useful to know about:
to communicate with, instrument, and control Gecko. It is
built in to Firefox and written in [XPCOM] flavoured JavaScript.

* [_libwebdriver_] is a Rust crate providing interfaces, traits
* [_webdriver_] is a Rust crate providing interfaces, traits
and types, errors, type- and bounds checks, and JSON marshaling
for correctly parsing and emitting the [WebDriver protocol].

By participating in this project, you agree to abide by the Mozilla
[Community Participation Guidelines]. Here are some guidelines
for contributing high-quality and actionable bugs and code.

[_geckodriver_]: ./README.md
[_Marionette_]: ../marionette/README.md
[_libwebdriver_]: ../webdriver/README.md
[_geckodriver_]: https://firefox-source-docs.mozilla.org/testing/geckodriver/geckodriver/
[_Marionette_]: https://firefox-source-docs.mozilla.org/testing/marionette/marionette/
[_webdriver_]: https://crates.io/crates/webdriver
[WebDriver protocol]: https://w3c.github.io/webdriver/webdriver-spec.html#protocol
[XPCOM]: https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Guide
[Community Participation Guidelines]: https://www.mozilla.org/en-US/about/governance/policies/participation/
Expand Down Expand Up @@ -60,22 +60,20 @@ the affected system, reproduction steps, and logs.
geckodriver development follows a rolling release model as we don’t
release patches for older versions. It is therefore useful to use
the tip-of-tree geckodriver binary, or failing this, the latest
release when verifying the problem. Similarly, as noted in the
[README], geckodriver is only compatible with the current release
channel versions of Firefox, and it consequently does not help
to report bugs that affect outdated and unsupported Firefoxen.
Please always try to verify the issue in the latest Firefox Nightly
before you file your bug.
release when verifying the problem. geckodriver is only compatible
with the current release channel versions of Firefox, and it
consequently does not help to report bugs that affect outdated and
unsupported Firefoxen. Please always try to verify the issue in
the latest Firefox Nightly before you file your bug.

Once we are satisfied the issue raised is of sufficiently actionable
character, we will continue with triaging it and file a bug where it
is appropriate. Bugs specific to geckodriver will be filed in the
[`Testing :: geckodriver`] component in Bugzilla.

[mailing list]: #communication
[trace-level log]: doc/TraceLogs.md
[trace-level log]: https://firefox-source-docs.mozilla.org/testing/geckodriver/geckodriver/TraceLogs.html
[GitHub issue tracker]: https://github.com/mozilla/geckodriver/issues
[README]: ./README.md
[`Testing :: geckodriver`]: https://bugzilla.mozilla.org/buglist.cgi?component=geckodriver


Expand All @@ -89,7 +87,7 @@ where to start. Please don’t hesitate to [ask questions]!
The canonical source code repository of geckodriver is now
[mozilla-central]. We continue to use the [GitHub issue tracker] as
a triage ground before actual, actionable bugs and tasks are filed
in the [`Testing :: geckodriver`] component in Bugzilla. We also
in the [`Testing :: geckodriver`] component on Bugzilla. We also
have a curated set of [good first bugs] you may consider attempting first.

The purpose of this guide _is not_ to make sure you have a basic
Expand Down Expand Up @@ -126,20 +124,19 @@ When you have, you are ready to start off your first build:

% ./mach build testing/geckodriver

The geckodriver executable will appear in `${objdir}/dist/bin/geckodriver`
alongside firefox-bin. To run it you can use mach:
To run the executable from the objdir:

% ./mach geckodriver -- --version
0:00.27 /home/ato/src/gecko/obj-x86_64-pc-linux-gnu/dist/bin/geckodriver --version --binary /home/ato/src/gecko/obj-x86_64-pc-linux-gnu/dist/bin/firefox
geckodriver 0.19.0 (f3e939a81ee1169f9501ad96eb43bbf4bf4a1bde 2017-10-11)

[Rust]: https://www.rust-lang.org/
[webdriver crate]: ../webdriver/README.md
[webdriver crate]: https://crates.io/crates/webdriver
[commands]: https://docs.rs/webdriver/newest/webdriver/command/index.html
[responses]: https://docs.rs/webdriver/newest/webdriver/response/index.html
[errors]: https://docs.rs/webdriver/newest/webdriver/error/enum.ErrorStatus.html
[Marionette protocol]: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/Protocol
[Marionette]: ../marionette/README.md
[Marionette]: https://firefox-source-docs.mozilla.org/testing/marionette/marionette/index.html
[Firefox CI]: https://treeherder.mozilla.org/
[mozconfig]: https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Configuring_Build_Options

Expand All @@ -154,18 +151,17 @@ a set of conformance tests with other browser vendors through the
compatibility between _different_ WebDriver implementations for
different browsers.

In addition to the WPT tests, geckodriver and libwebdriver has
unit tests. At the moment there is no way to run Rust unit tests
through mach, although this is being worked on. For the moment
you need to kick off a separate build using [cargo]:
In addition to the WPT tests, geckodriver and webdriver have unit tests.
You can use a mach command to run them:

% cd testing/geckodriver
Compiling geckodriver v0.19.0 (file:///home/ato/src/gecko/testing/geckodriver)
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
% ./mach test testing/geckodriver

Because the unit tests _are not_ currently run in the [Firefox CI],
hopefully you will find that they all pass. (-:
The webdriver crate tests are unfortunately not yet runnable through mach.
Work to make this possible is tracked in [[https://bugzil.la/1424369]].
For the moment you must run them manually through `cargo`:

% cd testing/webdriver
% cargo test

To run the more extensive WPT tests you can use mach, but first
make sure you have a build of Firefox:
Expand Down Expand Up @@ -229,4 +225,4 @@ channel on irc.mozilla.org. Don’t ask if you can ask a question, just
ask, and please wait for an answer as we might not be in your timezone.

[subscribe]: https://lists.mozilla.org/listinfo/tools-marionette
[archive]: http://groups.google.com/group/mozilla.tools.marionette
[archive]: https://groups.google.com/group/mozilla.tools.marionette

0 comments on commit 3bf0bda

Please sign in to comment.