Karma + Jasmine/Mocha
As testing frameworks, Jasmine and Mocha provides tons of useful and powerful features. Karma test runner is also capable of executing tests in different browsers. However, as a development time test runner Karma is slow, makes it hard to debug test failures, makes it hard to understand the cause of failing tests, and is distracting. There is an easy way to fix these problems and to become way more productive with Karma.
Karma is very slow, even in watch mode.
Karma re-runs all tests in all test files on every file save.
Wallaby only re-runs tests that are affected by your changes, regardless of whether the files are uncommitted, in source control, or unsaved.
If you have 3 component files that are
covered by 3 different spec files each, and each spec file has 10 tests, and you are changing 1 test in one of the test files,
Karma will re-run 90 tests, on file save event.
If you have changes (saved or not unsaved)
in 3 component files that are
covered by 3 different test files each, with
10 tests each, and are changing 1 test in one of the test files,
Wallaby will re-run 1 test, as you type.
Karma debugging experience is limited, painful to use and outdated.
Wallaby adds a few powerful instruments to debugging classics, designed specifically for tests.
When you need to debug your tests, your options are limited to using a good but over a decade old
console.log, or you may use a classical browser debugger or an editor integrated browser sourced debugger. Most of the debugger features are over 40
years old and have not been designed to support a fast edit-and-continue test feedback loop.
When using Wallaby, there's less need to debug in the first place, because of realtime inline
and value explorer. However, when a debugger is required,
addition to existing tools,
time travel debugger and test stories. Wallaby debugger requires no config, works
for monorepos and dynamic/data driven tests, such as
Karma test output is hard to read, search and act upon, especially when many tests are failing.
Wallaby test output is ergonomic, highlighted, editor integrated and actionable.
Karma test output is either displayed in the terminal, highlighted with ANSI colors (not from your editor theme) and awkward spacings, or (if you are not running in a headless mode) in a separate browser window that is constantly reloading and is flickering on test re-runs.
Wallaby test output is deeply integrated with your editor, highlighted using your editor colors and contains actionable links to navigate to tests, logs and errors, view/update snapshots (even for a single test), explore assertion diffs, and debug individual tests.
Karma code coverage is a separately available static artifact of a test run.
Wallaby code coverage is a first class citizen, continuously and seamlessly displayed in editor.
Karma code coverage results are available (behind a config flag) as a statically generated HTML page Istanbul report, or as a partial LCOV sourced report displayed with a noticeable delay and flickering in your editor, and as a too-high-level-to-be-useful terminal summary report.
Karma is an open source project driven by some awesome enthusiasts, in their spare time. The project is not actively maintained at this stage.
Wallaby is a commercially successful tool backed by a team of dedicated professionals passionately working on it full-time for living.
There's no bug you can't fix yourself or question you can't find an answer for, it is just a matter of how you want to spend your time.
Karma is free, but only if your time is free.
Use Wallaby to boost your productivity by running and debugging Karma tests in VS Code or WebStorm as you are writing your tests/code.
Use Jasmine/Mocha as your testing framework for your tests, use Karma to run tests as a part of your Continuous Integration (CI) pipeline.