3.0.35 • Published 20 days ago

@appium/test-support v3.0.35

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
20 days ago

@appium/test-support

A collection of test utility libs used across Appium packages

NPM version Downloads

Installation

npm install @appium/test-support --save-dev

Usage

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

License

Apache-2.0

3.0.35

20 days ago

3.0.34

25 days ago

3.0.33

1 month ago

3.0.32

3 months ago

3.0.31

3 months ago

3.0.30

4 months ago

3.0.29

5 months ago

3.0.28

5 months ago

3.0.27

6 months ago

3.0.23

9 months ago

3.0.24

9 months ago

3.0.21

10 months ago

3.0.22

9 months ago

3.0.25

7 months ago

3.0.26

7 months ago

3.0.20

10 months ago

3.0.19

11 months ago

3.0.18

11 months ago

3.0.16

11 months ago

3.0.17

11 months ago

3.0.13

1 year ago

3.0.14

12 months ago

3.0.15

12 months ago

3.0.12

1 year ago

3.0.9

1 year ago

3.0.10

1 year ago

3.0.11

1 year ago

3.0.8

1 year ago

3.0.7

1 year ago

3.0.6

1 year ago

3.0.5

1 year ago

2.0.2

2 years ago

2.0.1

2 years ago

3.0.1

1 year ago

3.0.0

1 year ago

2.0.0

2 years ago

1.5.0

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.3.20

2 years ago

1.3.21

2 years ago

1.3.22

2 years ago

1.3.19

2 years ago

1.3.13

2 years ago

1.3.14

2 years ago

1.3.12

2 years ago

1.3.17

2 years ago

1.3.18

2 years ago

1.3.15

2 years ago

1.3.16

2 years ago

1.3.10

2 years ago

1.3.11

2 years ago

1.3.9

2 years ago

1.3.8

2 years ago

1.3.7

3 years ago

1.3.6

3 years ago

1.3.4

3 years ago

1.3.3

3 years ago