# appium-test-support **Repository Path**: mirrors_appium/appium-test-support ## Basic Information - **Project Name**: appium-test-support - **Description**: A collection of test utility lib used across Appium packages - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-24 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README appium-test-support =================== A collection of test utility lib used across Appium packages. [![Build Status](https://travis-ci.org/appium/appium-test-support.svg?branch=master)](https://travis-ci.org/appium/appium-test-support) ## Install ``` npm install appium-test-support --save-dev ``` ## Api ### stubEnv ```js import { stubEnv } from 'appium-test-support'; describe('myTest', () => { stubEnv(); it('setting env variable', () => { // Changes to process.env will stay local process.env.ABC = 'abc'; }); }); ``` ### stubLog ```js import { stubLog } from 'appium-test-support'; describe('myTest', () => { let sandbox; // configure sandbox here... 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). ```js 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. ```js 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 ```js 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; // create sandbox ... it('should fake time', async () => { let timeLord = fakeTime(sandbox); let p = doSomething(); timeLord.speedup(200, 60); // interval=200, times=60 (await p).should.equals('0123456789'); }); }); ``` ## Travis Android Emu Setup On [Travis](https://travis-ci.org/), 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 ```