appium-test-support
v1.3.3
Published
A collection of test utilities used across Appium packages
Downloads
127
Keywords
Readme
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', () => {
// Changes to process.env will stay local
process.env.ABC = 'abc';
});
});
stubLog
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).
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;
// 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, 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 variablesANDROID_EMU_NAME
,ANDROID_EMU_TARGET
, andANDROID_EMU_ABI
) and starts it in the backgroundandroid-emu-travis-post
- waits for the device to be booted, and then goes to its home screen
Watch
npm run watch
Test
npm test