Usage: mochapack [options] [<file|directory|glob> ...]
Options
--async-only, -A force all tests to take a callback (async) or return a promise
--colors, -c force enabling of colors
--interactive force interactive mode
--clear-terminal clear current terminal, purging its histroy
--quiet, -q does not display informational messages
--growl, -G enable growl notification support
--recursive include sub directories
--reporter, -R specify the reporter to use
--reporter-options, -O reporter-specific options, --reporter-options <k=v,k2=v2,...>
--bail, -b bail after first test failure
--glob only test files matching <pattern> (only valid for directory entry)
--grep, -g only run tests matching <pattern>
--fgrep, -f only run tests containing <string>
--forbid-only fail if exclusive test(s) encountered
--invert, -i inverts --grep and --fgrep matches
--require, -r require the given module
--include include the given module into test bundle
--slow, -s "slow" test threshold in milliseconds
--timeout, -t set test-case timeout in milliseconds
--ui, -u specify user-interface
--watch, -w watch files for changes
--check-leaks check for global variable leaks
--full-trace display the full stack trace
--inline-diff display actual/expected differences inline within each string
--exit require a clean shutdown of the event loop: mocha will not call process
--retries set numbers of time to retry a failed test case
--delay wait for async suite definition
--webpack-config path to webpack-config file
--webpack-env environment passed to the webpack-config, when it is a function
--opts path to webpack-mocha options file, Default cwd/mochapack.opts
Examples
mochapack "src/**/*.test.js"
mochapack --webpack-config webpack.config-test.js
Default pattern when no arguments:
"test/*.{ext}" {ext} is placeholder for extensions in your webpack config via 'resolve.extensions'. Fallbacks to '.js'
Allows you to use your own webpack configuration to define custom loaders and other webpack related stuff.
When the parameter --webpack-config
is omitted, mochapack tries to load a webpack-config file named webpack.config.js
, but will not bail when it doesn't exist.
It fails only for missing webpack config files when the config is explicitly given.
If you need to use a JavaScript preprocessor such as Babel or CoffeeScript for your webpack config file then give it a name that ends with corresponding extension and call it without it:
$ mochapack --webpack-config webpack.config-test.js
webpack.config-test.babel.js - Babel example config
export default {
module: {
rules: [
{
test: /\.js$/,
loader: "babel-loader"
}
]
}
};
webpack.config-test.coffee - CoffeeScript example config
module.exports =
module:
rules: [
{
test: /\.coffee$/
loader: "coffee-loader"
}
]
Instead of returning a webpack config, you can also export a function which returns the config when called. You should use this in conjunction with the --webpack-env
option to make your config environment aware, for example --webpack-env test
.
export default function (env) {
return {
devtool: env === "production" ? "source-map": "inline-cheap-module-source-map",
target: env === "test" ? "node" : "web",
module: {
rules: [
{
test: /\.js$/,
loader: "babel-loader"
}
]
}
}
};
Please have a look at the webpack configuration chapter to get further instructions & tips.
mochapack attempts to load a configuration file named mochapack.opts
in your working directory. It's basically the same like mocha.opts
for mocha and appends common CLI options automatically to your commands.
--opts
allows you to define a custom file path for this config file.
The lines in this file are combined with any command-line arguments. Command-line arguments take precedence.
Imagine you have the following mochapack.opts file:
mochapack.opts
--colors
--webpack-config webpack.config-test.js
src/**/*.test.js
and call mochapack with
$ mochapack --growl
then it's equivalent to
$ mochapack --growl --colors --webpack-config webpack.config-test.js "src/**/*.test.js"
When you use a directory as a test entry --glob
and --recursive
can help you to control the files to test.
--glob
affects only directory entries and allows you to specifiy a pattern (e.g.*.test.js
) for the files that should be tested--recursive
searches also in subdirectories for tests to run
--require
is a known mocha option that lets you execute files before your tests will be required.
It's useful for setup stuff like initializing jsdom
.
--include
does something similar, except that the files will be included into the webpack bundle.
But like --require
they will be executed before your tests.
Starts mochapack in watch mode and compiles & run your tests automatically when a file change occur. Unlike mocha, mochapack analyzes your dependency graph and run only those test files that were affected by this file change.