Détail du package

ember-exam

ember-cli228.1kMIT9.1.0

Run your tests with randomization, splitting, and parallelization for beautiful tests.

ember-addon

readme

Ember Exam

Build Status NPM Version Ember Observer Score

Ember Exam is an addon to allow you more control over how you run your tests when used in conjunction with ember-qunit. It provides the ability to randomize, split, parallelize, and load-balance your test suite by adding a more robust CLI command.

It started as a way to help reduce flaky tests and encourage healthy test driven development. It's like Head & Shoulders for your tests!

Introduction to Ember Exam

The documentation website contains examples and API information.

Table of Contents

Compatibility

  • Ember.js v4.8 or above
  • Ember CLI v4.8 or above
  • Node.js v18 or above

Installation

Installation is as easy as running:

$ npm install --save-dev ember-exam

How To Use

Using Ember Exam is fairly straightforward as it extends directly from the default Ember-CLI test command. So, by default, it will work exactly the same as ember test.

$ ember exam
$ ember exam --filter='acceptance'
$ ember exam --server
$ ember exam --load-balance --parallel=1

For more information and examples, please visit the documentation website.

# A value of filter is acceptance
$ ember exam --filter 'acceptance'

# A value of parallel is 2
$ ember exam --load-balance --parallel=2 --server

# If a `=` is not used to pass a value to an option that requires a value, it will take anything passed after a space as it's value
# In this instance, the value of parallel is --server
$ ember exam --load-balance --parallel --server

The idea is that you can replace ember test with ember exam and never look back.

To get the unique features of Ember Exam (described in-depth below), you will need to replace the use of start() from ember-qunit in test-helper.js with start() from ember-exam:

// test-helper.js
import { start } from 'ember-exam/test-support';

// Options passed to `start` will be passed-through to ember-qunit
start();

How to use with Vite

All of the above applies, but we need to tell vite to build the app before telling ember/exam to run tests on that output.

Update your test-helper.js or test-helper.ts, to have add the ember-exam start function:

  // ...
  import { setApplication } from '@ember/test-helpers';
  import { setup } from 'qunit-dom';
- import { start as qunitStart, setupEmberOnerrorValidation } from 'ember-qunit';
+ import { setupEmberOnerrorValidation } from 'ember-qunit';
+ import { start as startEmberExam } from 'ember-exam/test-support';

  export function start() {
    setApplication(Application.create(config.APP));

    setup(QUnit.assert);
    setupEmberOnerrorValidation();

-   qunitStart();
+   // Options passed to `start` will be passed-through to ember-qunit
+   startEmberExam();
  }

Testing development:

NODE_ENV=development vite build --mode test
ember exam --path dist

Testing production:

vite build --mode test
ember exam --path dist

Version < 3.0.0

Prior to 2.1.0, Ember Exam must be loaded by importing addon-test-support/load.js and calling loadEmberExam:

// test-helper.js
import loadEmberExam from 'ember-exam/test-support/load';

loadEmberExam();

Randomization

$ ember exam --random[=<seed>]

The random option allows you to randomize the order in which your tests run. You can optionally specify a "seed" value from which to randomize your tests in order to reproduce results. The seed can be any string value. Regardless of whether you specify a seed or not, Ember Exam will log the seed value used for the randomization at the beginning of the test run:

$ ember exam --random
$ Randomizing tests with seed: liv5d1ixkco6qlatl6o7mbo6r

$ ember exam --random=this_is1337
$ Randomizing tests with seed: this_is1337

If you use random without specifying a seed, it must be the last argument you pass. Otherwise, Ember Exam will attempt to interpret any following arguments as the seed value. In other words:

# don't do this
ember exam --random --split=2
Randomizing tests with seed: --split=2 # this is not what we wanted

# do this instead
ember exam --split=2 --random
Randomizing tests with seed: hwr74nkk55vzpvi

_Note: You must be using QUnit version 1.23.0 or greater for this feature to work properly.

Randomization Iterator

Randomization can be helpful for identifying non-atomic or order-dependent tests. To that end, Ember Exam provides an iterator to make it easy to test lots of variations in your test suite order quickly.

$ ember exam:iterate <num>

This command will build your application once, and then run the test suite with the random option for the specified number of iterations. You can optionally skip the build by using a previous build via the path option:

$ ember exam:iterate <num> --path <build-path>

Finally, you can pass additional options through to the exam command used to run the tests via the options flag:

$ ember exam:iterate <num> --options <options>

The options should be a string matching what you would use via the CLI.

Generating Module Metadata File For Test Execution

$ ember exam --write-module-metadata-file
$ ember exam --wmmf

The --write-module-metadata-file, wmmf as an alias, allows you to generate a module metadata file after a test run. The file provides metadata about the test modules executed.

It creates a json file, module-metadata-<timestamp>.json, which contains an array of elements representing metadata of modules executed by sorted by ascending order:

[
  {
    "moduleName": "Module-name",
    "total": "Total number of tests in the module",
    "passed": "A number of passed tests in the module",
    "failed": "A number of failed tests in the module",
    "skipped": "A number of skipped tests in the module",
    "duration": "ms in Total duration to execute the module",
    "failedTests": "A list of failed tests"
  }
]

and it looks something like below:

