Capture errors from tests written with Jasmine, Mocha or other test framework and run by Karma from Visual Studio Code.
Install this extension to your Visual Studio Code from the marketplace, or download a specific version of a released package and install it from the file.
Make sure that your NPM project depends on the following modules:
karma
to support the Karma test runner- either
karma-jasmine
andjasmine-core
to support the Jasmine test framework - or
karma-mocha
andmocha
to support the Mocha test framework- either
karma-chai
andchai
to recognise the Chai assertions - or
karma-expect
to recognise the Expect assertions - or
karma-should
andshould
to recognise the should.js assertions - or
karma-power-assert
,karma-espower-preprocessor
,karma-sourcemap-loader
andpower-assert
to recognise the power-assert assertions
- either
- either
- and
karma-chrome-launcher
and/orkarma-firefox-launcher
to supply a web browser launcher - optionally
karma-brief-reporter
to provide other test output than the built-in reporters do
Specify "$karma-<framework>-<reporter>[-<browser>]"
as a value for the property problemMatcher
of your testing task in .vscode/tasks.json
.
Choose the <framework>
according to the Karma framework that you use for executing the tests. The following frameworks are supported:
jasmine
- for the latest version of Jasmine, which is currently 3jasmine2
- for one of the original versions of Jasmine 2 compatible with 2.0; more recent versions like 2.99 modified the output to match Jasmine 3jasmine1
- for one of the original versions of Jasmine 1, which was 1.3.1 the latestmocha-assert
- for Mocha with a standardassert
library like power-assert, but without the instrumentation of the assertion outputmocha-chai
- for Mocha with Chaimocha-expect
- for Mocha with Expectmocha-power-assert
- for Mocha with power-assert, with the instrumentation of the assertion outputmocha-should
- for Mocha with should.js
Choose the <reporter>
according to the Karma reporter that you use for printing the test progress on the console. The following reporters are supported:
- brief - a friendly reporter printing just the errors and keeping the progress on one line
- dots - a built-in reporter printing just a dot for each executed test
- progress - a built-in reporter printing the progress after each test on a new line
The reporter dots
is supported by the same problem matcher as the reporter progress
. Use the progress
value for either of the two reporters.
Choose the <browser>
according to the Karma launcher that you use for starting the browser. The following frameworks are supported:
chrome
firefox
Some problem matchers work with all browsers using the same implementation. They do not include the <browser>
in their names. Check the valid values offered by Visual Studio Code when you are editing .vscode/tasks.json
.
Run the task "Run Tests" from .vscode/tasks.json
to run the tests once and exit:
{
"version": "2.0.0",
"tasks": [
{
"label": "Run Tests",
"type": "shell",
"command": "./node_modules/.bin/karma start",
"windows": {
"command": ".\\node_modules\\.bin\\karma start"
},
"problemMatcher": "$karma-jasmine-progress"
}
]
}
Run the task "Watch Tests" from .vscode/tasks.json
to run the tests once and wait for file changes to re-run the tests again and again:
{
"version": "2.0.0",
"tasks": [
{
"label": "Watch Tests",
"type": "shell",
"command": "./node_modules/.bin/karma start --auto-watch --no-single-run",
"windows": {
"command": ".\\node_modules\\.bin\\karma start --auto-watch --no-single-run"
},
"isBackground": true,
"problemMatcher": "$karma-jasmine-progress"
}
]
}
Start the launcher "Debug Tests" from .vscode/launch.json
to debug the tests using the extension "Debugger for Chrome" in the headless mode:
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome", // as soon as Karma starts, attach
"request": "attach", // to the headless Chrome
"name": "Debug Tests",
"port": 9222, // default Chrome debugging port
"webRoot": "${workspaceFolder}",
"pathMapping": {
"/": "${workspaceRoot}/", // Karma serves the project base
"/base/": "${workspaceRoot}/" // directory as on the /base path
},
"preLaunchTask": "Watch Tests" // re-run the tests on file changes
}
]
}
Karma configuration that will run the tests by default and watch for file changes and re-run the tests when the arguments --auto-watch --no-single-run
are used:
module.exports = function(config) {
config.set({
basePath: '.',
frameworks: ['jasmine'], // load and execute Jasmine tests
files: ['src/**/*.js'],
reporters: ['progress'], // choose brief, dots, mocha, progress or specs
port: 9876,
browsers: ['ChromeHeadless'], // do not open the browser window
autoWatch: false, // run the tests one by just `karma start` and flip
singleRun: true // those on the command line to continue watching
})
}
All problem matchers introduced by this package alphabetically: karma-jasmine-brief
, karma-jasmine1-brief-chrome
, karma-jasmine1-brief-firefox
, karma-jasmine2-brief-chrome
, karma-jasmine2-brief-firefox
, karma-jasmine-progress
, karma-jasmine1-progress-chrome
, karma-jasmine1-progress-firefox
, karma-jasmine2-progress-chrome
, karma-jasmine2-progress-firefox
, karma-mocha-assert-progress
, karma-mocha-chai-progress-chrome
, karma-mocha-chai-progress-firefox
, karma-mocha-expect-progress
, karma-mocha-power-assert-progress
, karma-mocha-should-progress
You can have a look at a testing project example. It is meant for testing the problem matchers and not to demonstrate an actual library, but it might help you to set up your project and your tasks and launchers, although is contains many tasks for investigation purposes.
Copyright (c) 2020 Ferdinand Prantl
Licensed under the MIT license.