JavaScript interface, and Java code, for interacting with Android UI Automator. The system allows ad hoc commands to be sent to the device, which are executed using Android's UIAutomator testing framework.
The system works by a com.android.uiautomator.testrunner.UiAutomatorTestCase
placed on the Android device, which opens a SocketServer on port 4724
. This server receives commands, converts them to appropriate Android UI Automator commands, and runs them in the context of the device.
The commands are sent through the JavaScript interface.
The module provides an AndroidBootstrap
class, which is instantiated with an instance of appium-adb, a system port (defaults to 4724
) and an optional web socket. The object then has four async
methods:
async start (appPackage, disableAndroidWatchers)
Uses Appium's UI Automator interface to install the test case, and sets up socket communication.
appPackage
- The package name for the application under test (e.g., 'com.example.android.apis').disableAndroidWatchers
- Whether or not to watch Android events. Defaults tofalse
.
import AndroidBootstrap from 'appium-android-bootstrap';
let androidBootstrap = new AndroidBootstrap();
await androidBootstrap.start('com.example.android.apis', false);
async shutdown ()
Shuts down all services. Stops UI Automator process on device, and kills communication.
await androidBootstrap.shutdown();
async sendCommand (type, extra, cmdTimeout)
Send a command to the device.
type
- The type of command being sent. The two valid types areaction
andshutdown
. These are exported as the enumerationCOMMAND_TYPES
extra
- A hash of extra parameters to send to the device.cmdTimeout
- The amount of time, inms
, to wait for the device to respond. Defaults to10000
.
let dataDir = await androidBootstrap.sendCommand(COMMAND_TYPES.ACTION, {action: 'getDataDir'});
// dataDir === '/data'
async sendAction (action, params)
Send an action
command to the device. Equavalent to sendCommand ('action', {action: action, params: params})
.
action
- The action to be sent.params
- Parameters for the action.
let dataDir = await androidBootstrap.sendAction('getDataDir');
// dataDir === '/data'
COMMAND_TYPES
An enumeration of the available types of commands, to be used for sendCommand
. The members are ACTION
, and SHUTDOWN
.
gulp watch
gulp once
gulp e2e-test