[
  {
    "moduleName": "Slowest-module",
    "total": 12,
    "passed": 9,
    "failed": 1,
    "skipped": 2,
    "duration": 153,
    "failedTests": ["failed-test-1"]
  },
  {
    "moduleName": "Fastest-module",
    "total": 2,
    "passed": 1,
    "failed": 0,
    "skipped": 0,
    "duration": 123,
    "failedTests": []
  }
]

Splitting

$ ember exam --split=<num>

The split option allows you to specify the number of partitions greater than one to spread your tests across. Ember Exam will then proceed to run the first batch of tests.

$ ember exam --split=<num> --partition=<num>

The partition option allows you to specify which test group to run after using the split option. It is one-indexed, so if you specify a split of 3, the last group you could run is 3 as well. You can also run multiple partitions, e.g.:

$ ember exam --split=4 --partition=1 --partition=2

_Note: Ember Exam splits tests by modifying the ember-qunit's TestLoader to bucket each test file into a partition, where each partition has an even number of test files. This makes it possible to have unbalanced partitions. To run your tests with balanced partitions, consider using --load-balance. For more info, see Test Load Balancing.

Split Test Parallelization

$ ember exam --split=<num> --parallel

The parallel option allows you to run your split tests across multiple test pages in parallel in Testem. It will use a separate browser instance for each group of tests. So, if you specify a split of 3, then 3 browser instances will be spawned with the output looking something like:

ok 1 PhantomJS 1.9 - Exam Partition 1 - some test
ok 2 PhantomJS 1.9 - Exam Partition 3 - some other other test
ok 3 PhantomJS 1.9 - Exam Partition 2 - some other test

You can also combine the parallel option with the partition option to split tests, and then recombine partitions into parallel runs. This would, for example, allow you to run tests in multiple CI containers and have each CI container parallelize its list of tests.

For example, if you wanted to run your tests across two containers, but have one of them run twice as many tests as the other, and run them in parallel, you could do this:

# container 1
ember exam --split=3 --partition=1,2 --parallel
# container 2
ember exam --split=3 --partition=3 --parallel

Note 1: _Ember Exam will respect the parallel setting of your Testem config file while running tests in parallel. The default value for parallel in Testem is 1, which means you'll need a non-default value to actually see parallel behavior._

Note 2: _Ember Exam sets process.env.EMBER_EXAM_SPLIT_COUNT for convenience. You can use this in your Testem file._

Note 3: You must be using Testem version 1.5.0 or greater for this feature to work properly.

Filtering

Ember Exam provides options to filter test suites by two types - module path and test file path.

$ ember exam --module-path=<module-path>

