A simplified zero-configuration wrapper around Karma, Webpack & Jasmine.
Think of it like Jest for cross-browser testing - it even uses the same expect syntax.
Karma, Webpack and Jasmine are all great. They're all also quite powerful and each highly configurable. When creating and maintaining small modules, duplication of these configurations and dependencies is cumbersome.
Karmatic is a zero-configuration wrapper around these tools with intelligent defaults, configuration auto-detection, and optimizations most configurations don't include.
Most importantly, Karmatic provides a (headless) browser test harness in a single dependency.
npm i -D webpack karmatic... then add a test script to your package.json:
{
"scripts": {
"test": "karmatic"
}
}... now you can run your tests using npm t. Here's a minimal example repo.
Don't have Chrome installed? Use puppeteer. Run npm i -D puppeteer to download a local installation of Chromium that karmatic will use.
By default, Karmatic will find tests in any files ending in .test.js or _test.js.
You can change this to any minimatch pattern (note the quotes to avoid shell expansion):
karmatic '**/*Spec.jsx?'--chromeDataDir <filename>
Filename to be used to save Chrome preferences between test runs. Useful for debugging tests. It is recommended to also add this filename to .gitignore.
Example:
karmatic --chromeDataDir .chrome
Usage
$ karmatic <command> [options]
Available Commands
run Run tests once and exit
watch Run tests on any change
debug Open a headful Puppeteer instance for debugging your tests
For more info, run any command with the `--help` flag
$ karmatic run --help
$ karmatic watch --help
Options
--files Minimatch pattern for test files
--headless Run using Chrome Headless (default true)
--coverage Report code coverage of tests (default true)
--downlevel Downlevel syntax to ES5
--chromeDataDir Save Chrome preferences
-v, --version Displays current version
-h, --help Displays this message
To disable any option that defaults to true, pass false to the option: --headless false or --coverage false.
NOTE: The debug option overrides the default value of the --headless and --coverage option to be false. This option will also open up Chrome with some special flags set. If you'd like to debug your tests using your your own instance of Chrome (or any other browser), copy the URL from the puppeteer window into your favorite browser.
Q: Is there an FAQ?**
Yes.
Karmatic is pretty new! Here are some projects that have switched to it you may use as a reference: