- client: Fix stringify serializing objects (0d0972a5)
- socket.io: Force 0.9.16 which works with Chrome (840ee5f7)
- server: complete acknowledgment (f4144b0d)
- browser: don't add already active socket again on reconnect (37a7958a)
- reporter: sourcemap not working in windows (a9516af2)
- add emscripten memory image as binary suffix (f6b2b561)
- Wrap url.parse to always return an object for query property (72452e9f, closes #1182)
- client.html: always open debug.html in a new browser process (d176bcf4)
- preprocessor: calculate sha1 on content returned from a preprocessor (6cf79557, closes #1204)
- runner: Fix typo in CSS class name for .idle (fc5a7ce0)
- file_list: Incorrect response after remove and add file (0dbc0201)
- preprocessor: Throw error if can't open file (bb4edde9)
- preprocessor: treat *.tgz, *.tbz2, *.txz & *.xz as binary (7b642449)
- web-server: cache static files (eb5bd53f)
- proxy: More useful proxyError log message (96640a75)
- watcher: handle paths on Windows (6164d869)
- logging: Summarize SKIPPED tests in debug.html. Before: hundreds of SKIPPING lines in con (a01100f5, closes #1111)
- server: Force clients disconnect on Windows (28239f42, closes #1109)
- travis_ci: converted node versions as string (25ee6fc9)
- serve ePub as binary files (82ed0c6e)
- preprocessor: add 'mp3' and 'ogg' as binary formats to avoid media corruption in the browser. (65a0767e)
- server: don't wait for socket.io store expiration timeout (cd30a422)
- debug.html: Added whitespace after 'SKIPPED' (218ee859)
- preprocessor: serve NaCl binaries (1cc6a1e3)
- server: properly close flash transport (de89cd33)
- preprocessor: remove ts from binary extensions (82698523)
- server: clear web server close timeout on clean close (34123fed)
- web-server: strip scheme, host and port (06a0da09)
- web-server: inline the config, when serving debug.html (1eb36430)
- don't crash/terminate upon errors within chokidar (2c389311)
- preprocessor: consider SVG files as text files, not binary files (ff288036, closes #1026)
- preprocessor: Adding the
dat
file extension as a recognised binary. (be923571)
- serving binary files (8a30cf55, closes #864, #885)
- config:
- runner: Karma hangs when file paths have \u in them #924 (1199fc4d, closes #924)
- web-server:
- remove dependency on coffee-script (af2d0e72)
- config: better error when Coffee/Live Script not installed (aca84dc9)
- init: generate test-main.(js/coffee) for RequireJS projects (85900c93)
- preprocessor: allow preprocessor to cancel test run (4d669bf3, closes #550)
- reporter: use spaces rather than tabs when formatting errors (112becf7)
- web-server: include html files as (03d7b106)
- launcher: compatibility with old launchers (df557cec)
- support LiveScript configuration (88deebe7)
- client: show error if an adapter is removed (a8b250cf)
- deps: update all deps (355a762c, closes #794)
- reporter: support source maps (rewrite stack traces) (70e4abd9, closes #594)
- watcher: use polling on Mac (66f50d7e)
- events: resolve async events without any listener (4e4bba88)
- launcher:
- completion: add missin --log-level for karma init (1e79eb55)
- init: clean the terminal if killed (e2aa7497)
- revert default usePolling to false (e88fbc24)
- config:
- init:
- launcher: log how long it took each browser to capture (8dd54369)
- Karma does not ship with any plugin. You need to explicitly install all the plugins you need.
karma init
can help with this.
Removed plugins that need to be installed explicitly are:
- karma-jasmine
- karma-requirejs
- karma-coffee-preprocessor
- karma-html2js-preprocessor
- karma-chrome-launcher
- karma-firefox-launcher
- karma-phantomjs-launcher
- karma-script-launcher (e033d561)
- browser: add browserNoActivity configuration (bca8faad)
- reporter: remove SHAs from stack traces (d7c31f97)
- web-server: correct caching headers for SHAs (bf27e80b)
- web-server: disable gzip compression (5ee886bc)
- keep all sockets in the case an old socket will survive (a5945ebc)
- reuse browser instance when restarting disconnected browser (1f1a8ebf)
- client: redirect to redirect_url after all messages are sent (4d05602c)
- plugins: ignore some non-plugins package names (01776030)
- add
browserDisconnectTolerance
config option (19590e1f) - make autoWatch true by default (8454898c)
- browser: improve logging (71b542ad)
- client: show error if no adapter is included (7213877f)
- web-server:
autoWatch
istrue
by default. If you rely on the default value beingfalse
, please set it inkarma.conf.js
explicitly tofalse
. (8454898c)
- do not execute already executing browsers (00136cf6)
- launcher: send SIGKILL if SIGINT does not kill the browser (c0fa49aa)
- browser: reply "start" event (4fde43de)
- config: not append empty module if no custom launcher/rep/prep (ee15a4e4)
- watcher: allow parentheses in a pattern (438eb8dd, closes #728)
- remove
karma
binary in favor of karma-cli (c7d46270) - config: log if no config file is specified (ce4c5646)
- The
karma
module does not exportkarma
binary anymore. The recommended way is to have local modules (karma and all the plugins that your project needs) stored in yourpackage.json
. You can run that particular Karma by./node_modules/karma/bin/karma
. Or you can havekarma-cli
installed globally on your system, which enables you to use thekarma
command.
The global karma
command (installed by karma-cli
) does look for local version of Karma (including parent directories) first and fall backs to a global one.
The bin/karma
binary does not look for any other instances of Karma and just runs the one that it belongs to.
(c7d46270)
- config: use polling by default (53978c42)
- proxy: handle proxied socket.io websocket transport upgrade (fcc2a98f)
- launcher kill method which was throwing an error if no callback was specified bu (5439f1cb)
- static: Use full height for the iFrame. Fix based on PR #714. (f95daf3c)
- watcher:
- redirect client to "return_url" if specified (6af2c897)
- config: add usePolling config (18514d63)
- watcher: ignore initial "add" events (dde1da4c)
- support reconnecting for manually captured browsers (a8ac6d2d)
- reporter: print browser stats immediately after it finishes (65202d87)
- sync page unload (disconnect) (ac9b3f01)
- buffer result messages when polling (c4ad6970)
- allow browser to reconnect during the test run (cbe2851b, closes #82, #590)
- cli: Always pass an instance of fs to processArgs. (06532b70, closes #677)
- init: set default filename (34d49b13, closes #680, #681)
- 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:
- 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)
- pass command line opts through to browser (00d63d0b)
- web-server: compress responses (gzip/deflate) (8e8a2d44)
runnerPort
is merged withport
if you are usingkarma run
with custom--runer-port
, please change that to--port
. (ca4c4d88)
- 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)
- capture window.alert (284c4f5c)
- ship html2js preprocessor as a default plugin (37ecf416)
- fail if zero tests executed (5670415e, closes #468)
- launcher: normalize quoted paths (f2155e0c, closes #491)
- web-server: serve css files (4e305545, closes #431)
- config:
- launcher: better errors when loading launchers (504e848c)
- preprocessor:
- reporter: better errors when loading reporters (c645c060)
- config: pass the config object rather than a wrapper (d2a3c854)
- 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) {
config.set({
port: 123,
customLaunchers: {
'x': {
base: 'Chrome',
flags: ['--disable-web-security']
}
},
customPreprocessors: {
'y': {
base: 'coffee',
bare: false
}
},
customReporters: {
'z': {
base: 'coverage',
type: 'html'
}
}
});
};
- capturing console.log on IE (fa4b686a, closes #329)
- config: fix the warning when using old syntax (5e55d797)
- init: generate correct indentation (5fc17957)
- launcher:
- 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:
- helper: improve useragent detection (eb58768e)
- init:
- proxy: add https proxy support (be878dc5)
- Update your karma.conf.js to export a config function (a37fd6f7):
module.exports = function(karma) {
karma.configure({
autoWatch: true,
// ...
});
};
- better error reporting when loading plugins (d9078a8e)
- config:
- allow inlined plugins (3034bcf9)
- debug: show skipped specs and failure details in the console (42ab936b)
- init: to not give false warning about missing requirejs (562607a1)
- ship coffee-preprocessor and requirejs as default plugins (f34e30db)
- global error handler should propagate errors (dec0c196, closes #368)
- config:
- coverage: always send a result object (62c3c679, closes #365)
- init:
- 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:
- web-server: allow custom file handlers and mime types (2df88287)
-
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 yourpackage.json
) and load in thekarma.conf.js
withplugins = ['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 prependingJASMINE_ADAPTER
into files.
- rename the project to "Karma":
- whenever you call the "testacular" binary, change it to "karma", eg.
testacular start
becomeskarma 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
becomeswindow.__karma__.files
. (026a20f7)
- 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)
- 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)
- 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)
- 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 !
- Init: ask about using Require.js
- 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
- 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
- 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
, usetestacular 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