Whilst it is logically correct to use 408 for the
ErrorStatus::ScriptTimeout and ::Timeout errors, it
causes a collision with HTTP semantics implement in HTTP clients.
To support Keep-Alive we allow retries in HTTP clients and if a
client sees code 408 it thinks that the server has gone away and
retries the request.
This causes WebDriverCommand::ExecuteScript, ::Get, and ::Refresh
commands to be sent twice with some HTTP clients.
This is a backwards incompatible change to WebDriver in order to
not break HTTP/1.1 Keep-Alive.
The patch switches the serialization and deserialization of data
structures from the rustc_serialize crate to serde. By doing that
all the custom code for serialization and deserialization can be
removed in favor of serde's automatically derived serializers and
deserializers.
MozReview-Commit-ID: B8H3bZQKkJ7
--HG--
extra : rebase_source : 9f6a18d1f3be15237133ce7e9b0bd7f0d8126429
If a command is used before creating a new session, an
"invalid session id" error has to be returned by the
driver.
--HG--
extra : rebase_source : c45f33e9e39d876f5fd77561b57ab1fe664452d1
This patch adopts Logger#managerLevelFromPref from Log.jsm to set
and keep track of the Marionette logger's verbosity.
This has the advantage that we do not have to roll separate
implementations of Log for the child- and parent processes. It also
has the upside that the log level will be reflected when changed
at runtime through the use of an observer.
In order to facilitate the use of Log.jsm's Logger#manageLevelFromPref,
geckodriver needs to ensure that the input value for the
marionette.log.level preference conforms to the variants in the
Log.Level enum.
This patch implements the Into<T> conversion from geckodriver's
logging::Level into mozprofile::preferences::Pref by way of a new
function to_gecko(), that ensures the preference value is correctly
formatted.
Logger#manageLevelFromPref expects a string value such as "Info",
which exactly matches Log.Level's own properties. It is in other
words case sensitive, and this ensures that Marionette no longer
has to case convert the input data.
When compiling C/C++ sources via Rust build scripts there's no point in
enabling warnings-as-errors as all such code is third-party code.
MozReview-Commit-ID: 5pGH6w9ZE2I
--HG--
extra : rebase_source : ad36be6aed39d55055728f85b799adf5f0cf0f4b
geckodriver currently writes a legacy capabilities structure to the
WebDriver:NewSession command it uses on creating a new WebDriver
session which duplicates the top-level object:
{capabilities: {<caps>, desiredCapabilities: <caps>}}
Where caps can look something like:
{acceptInsecureCerts: true, pageLoadStrategy: "normal", ...}
Marionette has picked up the top-level "capabilities" key for a
very long time now, and there is no longer any need to duplicate
the body.
Marionette used to return a session UUID starting with "{" and
ending with "}" from the uuid-generator in Gecko. It has not done
this for a very long time rendering this geckodriver check needless.
Any info-level log entries emitted before session creation will
not be subject to the requested log level from moz:firefoxOptions.
This can confuse users, so instead of logging the geckodriver
version number on starting the program, we can return it later
during session creation as an extension capability.
Additionally this patch reduces the log level of the port geckodriver
listens to from info to debug for similar reasons.
The webdriver crate which is used by geckodriver has a path
dependency set. As such it needs to be run as part of the
geckodriver tests.
MozReview-Commit-ID: AAo9oLYapWp
--HG--
extra : rebase_source : 4bc926d4ec54a836b78b39b8d46429788918e62f
Upgrading the docker image from the unsupported Ubuntu 15.10 release
to the 16.04 LTS release let us build the win32 binary successfully.
DON'T BUILD
MozReview-Commit-ID: 9Z0MPsMqyTu
--HG--
rename : testing/geckodriver/i686-trusty/Dockerfile => testing/geckodriver/i686-xenial/Dockerfile
extra : rebase_source : 5595355b978e17c201b6de5ed0acbb35ffee6344
This makes geckodriver support WebDriver web elements, web frames,
and web windows.
Marionette sends back JSON Objects such as
{<element key>: <uuid>}
where the element key is one of the unique strings this patch adds
to geckodriver::marionette.
MozReview-Commit-ID: HegkGFqxkms
--HG--
extra : rebase_source : 88d51ac29b429124e2e321c0cccda949397fd307
The acceptInsecureCerts and pageLoadStrategy capabilities in the
WebDriver capabilities table are missing default values, which
causes the table columns to be misaligned.
MozReview-Commit-ID: 57p4YzxEmUh
--HG--
extra : rebase_source : d247f0d3596de400ff970d46434a04e3fbf2c909
The WebDriver implementation status report on MDN is out of date.
MozReview-Commit-ID: BWGvi86fvsO
--HG--
extra : rebase_source : f11dae28fb2aea0abfd49b7f521f58aa50cb059e
Bug 1452024 bumped the minimum required Selenium version to 3.11,
but did apparently not update the README.
MozReview-Commit-ID: Gsn6Kjg8EOr
--HG--
extra : rebase_source : e2415af109e1362ddecfd71ddfecacb7306ce8ba
Bug 1433574 removed the extensions.showMismatchUI preference from
geckodriver and the Python client. Because these tools are used
out-of-tree against all release channels of Firefox, the preference
cannot be removed before Firefox 61 becomes the minimum supported
version.
MozReview-Commit-ID: 2iD4PffP5Yx
--HG--
extra : rebase_source : e3eb9bd431901042183792495193911269e36736