/firefoxdriver

[unmaintained] Driver for interfacing the Marionette testing protocol with Webdriver

Primary LanguageJavaScriptMIT LicenseMIT

No Maintenance Intended

DalekJS is not maintained any longer 😢

We recommend TestCafé for your automated browser testing needs.


firefoxdriver

Driver for interfacing the Marionette testing protocol with Webdriver

Implemented Methods:

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

GET /session/:sessionId/url

POST /session/:sessionId/url

/session/:sessionId/forward

/session/:sessionId/back

/session/:sessionId/refresh

/session/:sessionId/execute

/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

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/source

/session/:sessionId/title

/session/:sessionId/element

/session/:sessionId/elements

/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/keys

/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/log

/session/:sessionId/log/types

/session/:sessionId/application_cache/status

Unsupported

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

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