Configuration Examples

Discover how to define advanced testing configurations using karma.conf.js for various JavaScript projects.

Browser Selection & Timeouts

module.exports = function (config) {
  config.set({
    browsers: ['Chrome', 'Firefox'],
    captureTimeout: 60000,
    browserDisconnectTimeout: 60000,
    browserNoActivityTimeout: 60000
  });
};
                

This configuration enables simultaneous testing in Chrome and Firefox with extended timeout settings for unstable environments.

Test Coverage Reporting

module.exports = function (config) {
  config.set({
    frameworks: ['jasmine'],
    files: ['test/**/*.spec.js'],
    preprocessors: {'src/**/*.js': ['es6']},
    coverageReporter: {
      reporters: [
        {type: 'html', dir: 'coverage/'},
        {type: 'json', dir: 'coverage/'}
      ]
    }
  });
};
                

Enables ES6 transpilation and generates both HTML and JSON coverage reports for test coverage analysis across your codebase.

Custom Logging & Reporting

module.exports = function (config) {
  config.set({
    reporters: ['dots', 'progress'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      {
        'karma-mocha-reporter': { 
          options: { 
            colors: { success: 'cyan' },
            clear: false
          }
        }
      }
    ]
  });
};
                

Combines visual test progress with color-coded terminal output for real-time feedback during test execution.

Parallel Test Execution

module.exports = function (config) {
  config.set({
    concurrency: 3,
    files: [
      { pattern: 'test/**/*.spec.js', watched: false }
    ],
    browserConsoleLogOptions: {
      level: 'log',
      format: '%b %T',
      terminal: true
    }
  });
};
                

Runs tests concurrently in 3 browser instances while capturing detailed browser console output for debugging.

Interactive Builder