appium-test-support

1.3.3 • Public • Published

appium-test-support

A collection of test utility lib used across Appium packages.

Build Status

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 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

Readme

Keywords

Package Sidebar

Install

npm i appium-test-support

Weekly Downloads

65

Version

1.3.3

License

Apache-2.0

Unpacked Size

41.3 kB

Total Files

21

Last publish

Collaborators

  • jlipps
  • nick.mokhnach
  • kazucocoa
  • boneskull
  • imurchie
  • sebv