Launcher for jsdom.
npm install karma-jsdom-launcher --save-dev
NOTE: karma and jsdom are peerDependencies of this module. If you haven't install them, run
npm install karma-jsdom-launcher jsdom karma --save-dev
to install all your dependencies.
// karma.conf.js
module.exports = function(config) {
config.set({
browsers: ['jsdom'],
});
};
You can pass list of browsers as a CLI argument too:
karma start --browsers jsdom
You can pass options directly to jsdom as shown below. See jsdom's own documentation for all supported options.
// karma.conf.js
const jsdom = require("jsdom");
module.exports = function(config) {
config.set({
browsers: ['jsdom'],
jsdomLauncher: {
jsdom: {
resources: new jsdom.ResourceLoader({
userAgent: "foobar",
})
}
}
});
};
This occurs due to lingering event handlers and it is currently an unsolved issue. Meanwhile you have to explicitly exit the process yourself. This can be done by not passing a callback to Karma.Server or by invoking process.exit(), as shown below.
var gulp = require('gulp');
var Server = require('karma').Server;
gulp.task('test', function () {
new Server({
configFile: __dirname + '/karma.conf.js',
singleRun: true
}).start();
});
var gulp = require('gulp');
var Server = require('karma').Server;
gulp.task('test', function (done) {
new Server({
configFile: __dirname + '/karma.conf.js',
singleRun: true
}, function (exitCode) {
done();
process.exit(exitCode);
}).start();
});
You might experience a known issue where Karma attempts to perform a synchronous request, resulting in a deadlock. Disable use of source-maps in your tests, as shown below.
// angular.json
{
...
"test": {
"options": {
"sourceMap": false
For more information on Karma see the homepage.