The module-path option allows you to filter module paths by a given value. Module paths are mapped by test files and they are generated during ember build. After the build, tests.js file is created and it resides under <build-directory>/assets. The file is combined of all tests in an application and it has a form of define("<module-path>", others...

The value for module-path can have either string or regular expression, for instance:

# When module path value is string. This will run all modules which match with the passed value
$ ember exam --module-path='dummy/tests/helpers/module-for-acceptance'

# When module path value is regex. This will run all modules which have `dummy` in it
$ ember exam --module-path='!/dummy/'

The file-path option is to filter tests by test file path. The test file path is a location of the test file in a file system. You can specify file-path to a location of specific test file path or you can use wildcards in paths to target multiple test files.

# This will run tests that are defined in `/my-application/tests/unit/my-test.js`
$ ember exam --file-path='/my-application/tests/unit/my-test.js'

# This will run all test files that are under `/my-application/tests/unit/`
$ ember exam --file-path='/my-application/tests/unit/*.js'

Test Load Balancing

$ ember exam --parallel=<num> --load-balance

The load-balance option allows you to load balance test files against multiple browsers. It will order the test files by test types, e.g. acceptance | integration | unit, and load balance the ordered test files between the browsers dynamically rather than statically. Note: parallel must be used along with load-balance to specify a number of browser(s)

The load-balance option was added to version 1.1 to address execution performance when running against a large test suite.

Web browsers and the testem server communicate via promise in order to send and receive test file. The promise timeout value is set to 15 seconds, and is configurable by adding asyncTimeout=[timeout] as a querystring param in the test URL or adding to the test_page option in the testem config. For example, if you specify load-balance and parallel equals 3, then three browser instances will be created and the output will look something like:

# ember exam --parallel=3 --load-balance
ok 1 Chrome 66.0 - Browser Id 1 - some test
ok 2 Chrome 66.0 - Browser Id 2 - some another test
ok 3 Chrome 66.0 - Browser Id 3 - some the other test

You can also specify the split and partition options with load-balance to load a portion of test modules on multiple CI containers.

$ ember exam --split=<num> --partition=<num> --parallel=<num> --load-balance

This command will split test files and load-balance tests from the specified partition across the browsers. For example ember exam --split=2 --partition=1 --parallel=3 --load-balance, the complete list of test files are split into two halves. With the first half of the list load balanced against three browsers. The output will look something like below:

# ember exam --split=2 --partition=1 --parallel=3 --load-balance
ok 1 Chrome 66.0 - Exam Partition 1 - browser Id 1 - some test
ok 2 Chrome 66.0 - Exam Partition 1 - browser Id 2 - another test
ok 3 Chrome 66.0 - Exam Partition 1 - browser Id 3 - some the other test

Important information on Load Balancing

  1. The --load-balance option is currently only supported in CI mode and for that reason no-launch cannot be used with load-balance.
  2. You must be using ember-cli version 3.2.0 or greater for load balancing and test failure reproduction features to work properly.
  3. You must be using ember-qunit version 4.1.1 or greater for this feature to work properly.
  4. You must be using qunit version 2.13.0 or greater for this feature to work properly.
Test Failure Reproduction

Due to the dynamic nature of the load-balance option, test file execution order can vary between runs. In order to reproduce a past test execution, the execution must be recorded via passing --write-execution-file or --wef, which allows generating a JSON file that enables rerunning the past test execution. The option is only allowed when load-balance is passed.

# The command will load in test balanced mode with <num> of browser(s). After the test suite execution, it will generate a test-execution json file.
$ ember exam --parallel=<num> --load-balance --wef
$ ember exam --parallel=<num> --load-balance --write-execution-file

The file is stored in the root directory and the naming structure is test-execution-<timestamp>.json. To replay the test execution for particular browser(s), do the following:

# The command will read a test execution file specified for `replay-execution` and execute a browser Id(s) from `replay-browser`
$ ember exam --replay-execution=[string] --replay-browser=[num]

replay-execution allows you to specify a path to the json file to run execution against and replay-browser is to specify browser ID(s) to execute.

# The command will read test-execution-000000.json and load the list of modules mapped to browserId 1
$ ember exam --replay-execution=test-execution-000000.json --replay-browser=1

The above command will read test-execution-000000.json and load the list of modules which is mapped by browser ID #1.

replay-browser can be an array of browser IDs. For instance --replay-browser=1,2 will start two browsers and execute a list of modules which were previously run by browsers #1 and #2.

# The command will read test-execution-000000.json and load the list of module mapped to browserId 1 and 2
$ ember exam --replay-execution=test-execution-000000.json --replay-browser=1,2

When replay-browser value is not specified it will execute browserId(s) read from failedBrowser in the test execution file.

# The command will read test-execution-000000.json and load the list of modules mapped to browserIds from failedBrowser in the json file.
$ ember exam --replay-execution=test-execution-000000.json

When replay-browser value is not specified and there is no value for failedBrowser in the json file it will rerun all list of modules.

# The command will read test-execution-000000.json and load the list of module mapped to all browserIds when failedBrowser is none in the json file
$ ember exam --replay-execution=test-execution-000000.json

Important information on --replay-execution and --replay-browser

  1. You must be using ember-cli version 3.2.0 or greater for load-balnce and test failure reproduction features to work properly.
  2. You must be using ember-qunit version 4.1.1 or greater for this feature to work properly.
  3. You must be using qunit version 2.8.0 or greater for this feature to work properly.

Preserve Test Name

When using --split and/or --load-balance the output will look something like:

# ember exam --split=2 --partition=1 --parallel=3 --load-balance
ok 1 Chrome 66.0 - Exam Partition 1 - browser Id 1 - some test
ok 2 Chrome 66.0 - Exam Partition 1 - browser Id 2 - another test
ok 3 Chrome 66.0 - Exam Partition 1 - browser Id 3 - some the other test

However, if you change the amount of parallelization, or randomize across partitions, the output will change for the same test, which may be an issue if you are tracking test insights over time.

# ember exam --split=2 --partition=1 --parallel=2 --load-balance
ok 1 Chrome 66.0 - Exam Partition 1 - browser Id 2 - some test
ok 2 Chrome 66.0 - Exam Partition 1 - browser Id 1 - another test
ok 3 Chrome 66.0 - Exam Partition 1 - browser Id 2 - some the other test

You can add --preserve-test-name to remove the dynamic segments of the output (partition and browser) to ensure the output test names are always the same.

# ember exam --split=2 --partition=1 --parallel=3 --load-balance --preserve-test-name
ok 1 Chrome 66.0 - some test
ok 2 Chrome 66.0 - another test
ok 3 Chrome 66.0 - some the other test

Advanced Configuration

Ember Exam does its best to allow you to run your test suite in a way that is effective for your individual needs. To that end, there are lots of advanced ways to configure your setup by integrating with other aspects of the Ember testing environment. The following sections will cover a few of the more common scenarios.

Ember Try & CI Integration

Integrating ember-exam with ember-try is remarkably easy. Define a command in your ember-try.js config that leverages the exam command:

// config/ember-try.js
module.exports = {
  command: 'ember exam --split 3 --parallel',
  // ...
};

Using environmental variables gives you flexibility in how you run your tests. For instance, you could distribute your tests across processes instead of parallelizing them by specifying a PARTITION variable in your process environment and then consuming it like so:

module.exports = {
  command: 'ember exam --split 20 --partition ' + process.env.PARTITION,
  // ...
};

If you are working with Travis CI then you can also easily set up seeded-random runs based on PR numbers. Similar to the following:

const command = [ 'ember', 'exam', '--random' ];
const pr = process.env.TRAVIS_PULL_REQUEST;

if (pr) {
  command.push(pr);
}

module.exports = {
  command: command.join(' '),
  // ...
};

You can refer to Travis' default environment variables to see what else you could possibly leverage for your test setup.

Test Suite Segmentation

Some test suites like to segment which tests run based on various facets such as type of test, feature being tested, and so on. This can be accomplished by leveraging Testem's ability to have multiple test pages:

{
  "test_page": [
    "tests/index.html?filter=acceptance",
    "tests/index.html?filter=!acceptance"
  ]
}

You can use this feature in conjunction with Ember Exam's features, which will allow you to segment your test suite but still gain benefits from randomization and splitting.

changelog

Changelog

Release (2025-03-05)

ember-exam 9.1.0 (minor)

:rocket: Enhancement

:house: Internal

Committers: 2

v9.0.0 (2023-12-29)

:boom: Breaking Change

  • #1125 Update ember to 5.5, drop Nodes below 18, drop Mocha support (@andreyfel)

:rocket: Enhancement

:house: Internal

Committers: 2

v8.0.0 (2022-01-25)

:boom: Breaking Change

:house: Internal

Committers: 3

v7.0.1 (2021-11-02)

:bug: Bug Fix

  • #760 Wait for all browser to completet beforer cleaning up StateManager(@step2yeung)
  • #750 Ember exam failing when browser ID not found, return 0(@step2yeung)

:house: Internal

v7.0.0 (2021-10-22)

:boom: Breaking Change

:bug: Bug Fix

:memo: Documentation

  • #687 Update README.md: Fix typo in flag name (@bantic)
  • #644 Docs: Fix information on Load Balancing (@brkn)

:house: Internal

Committers: 4

v6.1.0 (2021-02-17)

:rocket: Enhancement

Committers: 1

v6.0.1 (2020-10-28)

:bug: Bug Fix

  • #617 Update @embroider/macros to fix ember-qunit@5.0.0-beta support. (@rwjblue)

:house: Internal

Committers: 2

v6.0.0 (2020-10-12)

:boom: Breaking Change

:rocket: Enhancement

  • #599 Embroider support when staticAddonTestSupportTrees enabled (@thoov)

:bug: Bug Fix

:memo: Documentation

:house: Internal

Committers: 6

v5.0.1 / 2020-04-21

  • Bump fs-extra from 8.1.0 to 9.0.0 <dependabot[bot]>
  • Bump sinon from 7.5.0 to 9.0.2 <dependabot[bot]>
  • Bump cli-table3 from 0.5.1 to 0.6.0 <dependabot[bot]>
  • Bump ember-resolver from 6.0.2 to 8.0.0 <dependabot[bot]>
  • Bump ember-source from 3.17.2 to 3.18.0 <dependabot[bot]>
  • Bump semver from 7.1.3 to 7.3.2 <dependabot[bot]>
  • Bump eslint-plugin-node from 11.0.0 to 11.1.0 <dependabot[bot]>
  • Bump semver from 7.1.3 to 7.3.2 <dependabot[bot]>
  • Bump ember-template-lint from 2.4.1 to 2.5.2 <dependabot[bot]>
  • Bump mocha from 7.1.0 to 7.1.1 <dependabot[bot]>
  • Bump testdouble from 3.13.0 to 3.13.1 <dependabot[bot]>
  • Bump nyc from 15.0.0 to 15.0.1 <dependabot[bot]>
  • Bump ember-cli-htmlbars from 4.2.2 to 4.3.0 <dependabot[bot]>
  • Bump ember-cli from 3.16.0 to 3.17.0 <dependabot[bot]>
  • Bump ember-cli-babel from 7.18.0 to 7.19.0 <dependabot[bot]>
  • Bump ember-source from 3.17.1 to 3.17.2 <dependabot[bot]>
  • Bump ember-template-lint from 2.4.0 to 2.4.1 <dependabot[bot]>
  • Bump ember-source from 3.17.0 to 3.17.1 <dependabot[bot]>
  • Bump eslint-plugin-ember from 7.10.1 to 7.11.1 <dependabot[bot]>
  • Bump eslint-plugin-ember from 7.9.0 to 7.10.1 <dependabot[bot]>
  • Bump ember-template-lint from 2.3.0 to 2.4.0 <dependabot[bot]>

v5.0.0 / 2020-03-06

  • [Enhancement] Update docs for ember-cli-addon-docs (@choheekim)
  • [Enhancement] Update node engine to be above 10 (@choheekim)
  • [Enhancement] Enables to execute completeBrowserHandler() when there is browser(s) failed to attach to server (@choheekim)
  • [Enhancement] _getTestFramework checks for ember-mocha package (@choheekim)
  • [Enhancement] updating header comments to fix warnings during "ember build" (@dcombslinkedin)
  • [BugFix] fix invalid ES module usage (@ef3)
  • Bump ember-source from 3.16.3 to 3.17.0 <dependabot[bot]>
  • Bump ember-template-lint from 1.14.0 to 2.3.0 <dependabot[bot]>
  • Bump eslint-plugin-ember from 7.8.1 to 7.9.0 <dependabot[bot]>
  • Bump testdouble from 3.12.5 to 3.13.0 <dependabot[bot]>
  • Bump mocha from 7.0.1 to 7.1.0 <dependabot[bot]>
  • Bump ember-template-lint from 1.13.2 to 1.14.0 <dependabot[bot]>
  • Bump ember-source from 3.14.3 to 3.16.3 <dependabot[bot]>
  • Bump semver from 7.1.2 to 7.1.3 <dependabot[bot]>
  • Bump ember-cli from 3.15.2 to 3.16.0 <dependabot[bot]>
  • Bump ember-cli-babel from 7.17.1 to 7.18.0 <dependabot[bot]>
  • Bump eslint-plugin-ember from 7.7.2 to 7.8.1 <dependabot[bot]>
  • Bump rimraf from 3.0.1 to 3.0.2 <dependabot[bot]>
  • Bump ember-cli-babel from 7.14.1 to 7.17.1 <dependabot[bot]>
  • Bump semver from 6.3.0 to 7.1.2 <dependabot[bot]>
  • Bump mocha from 6.2.2 to 7.0.1 <dependabot[bot]>
  • Bump ember-cli-babel from 7.13.2 to 7.14.1 <dependabot[bot]>
  • Bump rimraf from 3.0.0 to 3.0.1 <dependabot[bot]>
  • Bump ember-cli from 3.15.1 to 3.15.2 <dependabot[bot]>
  • Bump ember-cli-addon-docs-yuidoc from 0.2.3 to 0.2.4 <dependabot[bot]>
  • Bump ember-template-lint from 1.13.0 to 1.13.2 <dependabot[bot]>
  • Bump ember-cli-htmlbars from 4.2.1 to 4.2.2 <dependabot[bot]>
  • Bump ember-cli-htmlbars from 4.2.0 to 4.2.1 <dependabot[bot]>
  • Bump eslint-plugin-node from 10.0.0 to 11.0.0 <dependabot[bot]>
  • Bump nyc from 14.1.1 to 15.0.0 <dependabot[bot]>
  • Bump ember-resolver from 6.0.0 to 6.0.1 <dependabot[bot]>
  • Bump ember-template-lint from 1.11.1 to 1.12.1 <dependabot[bot]>
  • Bump eslint-plugin-ember from 7.7.1 to 7.7.2 <dependabot[bot]>
  • Bump ember-cli-babel from 7.13.0 to 7.13.2 <dependabot[bot]>
  • Bump ember-cli-htmlbars from 4.1.0 to 4.2.0 <dependabot[bot]>
  • Bump ember-try from 1.3.0 to 1.4.0 <dependabot[bot]>
  • Bump ember-cli-htmlbars from 4.0.9 to 4.1.0 <dependabot[bot]>
  • Bump ember-template-lint from 1.9.0 to 1.10.0 <dependabot[bot]>

v4.0.9 / 2019-12-05

  • [Enhancement] Add a number of total tests, failed tests, passed tests, and skipped tests to a module metadata file (@choheekim)
  • [Enhancement] Update README.md corresponding to changes in the module metadata file contents (@choheekim)
  • [BugFix] Update yarn.lock to use latest version of core-js-compat (v.3.4.7) (@choheekim)
  • [BugFix] Fix process validation when registering callbacks for process.error & process.exit (@choheekim)
  • Bump ember-template-lint from 1.6.0 to 1.6.1 <dependabot[bot]>
  • Bump ember-qunit from 4.5.1 to 4.6.0 <dependabot[bot]>
  • Bump eslint-plugin-ember from 7.2.0 to 7.3.0 <dependabot[bot]>
  • Bump ember-load-initializers from 2.1.0 to 2.1.1 <dependabot[bot]>
  • Bump ember-template-lint from 1.6.1 to 1.8.1 <dependabot[bot]>
  • Bump ember-source from 3.13.3 to 3.14.1 <dependabot[bot]>
  • Bump chalk from 2.4.2 to 3.0.0 <dependabot[bot]>
  • Bump ember-export-application-global from 2.0.0 to 2.0.1 <dependabot[bot]>
  • Bump ember-template-lint from 1.8.1 to 1.8.2 <dependabot[bot]>
  • Bump ember-cli from 3.13.1 to 3.14.0 <dependabot[bot]>
  • Bump ember-resolver from 5.3.0 to 6.0.0 <dependabot[bot]>
  • Bump ember-cli-babel from 7.12.0 to 7.13.0 <dependabot[bot]>
  • Bump execa from 3.3.0 to 3.4.0 <dependabot[bot]>
  • Bump ember-source from 3.14.2 to 3.14.3 <dependabot[bot]>
  • Bump ember-template-lint from 1.8.2 to 1.9.0 <dependabot[bot]>
  • Bump ember-cli-htmlbars from 4.0.8 to 4.0.9 <dependabot[bot]>

v4.0.5 / 2019-10-25

  • [BugFix] Validate process object is defined when registering event callbacks for process.error & process.exit (@choheekim)
  • [BugFix] Updates page title for dummy app to "Ember Exam" (@howie)
  • Bump rimraf from 2.7.1 to 3.0.0 <dependabot[bot]>
  • Bump ember-cli from 3.12.0 to 3.13.1 <dependabot[bot]>
  • Bump ember-cli-deploy-build from 1.1.1 to 2.0.0 <dependabot[bot]>
  • Bump mocha from 6.2.0 to 6.2.2 <dependabot[bot]>
  • Bump ember-template-lint from 1.5.3 to 1.6.0 <dependabot[bot]>
  • Bump ember-cli-babel from 7.11.1 to 7.12.0 <dependabot[bot]>
  • Bump ember-cli-inject-live-reload from 2.0.1 to 2.0.2 <dependabot[bot]>
  • Bump @ember/optional-features from 1.0.0 to 1.1.0 <dependabot[bot]>
  • Bump ember-cli-addon-docs from 0.6.14 to 0.6.15 <dependabot[bot]>
  • Bump ember-cli-htmlbars-inline-precompile from 2.1.0 to 3.0.1 <dependabot[bot]>
  • Bump ember-source from 3.10.2 to 3.13.3 <dependabot[bot]>
  • Bump eslint-plugin-node from 8.0.1 to 10.0.0 <dependabot[bot]>
  • Bump @ember/optional-features from 0.7.0 to 1.0.0 <dependabot[bot]>
  • Bump ember-cli-htmlbars from 3.1.0 to 4.0.8 <dependabot[bot]>
  • Bump eslint-plugin-ember from 6.10.1 to 7.2.0 <dependabot[bot]>

v4.0.4 / 2019-09-30

  • [BugFix] Validate testem object is defined (@choheekim)
  • Bump ember-cli-babel from 7.11.0 to 7.11.1 <dependabot[bot]>

v4.0.3 / 2019-09-24

  • [Feature] Introduce write-module-metadata-file (@choheekim)
  • Bump ember-resolver from 5.2.1 to 5.3.0 <dependabot[bot]>

v4.0.2 / 2019-09-16

  • [BugFix] Ensure browserExitHandler is called for global errors (@step2yeung)
  • Bump ember-cli-deploy-git from 1.3.3 to 1.3.4 <dependabot[bot]>

v4.0.1 / 2019-09-11

  • [Enhancement] Improve complete browser book keeping & improve request next module conditions (@step2yeung)
  • Bump sinon from 7.4.0 to 7.4.2 <dependabot[bot]>

v4.0.0 / 2019-07-18

  • [Enhancement] Update to use node version >= 8 (@choheekim)
  • [Enhancement] Throw error when there are no matching tests with a given input by file-path and module-path (@choheekim)
  • [BugFix] Update yarn.lock to use v2.4.1 of ember-cli-addon-docs (@choheekim)
  • Bump ember-source from 3.10.1 to 3.10.2 <dependabot[bot]>
  • Bump eslint-plugin-ember from 6.6.0 to 6.7.0 <dependabot[bot]>
  • Bump semver from 6.1.1 to 6.1.2 <dependabot[bot]>
  • Bump testdouble from 3.12.0 to 3.12.2 <dependabot[bot]>

v3.0.3 / 2019-06-18

  • [Feature] Introduce module-path-filter and test-file-path-filter in ember-exam (@choheekim)
  • Bump ember-source from 3.10.0 to 3.10.1 <dependabot[bot]>
  • Bump rsvp from 4.8.4 to 4.8.5 <dependabot[bot]>
  • Bump testdouble from 3.11.0 to 3.12.0 <dependabot[bot]>
  • Bump ember-cli-addon-docs from 0.6.11 to 0.6.13 <dependabot[bot]>
  • Bump ember-template-lint from 1.1.0 to 1.2.0 <dependabot[bot]>
  • Bump eslint-plugin-ember from 6.5.1 to 6.6.0 <dependabot[bot]>
  • Bump ember-cli-babel from 7.7.3 to 7.8.0 <dependabot[bot]>

v3.0.2 / 2019-06-03

  • [Enhancement] Update documentation (Add Table of Contents) (@Vasanth-freshworks)
  • [Enhancement] Allow graceful exit when async iterator failes to get a module. Add emberExamExitOnError flag to hard fail (@step2yeung)
  • [BugFix] Remove duplicate nav entry (@samselikoff)
  • Bump ember-cli-addon-docs from 0.6.8 to 0.6.9 <dependabot[bot]>
  • Bump mocha from 6.1.2 to 6.1.3 <dependabot[bot]>
  • Bump ember-cli-addon-docs from 0.6.9 to 0.6.10 <dependabot[bot]>
  • Bump sinon from 7.3.1 to 7.3.2 <dependabot[bot]>
  • Bump eslint-plugin-ember from 6.3.0 to 6.4.1 <dependabot[bot]>
  • Bump ember-source from 3.9.0 to 3.9.1 <dependabot[bot]>
  • [Security] Bump jquery from 3.3.1 to 3.4.0 <dependabot[bot]>
  • Bump nyc from 13.3.0 to 14.1.1 <dependabot[bot]>
  • Bump ember-source from 3.9.1 to 3.10.0 <dependabot[bot]>
  • Bump fs-extra from 7.0.1 to 8.0.1 <dependabot[bot]>
  • Bump mocha from 6.1.3 to 6.1.4 <dependabot[bot]>
  • Bump ember-cli-addon-docs from 0.6.10 to 0.6.11 <dependabot[bot]>
  • Bump semver from 6.0.0 to 6.1.0 <dependabot[bot]>
  • Bump eslint-plugin-ember from 6.4.1 to 6.5.0 <dependabot[bot]>
  • Bump ember-try from 1.1.0 to 1.2.1 <dependabot[bot]>
  • Bump semver from 6.1.0 to 6.1.1 <dependabot[bot]>
  • Bump eslint-plugin-ember from 6.5.0 to 6.5.1 <dependabot[bot]>

v3.0.1 / 2019-04-09

  • [Enhancement] Update documentation (@step2yeung)

v3.0.0 / 2019-04-08

  • [Feature - Breaking] Introduce TestLoadBalancing (@choheekim) & (@step2yeung)

You will need to replace the use of start() from Ember-Qunit or Ember-Mocha in test-helper.js with start() from ember-exam:

// test-helper.js
import start from 'ember-exam/test-support/start';

// Options passed to `start` will be passed-through to ember-qunit or ember-mocha
start();

This breaking change was motivated by wanting to remove the monkey-patching, of ember-qunit and ember-mocha's test-loader, ember exam was doing.

  • [Bugfix] Ensure serialized test-execution browserId's are always treated as a string https://github.com/ember-cli/ember-exam/pull/233
  • [Bugfix] fix breaking change: https://github.com/ember-cli/ember-exam/pull/242 (@step2yeung)
  • [Enhancement] Prettify test-execution.json (@step2yeung)
  • Bump ember-qunit from 4.4.0 to 4.4.1 (4 weeks ago) <dependabot[bot]>
  • Bump ember-resolver from 5.1.2 to 5.1.3 (4 weeks ago) <dependabot[bot]>
  • Bump testdouble from 3.10.0 to 3.11.0 (4 weeks ago) <dependabot[bot]>
  • Bump ember-cli-babel from 7.4.3 to 7.5.0 (4 weeks ago) <dependabot[bot]>
  • Bump ember-resolver from 5.1.1 to 5.1.2 (5 weeks ago) <dependabot[bot]>
  • Bump mocha from 6.0.0 to 6.0.1 (5 weeks ago) <dependabot[bot]>
  • Bump ember-cli-babel from 7.4.2 to 7.4.3 (5 weeks ago) <dependabot[bot]>
  • Bump ember-qunit from 4.3.0 to 4.4.0 (5 weeks ago) <dependabot[bot]>
  • Bump mocha from 5.2.0 to 6.0.0 (5 weeks ago) <dependabot[bot]>
  • Bump ember-source from 3.7.3 to 3.8.0 (5 weeks ago) <dependabot[bot]>
  • Bump sinon from 7.2.3 to 7.2.4 (5 weeks ago) <dependabot[bot]>
  • Bump nyc from 13.2.0 to 13.3.0 (6 weeks ago) <dependabot[bot]>
  • [Security] Bump handlebars from 4.0.12 to 4.1.0 (6 weeks ago) <dependabot[bot]>
  • Bump ember-cli-babel from 7.4.1 to 7.4.2 (6 weeks ago) <dependabot[bot]>
  • Bump ember-source from 3.7.2 to 3.7.3 (7 weeks ago) <dependabot[bot]>
  • Bump ember-qunit from 4.2.0 to 4.3.0 (7 weeks ago) <dependabot[bot]>
  • Bump nyc from 13.1.0 to 13.2.0 (7 weeks ago) <dependabot[bot]>
  • Bump testdouble from 3.9.3 to 3.10.0 (7 weeks ago) <dependabot[bot]>
  • Bump ember-cli-babel from 7.4.0 to 7.4.1 (8 weeks ago) <dependabot[bot]>
  • Bump eslint-plugin-ember from 6.1.0 to 6.2.0 (8 weeks ago) <dependabot[bot]>

v2.1.5 / 2019-04-08

  • re-release 2.0.3 as 2.1.5, as 2.0.4...2.1.4 introduced a worth-while but unexpected breaking change. 2.0.4...2.1.4 will be re-released as 3.x

v2.1.4 / 2019-03-27

v2.1.3 / 2019-03-27

v2.1.0 / 2019-03-27

  • [Feature] Introduce TestLoadBalancing <@choheekim> & <@step2yeung>
  • Bump ember-qunit from 4.4.0 to 4.4.1 (4 weeks ago) <dependabot[bot]>
  • Bump ember-resolver from 5.1.2 to 5.1.3 (4 weeks ago) <dependabot[bot]>
  • Bump testdouble from 3.10.0 to 3.11.0 (4 weeks ago) <dependabot[bot]>
  • Bump ember-cli-babel from 7.4.3 to 7.5.0 (4 weeks ago) <dependabot[bot]>
  • Bump ember-resolver from 5.1.1 to 5.1.2 (5 weeks ago) <dependabot[bot]>
  • Bump mocha from 6.0.0 to 6.0.1 (5 weeks ago) <dependabot[bot]>
  • Bump ember-cli-babel from 7.4.2 to 7.4.3 (5 weeks ago) <dependabot[bot]>
  • Bump ember-qunit from 4.3.0 to 4.4.0 (5 weeks ago) <dependabot[bot]>
  • Bump mocha from 5.2.0 to 6.0.0 (5 weeks ago) <dependabot[bot]>
  • Bump ember-source from 3.7.3 to 3.8.0 (5 weeks ago) <dependabot[bot]>
  • Bump sinon from 7.2.3 to 7.2.4 (5 weeks ago) <dependabot[bot]>
  • Bump nyc from 13.2.0 to 13.3.0 (6 weeks ago) <dependabot[bot]>
  • [Security] Bump handlebars from 4.0.12 to 4.1.0 (6 weeks ago) <dependabot[bot]>
  • Bump ember-cli-babel from 7.4.1 to 7.4.2 (6 weeks ago) <dependabot[bot]>
  • Bump ember-source from 3.7.2 to 3.7.3 (7 weeks ago) <dependabot[bot]>
  • Bump ember-qunit from 4.2.0 to 4.3.0 (7 weeks ago) <dependabot[bot]>
  • Bump nyc from 13.1.0 to 13.2.0 (7 weeks ago) <dependabot[bot]>
  • Bump testdouble from 3.9.3 to 3.10.0 (7 weeks ago) <dependabot[bot]>
  • Bump ember-cli-babel from 7.4.0 to 7.4.1 (8 weeks ago) <dependabot[bot]>
  • Bump eslint-plugin-ember from 6.1.0 to 6.2.0 (8 weeks ago) <dependabot[bot]>

v2.0.3 / 2019-01-22

  • ignore .nyc_output

v2.0.2 / 2019-01-22

  • Bump chalk from 2.4.1 to 2.4.2
  • Bump debug from 4.1.0 to 4.1.1
  • Bump ember-cli from 3.5.1 to 3.7.1
  • Bump ember-cli-babel from 7.1.4 to 7.4.0
  • Bump ember-cli-dependency-checker from 3.0.0 to 3.1.0
  • Bump ember-cli-htmlbars-inline-precompile from 2.0.0 to 2.1.0
  • Bump ember-qunit from 4.1.2 to 4.2.0
  • Bump ember-source from 3.6.0 to 3.7.2
  • Bump ember-template-lint from 0.8.23 to 1.1.0
  • Bump eslint-plugin-ember from 6.0.1 to 6.1.0
  • Bump eslint-plugin-node from 8.0.0 to 8.0.1
  • Bump rimraf from 2.6.2 to 2.6.3
  • Bump sinon from 7.1.1 to 7.2.3
  • Bump testdouble from 3.9.1 to 3.9.3
  • Run test:all to trigger ember & node test in ci, add missing single quote, and change number of tests running
  • setResolver() from @ember/test-helpers

v2.0.1 / 2018-12-07

  • ember-exam now sets process.env.EMBER_EXAM_SPLIT_COUNT, this allows testem scripts to pick up this configuration via parallel: process.env.EMBER_EXAM_SPLIT_COUNT

v2.0.0 / 2018-12-04

  • Bump Node support to: ^6.14.0 || ^8.10.0 || >= 10.*
  • Update/Modernize all dependencies
  • Update/Modernize codebase
  • tranisition from ember-cli-qunit to ember-qunit

v1.0.0 / 2017-11-02

==================

  • Remove auto-loading functionality
  • Update readme to better emphasize explicit loading

v0.8.1 / 2017-10-08

  • Warn when auto-loading (deprecation)
  • Remove # from test output.

v0.8.0 / 2017-10-04

  • Removed EMBER_TRY_SCENARIO's from .travis.yml file
  • Fix ESLint warning
  • Fix mocha integration
  • Revert npm install command in .travis.yml
  • Upgrade all dependencies version
  • Upgrade Ember CLI to version 2.15 and align with default blueprint

v0.7.2 / 2017-10-01

  • fixes #109 - use local ember

v0.7.1 / 2017-09-14

  • Make notes about turning on parallelization more visible
  • Move note on >= 0.7.0 into installation section
  • Add installation instructions
  • Remove jQuery usage
  • Specify when to call loadEmberExam when using ember-cli-qunit@4
  • fix version range
  • Add release process notes

v0.7.0 / 2017-06-01

  • Document load API for version 0.7.0
  • Fix eslint errors for node-land code
  • Refactor core functionality
  • Extract TestLoader mods into utility function
  • Simplify and revamp code coverage
  • Fix tests from ESLint migration
  • Replace JSHint with ESLint
  • Tweak CI configs
  • Change ember try:one -> ember try:each
  • Remove Node 0.12 from Travis
  • Add Node LTS versions 4.x, 6.x, and stable to Travis

v0.6.2 / 2017-04-09

  • Downgrade split < 2 error to warning
  • Fix mocha test commands

v0.6.1 / 2017-03-25

  • Ensure iterate exits with proper code
  • Add Ember Exam video link to Readme
  • Add note about using random with a seed
  • Fix seed logging message for random option

v0.6.0 / 2016-11-27

  • Close code coverage gap
  • Update README to include Mocha info
  • Add framework-specific logic
  • Run both Mocha and QUnit tests in CI
  • Add tests for ember-cli-mocha
  • Remove moduleForAcceptance
  • Move QUnit-based tests to sub-directory
  • Remove reliance on QUnit for handling url params

v0.5.3 / 2016-11-19

  • Fixed issue with using a single partition with a double digit

v0.5.2 / 2016-11-15

  • Support specifying multiple partitions (#63)

v0.5.1 / 2016-11-14

  • move rimraf to dependencies from devDependencies
  • Add note about test splitting balancing

v0.5.0 / 2016-08-14

  • Document randomization-iterator
  • Add tests for randomization-iterator
  • Rename main acceptance test to be semantic
  • Introduce exam:iterate command
  • Tighten up npmignore
  • Clarify README typos
  • Increase mass threshold for code climate
  • Improve acceptance test coverage
  • Improve advanced configuration section of readme

v0.4.6 / 2016-08-07

  • Don't run Travis on non-master branches
  • Read in testem config for constructing test page urls

v0.4.5 / 2016-08-03

  • Fix node tests after core-object changes
  • Fix tests of ember-exam in 2.7
  • Upgrade all deps to align with Ember 2.7.0.
  • Temporarily undocument --weighted.
  • Setup and document ember-try integration

v0.4.4 / 2016-06-21

  • Remove unused dependencies
  • Make codeclimate and eslint configs local
  • Make requires lazy where possible
  • Remove unused Array utilities
  • Add CodeClimate badges to README
  • Setup Istanbul code coverage for node code
  • Fix issues found via CodeClimate
  • Fix Travis badge to point to master
  • Add additional badges to README

v0.4.3 / 2016-06-05

  • Add Acceptance test for Testem output
  • Add partition number to Testem output only when applicable
  • Handle _split and _partition params as strings
  • Fix typo, partition -> _partition

v0.4.2 / 2016-06-02

  • Introduce tests for TestLoader
  • Add useful errors to TestLoader
  • Don't fail when lint tests are disabled

v0.4.1 / 2016-05-24

  • Fix super callbacks context

v0.4.0 / 2016-05-24

  • Remove AST manipulations and refine API