@rmtc/plugin-mocha v1.1.3
@rmtc/plugin-mocha
A Mocha test running plugin for @rmtc/toolchain.
!WARNING This project is intended for use in @rowanmanning's projects. It's free to use but I don't offer support for use-cases outside of what I need.
Table of Contents
Requirements
This library requires the following to run:
Usage
Install the module with npm:
npm install --save-dev @rmtc/plugin-mochaInclude it in your .rmtc.json file:
{
plugins: [
// ...
'@rmtc/plugin-mocha'
]
// ...
}Workflows
This plugin defines the following workflows:
test: a general workflow used to run all automated tests.test:<type>: optionally (seeconfig.type) more specific workflows for different types of automated tests.
Steps
This plugin defines the following steps that can be added to any workflow:
mocha: optionally (seeconfig.type) a general step used to run any tests found in the project. This uses the following pattern to find test files:- Look in all folders matching
**/test/** - Run tests in files that end in
.spec.{js,cjs,mjs}
- Look in all folders matching
mocha:<type>: optionally (seeconfig.type) a step used to run tests of a specific type found in the project. This uses the following pattern to find test files:- Look in all folders matching
**/test/<type>/** - Run tests in files that end in
.spec.{js,cjs,mjs}
- Look in all folders matching
Configuration
Most of the configuration for this plugin should live within the Mocha configuration file or package.json. See the Mocha documentation for more information.
config.type
string. Use this configuration to specify a different location to look for tests in, which in turn will define additional workflows and steps. E.g.
{
plugins: [
['@rmtc/plugin-mocha', {
type: 'unit'
}]
]
}The above will define two workflows (test and test:unit). It will define one step (mocha:unit), which will run tests inside **/test/unit/** folders in the project. The test workflow also runs the mocha:unit step.
Because the workflows and steps change, it's possible to add multiple different mocha plugin configurations this way, e.g.
{
plugins: [
['@rmtc/plugin-mocha', {
type: 'unit'
}],
['@rmtc/plugin-mocha', {
type: 'end-to-end'
}]
]
}The above will define three workflows (test, test:unit, and test:end-to-end). It will define two steps (mocha:unit and mocha:end-to-end), which will run tests inside their respective directories. The test workflow runs both the mocha:unit and mocha:end-to-end steps for convenience.
config.coverage
boolean. Whether to collect code coverage for the tests using Istanbul. If this is set to true then coverage will be collected and reported based on how you've configured nyc.
This configuration is useful when combined with type because you could report coverage only based on unit tests and not allow the end-to-end tests to impact this. E.g.
{
plugins: [
['@rmtc/plugin-mocha', {
type: 'unit',
coverage: true
}],
['@rmtc/plugin-mocha', {
type: 'end-to-end'
}]
]
}Contributing
See the central README for a contribution guide and code of conduct.
License
Licensed under the MIT license. Copyright © 2023, Rowan Manning