We recommend TestCafé for your automated browser testing needs.
Driver for interfacing the Marionette testing protocol with Webdriver
status - build info mocked, os version glitchy
session - no desiredCapabilities or requiredCapabilities support yet
sessions - can only handle one session at the moment
session/:sessionId - doesn't handle non existing sessions correct (Need to set the statusCode)
session/:sessionId/timeouts - page timeout not yet available
session/:sessionId/timeouts/async_script
session/:sessionId/timeouts/implicit_wait
/session/:sessionId/window_handle
/session/:sessionId/window_handles
/session/:sessionId/execute_async - needs an wrapper function to be webdriver compliant
/session/:sessionId/screenshot
/session/:sessionId/ime/available_engines - mocked, only Touch engine available
/session/:sessionId/ime/active_engine - mocked, only Touch engine available
/session/:sessionId/ime/active_engine - mocked, only Touch engine available
/session/:sessionId/ime/deactivate - mocked, only Touch engine available -> need to deactivate touch input on FirefoxOS
/session/:sessionId/ime/activate - mocked, only Touch engine available -> need to activate touch input on FirefoxOS
session/:sessionId/frame/parent - Not sure if this works
POST /session/:sessionId/window
DELETE /session/:sessionId/window
POST /session/:sessionId/window/:windowHandle/maximize -> with workaround
GET /session/:sessionId/window/:windowHandle/size - only works for the current window handle atm.
POST /session/:sessionId/window/:windowHandle/size -> with workaround
GET /session/:sessionId/window/:windowHandle/position - only works for the current window handle atm.
GET /session/:sessionId/cookie
POST /session/:sessionId/cookie
DELETE /session/:sessionId/cookie
/session/:sessionId/element/active
/session/:sessionId/element/:id/element
/session/:sessionId/element/:id/elements
/session/:sessionId/element/:id/click
/session/:sessionId/element/:id/submit
/session/:sessionId/element/:id/text
/session/:sessionId/element/:id/value
/session/:sessionId/element/:id/clear
/session/:sessionId/element/:id/selected
/session/:sessionId/element/:id/enabled
/session/:sessionId/element/:id/attribute/:name
/session/:sessionId/element/:id/equals/:other
/session/:sessionId/element/:id/displayed
/session/:sessionId/element/:id/location
/session/:sessionId/element/:id/size
/session/:sessionId/element/:id/css/:propertyName
GET /session/:sessionId/orientation
/session/:sessionId/location -> needs some settings in the profile to get around security restriction (until then, it does only work when the location has been set before from Dalek)
/session/:sessionId/local_storage
/session/:sessionId/local_storage/key/:key
/session/:sessionId/local_storage/size
/session/:sessionId/session_storage
/session/:sessionId/session_storage/key/:key
/session/:sessionId/session_storage/size
/session/:sessionId/application_cache/status
POST /session/:sessionId/window/:windowHandle/position - probably solvable using a dynamically injected plugin -> http://mozilla-b2g.github.io/marionette-js-client/api-docs/classes/Marionette.Client.html#method_plugin
- probably solvable using a dynamically injected plugin -> http://mozilla-b2g.github.io/marionette-js-client/api-docs/classes/Marionette.Client.html#method_plugin
GET /session/:sessionId/cookie -> Probably Polyfillable using JavaScript (at least to some degree)
POST /session/:sessionId/cookie -> Probably Polyfillable using JavaScript (at least to some degree)
DELETE /session/:sessionId/cookie -> Probably Polyfillable using JavaScript (at least to some degree)
DELETE /session/:sessionId/cookie/:name -> Probably Polyfillable using JavaScript (at least to some degree)
GET session/:sessionId/element/:id -> not yet specified in the spec
GET /session/:sessionId/element/:id/location_in_view -> could be mocked by using clientside executed javascript
POST /session/:sessionId/orientation
GET /session/:sessionId/alert_text -> maybe override the alert() & dialog() methods in JS
POST /session/:sessionId/alert_text -> maybe override the alert() & dialog() methods in JS
POST /session/:sessionId/accept_alert -> maybe override the alert() & dialog() methods in JS
POST /session/:sessionId/dismiss_alert -> maybe override the alert() & dialog() methods in JS
POST /session/:sessionId/moveto -> No way to control the mouse cursor
POST /session/:sessionId/buttonup -> No way to control the mouse cursor
POST /session/:sessionId/buttondown -> No way to control the mouse cursor
POST /session/:sessionId/doubleclick -> No way to control the mouse cursor
POST /session/:sessionId/touch/click -> No way to control the mouse cursor
POST /session/:sessionId/touch/down -> No way to control the mouse cursor
POST /session/:sessionId/touch/up -> No way to control the mouse cursor
POST /session/:sessionId/touch/move -> No way to control the mouse cursor
POST /session/:sessionId/touch/scroll -> No way to control the mouse cursor
POST /session/:sessionId/touch/doubleclick -> No way to control the mouse cursor
POST /session/:sessionId/touch/longclick -> No way to control the mouse cursor
POST /session/:sessionId/touch/flick -> Probably pollyfillable with client side scrolling