Skip to content

xt-test


xt-test command runs unit tests.


This command will setup extension testing environment that is pre-initialized with mocha, chai, and expect. nyc is used for computing code coverage. The following browser features are initialized for convenience: window, chrome, document. Window is setup using jsdom-global and chrome using sinon-chrome.

By default this command looks for unit tests in test/ directory, in any file ending with .js. Mocha will execute with babel, meaning you can use this test environment with modern JavaScript syntax.

You may extend this unit testing environment within an extension project. This is simply a base setup for running unit tests for web extensions. You may also create your very own test environment if this setup is not suitable for your project.

Commands

Braces { } indicate that the user must choose one (and only one) of the items inside the braces.

Run unit tests (default)

1
xt-test

Configure custom test directory path or match pattern

Defaults to ./test/**/*.js if not specified

1
xt-test {-p|--pattern} "./test/**/*.js"

Execute tests and keep watching changes

1
xt-test {-w|--watch}

Get help using this command

1
xt-test --help

Package.json scripts

After installing extension-cli, you can run these commands from a terminal using syntax npx xt-test.

You may also add an option to packages.json scripts section as shown below, then

  • run unit tests from terminal: npm run test
  • run unit tests and save coverage to file: npm run coverage.
1
2
3
4
"scripts":{
  "test": "xt-test",
  "coverage": "nyc --reporter=lcov npm run test"
}

Reporting Coverage

Coveralls

The general setup is:

  1. Install coveralls as a dev dependency at project level:

    1
    npm install coveralls --save-dev
    
  2. Run unit tests with coverage report during CI/CD workflow, then pipe the result to coveralls:

    1
    nyc --reporter=lcov npm run test | coveralls
    

If using Github actions, use Coveralls Github action to report results. Example:

1
2
3
4
5
6
7
- name: Execute unit tests w/ coverage
  run: nyc --reporter=lcov npm run test  # or: npm run coverage

- name: Report coverage
  uses: coverallsapp/github-action@master
  with:
    github-token: ${{ secrets.GITHUB_TOKEN }}