WebDriver/Marionette: Difference between revisions

m (Marking both WebDriver compat and Fission projects as done)
 
(128 intermediate revisions by 6 users not shown)
Line 1: Line 1:
__TOC__
= What is Marionette? =


Note: This page is subject to change since Marionette is still being fleshed out.
For information on Marionette (Server, Python Client, Test Harness) and how to use it, please visit the [https://firefox-source-docs.mozilla.org/testing/marionette/index.html Marionette entry] on Firefox source docs.
* The above link also explains how to contribute to the Marionette code base. If you know JavaScript or Python, this is a good project to get involved in.
* We also have a rough [https://firefox-source-docs.mozilla.org/testing/marionette/NewContributors.html guide for new Marionette contributors], which introduces you to the Marionette Python Test Harness and to Mozilla development in general.


See also https://wiki.mozilla.org/Platform/JSDebugv2
= Projects =
* (done) [[WebDriver/Marionette/Fission|Fission]]
* (done) [[WebDriver/Marionette/Roadmap|WebDriver Compatibility]]


== Problem ==
= Bugs =
You can track our development by checking our [https://bugzilla.mozilla.org/buglist.cgi?product=Testing&component=Marionette&resolution=--- bugs], or contacting us over on the [https://chat.mozilla.org/#/room/#interop:mozilla.org #interop channel].


We need a new and unified way to be able to automate testing remotely on the B2G environment since we won't have the traditional browser environment to hook onto as we have done in the past, since we'll be booting directly into Gecko and will have to test functionality of the UI. We'll want to be able to test anything the user can do, from entering input, to gestures, etc.
; Bug queries
 
: [https://bugzilla.mozilla.org/buglist.cgi?product=Testing&component=Marionette&resolution=--- All open Marionette Bugs]
== Goals ==
: [https://bugzilla.mozilla.org/buglist.cgi?keywords=intermittent-failure%2C%20&component=Marionette&keywords_type=allwords&product=Testing&query_format=advanced&resolution=--- Intermittent Failures]
 
: [https://bugzilla.mozilla.org/buglist.cgi?product=Testing&resolution=---&component=Marionette&f1=bug_mentor&o1=isnotempty&list_id=15613109&query_format=advanced Mentored Bugs]
*We want to be able to send remote testing commands to the mobile device. We do not want to hardcode what kind of test actions are available, we want this to be a unified method of sending commands to the phone, and then having a dispatcher on the mobile side sending the commands to the appropriate listener or harness. This would make this solution robust and able to handle any other test harnesses the future may hold.
 
*The test actions requested should be in JSON form both for simplicity and eventual support of Selenium / [http://code.google.com/p/selenium/wiki/JsonWireProtocol#Commands WebDriver] commands. Selenium/WebDriver support would entice more developers to write tests due to its popularity and potential as a [http://www.w3.org/2011/08/browser-testing-charter testing standard].
 
*If we integrate with [https://wiki.mozilla.org/Platform/JSDebugv2 remote-debugger], we will be able to send both debugging commands and testing commands over the same socket connection.
 
*In the first pass, we want to be able to support [https://wiki.mozilla.org/Project_Eideticker Eideticker] on the remote device, so we should focus support for this project.
 
== Design and Implementation ==
 
Note: The current design grew from the ideas presented [[Auto-tools/Projects/JSON Protocol Testing|here]]. We selected [https://wiki.mozilla.org/Auto-tools/Projects/JSON_Protocol_Testing#Approach_3:_.22Surgical_Strike.22_aka_The_Debugger_Approach approach#3].
 
In order to send the JSON commands to the mobile device, we will use the already written socket listener/debugger, [https://wiki.mozilla.org/Platform/JSDebugv2 remote-debugger]. We can integrate our command dispatcher to the remote-debugger in the form of an [https://wiki.mozilla.org/Remote_Debugging_Protocol#Actors Actor]. This will allow us to connect to the socket and send debug or testing commands by addressing the JSON messages to the appropriate actor. The remote-debugger code is subject to change as it is not yet part of mozilla-central, so the design may change if anything radical happens.
 
Once the testing actor receives the testing command, it will dispatch it to the appropriate test harness or listener. For now, we plan to use the [https://developer.mozilla.org/en/nsIAccessible accessibility (a11y) interfaces] that is already supported by the platform. For actions not covered by a11y, like gestures, we should be able to fire off events directly to the mobile device's event queue.

Latest revision as of 20:23, 26 February 2021

What is Marionette?

For information on Marionette (Server, Python Client, Test Harness) and how to use it, please visit the Marionette entry on Firefox source docs.

  • The above link also explains how to contribute to the Marionette code base. If you know JavaScript or Python, this is a good project to get involved in.
  • We also have a rough guide for new Marionette contributors, which introduces you to the Marionette Python Test Harness and to Mozilla development in general.

Projects

Bugs

You can track our development by checking our bugs, or contacting us over on the #interop channel.

Bug queries
All open Marionette Bugs
Intermittent Failures
Mentored Bugs