Package Exports
- appium-test-support
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (appium-test-support) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
appium-test-support
A collection of test utility lib used across Appium packages.
Install
npm install appium-test-support --save-devApi
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 watchTest
npm test