* Update hash * Add validateCapabilities and parseCapabilities * Added merge capabilities * Moved capabilities into it's own file * Added capabilities as a possible required param * Can pass desiredCapabilities or capabilities into createSession * Remove 'required' desiredCapabilities * desiredCapabilities isn't required any more because we can provide capabilities as well * Will need to update validation logic in 'driver.createSession' to do the validation there instead * Code cleanup * Skip presence constraint in parseCapabilities * We don't need to check that items are present until after we've formed the matched capabilities * Added validation function to routes * Function 'validate' takes params as an arg and then returns a message if the validation fails * Uses this to validate that either "capabilities" or "desiredCapabilities" was provided * Renamed capabilities to caps * Move caps required validator from process to parse * Removed InvalidParametersError * Update BadParametersError so that if a message is added as the 3rd argument it shows a different error message * Made validation re-usable
mobile-json-wire-protocol
An abstraction of the Mobile JSON Wire Protocol (spec) with Appium extensions (as specified here).
Endpoints in the protocol
The Mobile JSON Wire Protocol package gives access to a number of endpoints documented here.
MobileJsonWireProtocol
The basic class, subclassed by drivers that will use the protocol.
routeConfiguringFunction (driver)
This function gives drivers access to the protocol routes. It returns a function that itself will take an Express application.
isSessionCommand (command)
Checks if the command needs to have a session associated with it.
ALL_COMMANDS
An array of all the commands that will be dispatched to by the Mobile JSON Wire Proxy endpoints.
NO_SESSION_ID_COMMANDS
An array of commands that do not need a session associated with them.
Errors
This package exports a number of classes and methods related to Selenium error handling. There are error classes for each Selenium error type (see here, as well as the context errors in the mobile spec). The list of errors, and their meanings, can be found here.
There are, in addition, two helper methods for dealing with errors
isErrorType (err, type)
- checks if the
errobject is a Mobile JSON Wire Protocol error of a particular type - arguments
err- the error object to testtype- the error class to test against
- usage
import { errors, isErrorType } from 'mobile-json-wire-protocol'; try { // do some stuff... } catch (err) { if (isErrorType(err, errors.InvalidCookieDomainError)) { // process... } }
errorFromCode (code, message)
- retrieve the appropriate error for an error code, with the supplied message.
- arguments
code- the integer error code for a Mobile JSON Wire Protocol errormessage- the message to be encapsulated in the error
- usage
import { errors, errorFromCode } from 'mobile-json-wire-protocol'; let error = errorFromCode(6, 'an error has occurred'); console.log(error instanceof errors.NoSuchDriverError); // => true console.log(error.message === 'an error has occurred'); // => true