3.0.51 • Published 8 months ago

@appium/test-support v3.0.51

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
8 months 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.51

8 months ago

3.0.50

8 months ago

3.0.49

9 months ago

3.0.48

9 months ago

3.0.45

12 months ago

3.0.46

11 months ago

3.0.43

1 year ago

3.0.44

12 months ago

3.0.47

10 months ago

3.0.41

1 year ago

3.0.42

1 year ago

3.0.38

1 year ago

3.0.39

1 year ago

3.0.36

1 year ago

3.0.37

1 year ago

3.0.35

1 year ago

3.0.34

1 year ago

3.0.33

1 year ago

3.0.32

1 year ago

3.0.31

1 year ago

3.0.30

1 year ago

3.0.29

1 year ago

3.0.28

2 years ago

3.0.27

2 years ago

3.0.23

2 years ago

3.0.24

2 years ago

3.0.21

2 years ago

3.0.22

2 years ago

3.0.25

2 years ago

3.0.26

2 years ago

3.0.20

2 years ago

3.0.19

2 years ago

3.0.18

2 years ago

3.0.16

2 years ago

3.0.17

2 years ago

3.0.13

2 years ago

3.0.14

2 years ago

3.0.15

2 years ago

3.0.12

2 years ago

3.0.9

2 years ago

3.0.10

2 years ago

3.0.11

2 years ago

3.0.8

2 years ago

3.0.7

2 years ago

3.0.6

2 years ago

3.0.5

2 years ago

2.0.2

3 years ago

2.0.1

3 years ago

3.0.1

2 years ago

3.0.0

2 years ago

2.0.0

3 years ago

1.5.0

3 years ago

1.4.1

3 years ago

1.4.0

3 years ago

1.3.20

3 years ago

1.3.21

3 years ago

1.3.22

3 years ago

1.3.19

3 years ago

1.3.13

3 years ago

1.3.14

3 years ago

1.3.12

3 years ago

1.3.17

3 years ago

1.3.18

3 years ago

1.3.15

3 years ago

1.3.16

3 years ago

1.3.10

3 years ago

1.3.11

3 years ago

1.3.9

4 years ago

1.3.8

4 years ago

1.3.7

4 years ago

1.3.6

4 years ago

1.3.4

4 years ago

1.3.3

4 years ago