A Karma plugin that provides an adapter for the QUnit testing framework, enabling seamless integration between Karma test runner and QUnit test suites.
npx @tessl/cli install tessl/npm-karma-qunit@4.2.0karma-qunit is a Karma plugin that provides an adapter for the QUnit testing framework. It enables seamless integration between Karma test runner and QUnit test suites by automatically configuring QUnit files, providing configuration options, and establishing the bridge between QUnit test execution and Karma's reporting system.
npm install karma-qunit --save-devkarma-qunit is not imported directly in your code. Instead, it's configured as a Karma plugin:
// karma.conf.js
module.exports = function (config) {
config.set({
frameworks: ['qunit'],
plugins: ['karma-qunit']
});
};If requiring the plugin programmatically:
const karmaQunit = require('karma-qunit');// karma.conf.js
module.exports = function (config) {
config.set({
frameworks: ['qunit'],
plugins: ['karma-qunit'],
files: [
'src/**/*.js',
'test/**/*.js'
],
browsers: ['Chrome']
});
};With QUnit configuration options:
// karma.conf.js
module.exports = function (config) {
config.set({
frameworks: ['qunit'],
plugins: ['karma-qunit'],
files: ['test/**/*.js'],
client: {
clearContext: false,
qunit: {
showUI: true,
testTimeout: 5000,
autostart: true
}
}
});
};karma-qunit registers itself as a Karma framework plugin that can be activated by including 'qunit' in the frameworks array.
/**
* Main module export providing Karma framework factory
*/
module.exports = {
'framework:qunit': ['factory', initQUnit]
};Initializes the QUnit framework by adding necessary files to Karma's file list.
/**
* Initializes QUnit framework for Karma
* Automatically adds QUnit CSS, JavaScript library, and adapter files
* @param {Array} files - Karma files array to modify
*/
function initQUnit(files);
/**
* Dependency injection annotation for Karma framework
* Specifies that initQUnit function requires config.files parameter
*/
initQUnit.$inject = ['config.files'];Internal utility for creating Karma file pattern objects.
/**
* Creates a Karma file pattern object with default settings
* @param {string} pattern - File path pattern
* @returns {FilePattern} File pattern object with properties: pattern, included, served, watched
*/
function createPattern(pattern);
/** File pattern object returned by createPattern */
interface FilePattern {
pattern: string;
included: boolean;
served: boolean;
watched: boolean;
}client.qunit)All QUnit configuration options can be passed through Karma's client configuration:
interface QUnitClientConfig {
/** Display QUnit UI in browser (requires clearContext: false) */
showUI?: boolean;
/** Control automatic test execution start */
autostart?: boolean;
/** Test timeout in milliseconds */
testTimeout?: number;
/** Any other QUnit.config option */
[key: string]: any;
}Common Configuration Options:
clearContext: false in Karma config.// karma.conf.js
module.exports = function (config) {
config.set({
frameworks: ['qunit'],
plugins: ['karma-qunit'],
client: {
clearContext: false, // Required for showUI
qunit: {
showUI: true,
testTimeout: 10000,
autostart: false, // Manual start control
reorder: false, // QUnit config option
altertitle: false // QUnit config option
}
}
});
};karma-qunit consists of several key components:
The adapter creates a wrapper around QUnit that:
The adapter establishes the following browser-level integrations:
/**
* Creates QUnit configuration from Karma config
* @param {Object} karma - Karma instance with config property
* @returns {Object} QUnit configuration object with autostart: false and merged options
*/
function createQUnitConfig(karma);/**
* Creates QUnit start function for Karma integration
* @param {Object} tc - Karma test context
* @param {Object} runnerPassedIn - Optional QUnit runner instance (defaults to window.QUnit)
* @returns {Function} Function that initializes QUnit test execution within Karma
*/
function createQUnitStartFn(tc, runnerPassedIn);karma-qunit automatically includes these files in your Karma configuration:
{
"karma": "^4.0.0 || ^5.0.0 || ^6.0.0",
"qunit": ">=2.1.1"
}karma-qunit has zero runtime dependencies, making it lightweight and avoiding version conflicts.
The adapter captures and formats QUnit test failures:
Test results include:
karma-qunit automatically collects code coverage data when available:
// Coverage data is automatically included in test completion
tc.complete({
coverage: window.__coverage__
});This integrates with coverage tools like Istanbul/nyc when configured in your Karma setup.