Heads Up! You're viewing the docs for v0.10, an old version of Karma. v3.0 is the newest.


v0.10.9 (2013-12-29)


v0.10.8 (2013-12-04)

Bug Fixes

  • preprocess: set correct extension for the preprocessed path (69cd4ebc, closes #843)

v0.10.7 (2013-12-01)

Bug Fixes

  • config:
    • ignore empty string patterns (cd045943)
    • apply CLI logger options as soon as we can (6a02056c)

v0.10.6 (2013-11-26)

Bug Fixes

  • browser: reply "start" event (8c1feae1)


  • launcher: send SIGKILL if SIGINT does not kill the browser (eefcf00d)

v0.10.5 (2013-11-20)

Bug Fixes

  • config: not append empty module if no custom launcher/rep/prep (c025cdcd)
  • watcher: allow parentheses in a pattern (8eaa0562, closes #728)


  • config: log if no config file is specified (27a07912)

v0.10.4 (2013-10-25)

v0.10.3 (2013-10-25)

Bug Fixes

  • static: Use full height for the iFrame. Fix based on PR #714. (ca98f3a4)
  • watcher:


  • watcher: ignore initial "add" events (7ab9e7bd)

v0.10.2 (2013-08-21)

Bug Fixes

  • don't mark a browser captured if already being killed/timeouted (21230979, closes #88)


  • sync page unload (disconnect) (ac9b3f01)
  • buffer result messages when polling (c4ad6970)
  • allow browser to reconnect during the test run (cbe2851b, closes #82, #590)

v0.10.1 (2013-08-06)

Bug Fixes

v0.10.0 (2013-08-06)

v0.9.8 (2013-08-05)

Bug Fixes

  • init: install plugin as dev dependency (46b7a402)
  • runner: do not confuse client args with the config file (6f158aba)


  • config: default config can be karma.conf.js or karma.conf.coffee (d4a06f29)
  • runner:

v0.9.7 (2013-07-31)

Bug Fixes

  • init: trim the inputs (b72355cb, closes #663)
  • web-server: correct urlRegex in custom handlers (a641c2c1)


  • basic bash/zsh completion (9dc1cf6a)
  • runner: allow passing changed/added/removed files (b598106d)
  • watcher: make the batching delay configurable (fa139312)

v0.9.6 (2013-07-28)


  • pass command line opts through to browser (00d63d0b)
  • web-server: compress responses (gzip/deflate) (8e8a2d44)

Breaking Changes

  • runnerPort is merged with port if you are using karma run with custom --runer-port, please change that to --port. (ca4c4d88)

v0.9.5 (2013-07-21)

Bug Fixes

  • detect a full page reload, show error and recover (15d80f47, closes #27)
  • better serialization in dump/console.log (fd46365d, closes #640)
  • browsers_change event always has collection as arg (42bf787f)
  • init: generate config with the new syntax (6b27fee5)
  • reporter: prevent throwing exception when null is sent to formatter (3b49c385)
  • watcher: ignore fs.stat errors (74ccc9a8)


v0.9.4 (2013-06-28)

Bug Fixes

  • config:
    • make the config changes backwards compatible (593ad853)
    • better errors if file invalid or does not exist (74b533be)
    • allow parsing the config multiple times (78a7094e)
  • launcher: better errors when loading launchers (504e848c)
  • preprocessor:
    • do not show duplicate warnings (47c641f7)
    • better errors when loading preprocessors (3390a00b)
  • reporter: better errors when loading reporters (c645c060)


  • config: pass the config object rather than a wrapper (d2a3c854)

Breaking Changes

  • please update your karma.conf.js as follows (d2a3c854):
// before:
module.exports = function(karma) {
  karma.configure({port: 123});
  karma.defineLauncher('x', 'Chrome', {
    flags: ['--disable-web-security']
  karma.definePreprocessor('y', 'coffee', {
    bare: false
  karma.defineReporter('z', 'coverage', {
    type: 'html'

// after:
module.exports = function(config) {
    port: 123,
    customLaunchers: {
      'x': {
        base: 'Chrome',
        flags: ['--disable-web-security']
    customPreprocessors: {
      'y': {
        base: 'coffee',
        bare: false
    customReporters: {
      'z': {
        base: 'coverage',
        type: 'html'

v0.9.3 (2013-06-16)

Bug Fixes

  • capturing console.log on IE (fa4b686a, closes #329)
  • config: fix the warning when using old syntax (5e55d797)
  • init: generate correct indentation (5fc17957)
  • launcher:
    • ignore exit code when killing/timeouting (1029bf2d, closes #444)
    • handle ENOENT error, do not retry (7d790b29, closes #452)
  • logger: configure the logger as soon as possible (0607d67c)
  • preprocessor: use graceful-fs to prevent EACCESS errors (279bcab5, closes #566)
  • watcher: watch files that match watched directory (39401175, closes #521)


  • simplify loading plugins using patterns like karma-* (405a5a62)
  • client: capture all console.* log methods (683e6dcb)
  • config:
    • make socket.io transports configurable (bbd5eb86)
    • allow configurable launchers, preprocessors, reporters (76bdac16, closes #317)
    • add warning if old constants are used (7233c5fb)
    • require config as a regular module (a37fd6f7, closes #304)
  • helper: improve useragent detection (eb58768e)
  • init:
    • generate coffee config files (d2173717)
    • improve the questions a bit (baecadb2)
  • proxy: add https proxy support (be878dc5)

Breaking Changes

  • Update your karma.conf.js to export a config function (a37fd6f7):
module.exports = function(karma) {
    autoWatch: true,
    // ...

v0.9.2 (2013-04-16)

Bug Fixes

  • better error reporting when loading plugins (d9078a8e)
  • config:
    • Separate ENOENT error handler from others (e49dabe7)
    • ensure basePath is always resolved (2e5c5aaa)


  • allow inlined plugins (3034bcf9)
  • debug: show skipped specs and failure details in the console (42ab936b)

v0.9.1 (2013-04-04)

Bug Fixes

  • init: to not give false warning about missing requirejs (562607a1)


  • ship coffee-preprocessor and requirejs as default plugins (f34e30db)

v0.9.0 (2013-04-03)

Bug Fixes

  • global error handler should propagate errors (dec0c196, closes #368)
  • config:
    • Check if configFilePath is a string. Fixes #447. (98724b6e)
    • do not change urlRoot even if proxied (8c138b50)
  • coverage: always send a result object (62c3c679, closes #365)
  • init:
    • generate plugins and frameworks config (17798d55)
    • fix for failing "testacular init" on Windows (0b5b3853)
  • preprocessor: resolve relative patterns to basePath (c608a9e5, closes #382)
  • runner: send exit code as string (ca75aafd, closes #403)


  • display the version when starting (39617395, closes #391)
  • allow multiple preprocessors (1d17c1aa)
  • allow plugins (125ab4f8)
  • config:
    • always ignore the config file itself (103bc0f8)
    • normalize string preprocessors into an array (4dde1608)
  • web-server: allow custom file handlers and mime types (2df88287)

Breaking Changes

  • reporters, launchers, preprocessors, adapters are separate plugins now, in order to use them, you need to install the npm package (probably add it as a devDependency into your package.json) and load in the karma.conf.js with plugins = ['karma-jasmine', ...]. Karma ships with couple of default plugins (karma-jasmine, karma-chrome-launcher, karma-phantomjs-launcher).

  • frameworks (such as jasmine, mocha, qunit) are configured using frameworks = ['jasmine']; instead of prepending JASMINE_ADAPTER into files.

v0.8.0 (2013-03-18)

Breaking Changes

  • rename the project to "Karma":
  • whenever you call the "testacular" binary, change it to "karma", eg. testacular start becomes karma start.
  • if you rely on default name of the config file, change it to karma.conf.js.
  • if you access __testacular__ object in the client code, change it to __karma__, eg. window.__testacular__.files becomes window.__karma__.files. (026a20f7)

v0.6.1 (2013-03-18)

Bug Fixes

  • config: do not change urlRoot even if proxied (1be1ae1d)
  • coverage: always send a result object (2d210aa6, closes #365)
  • reporter.teamcity: report spec names and proper browser name (c8f6f5ea)

v0.6.0 (2013-02-22)

v0.5.11 (2013-02-21)

Bug Fixes

  • adapter.requirejs: do not configure baseUrl automatically (63f3f409, closes #291)
  • init: add missing browsers (Opera, IE) (f39e5645)
  • reporter.junit: Add browser log output to JUnit.xml (f108799a, closes #302)


  • add Teamcity reporter (03e700ae)
  • adapter.jasmine: remove only last failed specs anti-feature (435bf72c, closes #148)
  • config: allow empty config file when called programmatically (f3d77424, closes #358)

v0.5.10 (2013-02-14)

Bug Fixes

  • init: fix the logger configuration (481dc3fd, closes #340)
  • proxy: fix crashing proxy when browser hangs connection (1c78a01a)


  • set urlRoot to /karma/ when proxying the root (8b4fd64d)
  • adapter.requirejs: normalize paths before appending timestamp (94889e7d)
  • update dependencies to the latest (93f96278, e34d8834)

v0.5.9 (2013-02-06)

Bug Fixes

  • adapter.requirejs: show error if no timestamp defined for a file (59dbdbd1)
  • init: fix logger configuration (557922d7)
  • reporter: remove newline from base reporter browser dump (dfae18b6, closes #297)
  • reporter.dots: only add newline to message when needed (dbe1155c


  • add "debug" button to easily open debugging window (da85aab9)
  • config: support running on a custom hostname (b8c5fe85)
  • reporter.junit: add a 'skipped' tag for skipped testcases (6286406e, closes #321)


  • Fix #283
  • Suppress global leak for istanbul
  • Fix growl reporter to work with testacular run
  • Upgrade jasmine to 1.3.1
  • Fix file sorting
  • Fix #265
  • Support for more mime-types on served static files
  • Fix opening Chrome on Windows
  • Upgrade growly to 1.1.0


  • Support code coverage for qunit.
  • Rename port-runner option in cli to runner-port
  • Fix proxy handler (when no proxy defined)
  • Fix #65


  • Growl reporter !
  • Batch changes (eg. git checkout causes only single run now)
  • Handle uncaught errors and disconnect all browsers
  • Global binary prefers local versions


  • Add QUnit adapter
  • Report console.log()


  • Fix PhantomJS launcher
  • Fix html2js preprocessor
  • NG scenario adapter: show html output


  • Add code coverage !



  • Support for Require.js
  • Fix testacular init basePath


  • Add preprocessor for LiveScript
  • Fix JUnit reporter
  • Enable process global in config file
  • Add OS name in the browser name
  • NG scenario adapter: hide other outputs to make it faster
  • Allow config to be written in CoffeeScript
  • Allow espaced characters in served urls

v0.4.0 (stable)


  • Allow calling run() pragmatically from JS


  • Fix runner to wait for stdout, stderr
  • Make routing proxy always changeOrigin


  • Fix angular-scenario adapter + junit reporter
  • Use flash socket if web socket not available


  • Retry starting a browser if it does not capture
  • Update mocha to 1.5.0
  • Handle mocha's xit


  • Kill browsers that don't capture in captureTimeout ms
  • Abort build if any browser fails to capture
  • Allow multiple profiles of Firefox


  • Remove Travis hack
  • Fix Safari launcher


  • Remove custom launcher (constructor)
  • Launcher - use random id to allow multiple instances of the same browser
  • Fix Firefox launcher (creating profile)
  • Fix killing browsers on Linux and Windows


  • Fix opera launcher to create new prefs with disabling all pop-ups


  • Change "reporter" config to "reporters"
  • Allow multiple reporters
  • Fix angular-scenario adapter to report proper description
  • Add JUnit xml reporter
  • Fix loading files from multiple drives on Windows
  • Fix angular-scenario adapter to report total number of tests


  • Allow proxying files, not only directories


  • Disable autoWatch if singleRun
  • Add custom script browser launcher
  • Fix cleaning temp folders


  • Run tests on start (if watching enabled)
  • Add launcher for IE8, IE9


  • Change browser binaries on linux to relative
  • Add report-slower-than to CLI options
  • Fix PhantomJS binary on Travis CI

v0.2.0 (stable)


  • Launch Canary with crankshaft disabled
  • Make the captured page nicer


  • Fix jasmine memory leaks
  • support filename and dirname in config files


  • Report slow tests (add reportSlowerThan config option)
  • Report time in minutes if it's over 60 seconds
  • Mocha adapter: add ability to fail during beforeEach/afterEach hooks
  • Mocha adapter: add dump()
  • NG scenario adapter: failure includes step name
  • Redirect /urlRoot to /urlRoot/
  • Fix serving with urlRoot


  • Adapter for AngularJS scenario runner
  • Allow serving Testacular from a subpath
  • Fix race condition in testacular run
  • Make testacular one binary (remove testacular-run, use testacular run)
  • Add support for proxies
  • Init script for generating config files (testacular init)
  • Start Firefox without custom profile if it fails
  • Preserve order of watched paths for easier debugging
  • Change default port to 9876
  • Require node v0.8.4+


  • Fix race condition in manually triggered run
  • Fix autoWatch config


  • Mocha adapter
  • Fix watching/resolving on Windows
  • Allow glob patterns
  • Watch new files
  • Watch removed files
  • Remove unused config (autoWatchInterval)


  • Remove absolute paths from urls (fixes Windows issue with C:\)
  • Add browser launcher for PhantomJS
  • Fix some more windows issues


  • Allow require() inside config file
  • Allow custom browser launcher
  • Add browser launcher for Opera, Safari
  • Ignore signals on windows (not supported yet)


  • Single run mode (capture browsers, run tests, exit)
  • Start browser automatically (chrome, canary, firefox)
  • Allow loading external files (urls)


  • Allow console in config
  • Warning if pattern does not match any file


  • Add timing (total / net - per specs)
  • Dots reporter - wrap at 80


  • Add DOTS reporter
  • Add no-colors option for reporters
  • Fix web server to expose only specified files


  • Proper exit code for runner
  • Dynamic port asigning (if port already in use)
  • Add log-leve, log-colors cli arguments + better --help
  • Fix some IE errors (indexOf, forEach fallbacks)


  • Allow overriding configuration by cli arguments (+ --version, --help)
  • Persuade IE8 to not cache context.html
  • Exit runner if no captured browser
  • Fix delayed execution (streaming to runner)
  • Complete run if browser disconnects
  • Ignore results from previous run (after server reconnecting)
  • Server disconnects - cancel execution, clear browser info


  • Rename to Testacular


  • Better debug mode (no caching, no timestamps)
  • Make dump() a bit better
  • Disconnect browsers on SIGTERM (kill, killall default)


  • Fix memory (some :-D) leaks
  • Add dump support
  • Add runner.html


  • Progress bar reporting
  • Improve error formatting
  • Add Jasmine lib (with iit, ddescribe)
  • Reconnect client each 2sec, remove exponential growing


  • Jasmine adapter: ignore last failed filter in exclusive mode
  • Jasmine adapter: add build (no global space pollution)


  • Run only last failed tests (jasmine adapter)


  • Initial version with only very basic features