appium-test-support
A collection of test utility lib used across Appium packages.
Install
npm install appium-test-support --save-dev
Api
stubEnv
import { stubEnv } from ' appium-test-support ' ;
describe ( ' myTest ' , ( ) => {
stubEnv ( ) ;
it ( ' setting env variable ' , ( ) => {
process . env . ABC = ' abc ' ;
} ) ;
} ) ;
stubLog
import { stubLog } from ' appium-test-support ' ;
describe ( ' myTest ' , ( ) => {
let sandbox ;
it ( ' stubbing log ' , ( ) => {
let logStub = stubLog ( sandbox , log ) ;
log . info ( ' Hello World! ' ) ;
log . warn ( ` The ${ ' sun ' . yellow } is shining! ` ) ;
logStub . output . should . equals ( [
' info: Hello World! ' ,
` warn: The ${ ' sun ' . yellow } is shining! `
] . join ( ' \n ' ) ) ;
} ) ;
it ( ' stubbing log stripping colors ' , ( ) => {
let logStub = stubLog ( sandbox , log , { stripColors : true } ) ;
log . info ( ' Hello World! ' ) ;
log . warn ( ` The ${ ' sun ' . yellow } is shining! ` ) ;
logStub . output . should . equals ( [
' info: Hello World! ' ,
' warn: The sun is shining! '
] . join ( ' \n ' ) ) ;
} ) ;
} ) ;
withSandbox
Use when mixing up sinon apis (mocks, spies stubs).
import { withSandbox } from ' appium-test-support ' ;
let api = {
abc : ( ) => { return ' abc ' ; }
} ;
describe ( ' MyTest ' , withSandbox ( { mocks : { api } } , ( S ) => {
it ( ' stubbing api, stubbing dog ' , ( ) => {
S . mocks . api . expects ( ' abc ' ) . once ( ) . returns ( ' efg ' ) ;
let dog = { bark : ( ) => { return ' ouaf! ' ; } } ;
S . sandbox . stub ( dog , ' bark ' ) . returns ( ' miaou ' ) ;
api . abc ( ) . should . equal ( ' efg ' ) ;
dog . bark ( ) . should . equal ( ' miaou ' ) ;
S . verify ( ) ;
} ) ;
} ) ) ;
withMocks
When using mainly stubs.
import { withMocks } from ' appium-test-support ' ;
let api = {
abc : ( ) => { return ' abc ' ; }
} ;
describe ( ' withMocks ' , withMocks ( { api } , ( mocks ) => {
it ( ' should mock api ' , ( ) => {
mocks . api . expects ( ' abc ' ) . once ( ) . returns ( ' efg ' ) ;
api . abc ( ) . should . equal ( ' efg ' ) ;
mocks . verify ( ) ;
} ) ;
} ) ) ;
fakeTime
import { fakeTime } from ' appium-test-support ' ;
function doSomething ( ) {
return new B . Promise ( ( resolve ) => {
let ret = ' ' ;
function appendOneByOne ( ) {
if ( ret . length >= 10 ) {
return resolve ( ret ) ;
}
setTimeout ( ( ) => {
ret = ret + ret . length ;
appendOneByOne ( ) ;
} , 1000 ) ;
}
appendOneByOne ( ) ;
} ) ;
}
describe ( ' fakeTime ' , ( ) => {
let sandbox ;
it ( ' should fake time ' , async ( ) => {
let timeLord = fakeTime ( sandbox ) ;
let p = doSomething ( ) ;
timeLord . speedup ( 200 , 60 ) ;
( await p ) . should . equals ( ' 0123456789 ' ) ;
} ) ;
} ) ;
Travis Android Emu Setup
On Travis , setting up an emulator takes a lot of boilerplate.
While the configuration needs to be done on a case-by-case basis, the actual startup
can be scripted. Toward that, there are two scripts:
android-emu-travis-pre
- creates a device (configured with the environment variables
ANDROID_EMU_NAME
, ANDROID_EMU_TARGET
, and ANDROID_EMU_ABI
) and starts it
in the background
android-emu-travis-post
- waits for the device to be booted, and then goes
to its home screen
Watch
npm run watch
Test
npm test