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:
karmato support the Karma test runner- either
karma-jasmineandjasmine-coreto support the Jasmine test framework - or
karma-mochaandmochato support the Mocha test framework- either
karma-chaiandchaito recognise the Chai assertions - or
karma-expectto recognise the Expect assertions - or
karma-shouldandshouldto recognise the should.js assertions - or
karma-power-assert,karma-espower-preprocessor,karma-sourcemap-loaderandpower-assertto recognise the power-assert assertions
- either
- either
- and
karma-chrome-launcherand/orkarma-firefox-launcherto supply a web browser launcher - optionally
karma-brief-reporterto 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 standardassertlibrary 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:
chromefirefox
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.
