Intern is a complete test stack for JavaScript designed to help you write and run consistent, high-quality test cases for your JavaScript libraries and applications. It can be used to test any JavaScript code. Its functional testing capabilities can even be used to test non-JavaScript Web sites and apps, if you really want.
- 100% AMD, 100% Promises/A-based API
- Instant one-off test execution in the browser or Node.js
- Full statement, branch, function, and line code coverage reporting with Istanbul
- Functional testing using the standard WebDriver API with a custom fluid, promises-wrapped interface based on WD.js
- Integration with Sauce Labs for super simple continuous integration
- Tested with Travis CI
- Extensible interfaces (comes with TDD, BDD, and objects)
- Extensible reporters (comes with basic console, WebDriver, and lcov reporters; tap planned)
- Extensible assertions using the Chai Assertion Library (or any other assertion library that throws errors)
Feature | Intern | QUnit | Mocha | Jasmine | BusterJS | Karma |
---|---|---|---|---|---|---|
Code coverage analysis | Yes | No | Yes | No | Extension | Yes |
True1 browser events | Yes | No | No | No | No | No |
Native AMD support | Yes | No | No | No | Extension | Extension |
Stand-alone2 browser support | Yes | Yes | Build required | Build required | Experimental | No |
Node.js support | Yes | No3 | Yes | Yes | Yes | Yes |
Any4 assertion library | Yes | No | Yes | No | Yes | N/A |
Default test interface | TDD, BDD, object | TDD | TDD, BDD, object | BDD | TDD, BDD | N/A |
Extensible test interfaces | Yes | No | Yes | No | Yes | N/A |
Extensible reporters | Yes | No | Yes | No | Yes | N/A |
Asynchronous support | Promises | Globals | Callbacks | Polling | Callbacks, Promises | Callbacks |
Selenium support | Yes | No | No | No | No | No |
Built-in CI support | Yes | No | No | No | Yes | Yes |
Built-in Sauce Labs integration | Yes | No | No | No | No | No |
Built-in Travis CI integration | Yes | No | No | No | No | Yes |
Grunt support | Yes | 3rd party | 3rd party | 3rd party | 3rd party | 3rd party |
1: True events are not generated by JavaScript within the sandbox, so are able to accurately emulate how a user actually interacts with the application. Synthetic events generated by other test frameworks are limited by browser security restrictions.
2: Stand-alone means that unit tests can be executed in a browser by navigating to a URL without needing any special HTTP server or proxy for support.
3: Some older versions of QUnit can be used in conjunction with a 3rd party module to run on Node.js, but newer versions do not support Node.js and will break even with the use of 3rd party modules.
4: If it throws an error on failure, it works with Intern.
-
Install from npm
cd /my/project/root npm install intern --save-dev
-
Create a copy of the example configuration file in your package’s test directory and edit appropriately. See the configuration documentation for a list of all available options.
mkdir tests ; cp node_modules/intern/tests/example.intern.js tests/intern.js
-
Verify your configuration works by running the Node.js client and seeing that no errors are output.
node node_modules/intern/client.js config=tests/intern
-
Start writing tests! See the writing tests documentation to learn how.
If you need to support IE 6–8, there is also a version of Intern for legacy browsers.
Intern is available under the terms of the New BSD License. All code, with the exception of
portions of the assert.js
library and tests in the geezer branch, is developed under the terms of the
Dojo Foundation CLA.
© 2012–2013 Colin Snover http://zetafleet.com
© 2013 SitePen, Inc. http://sitepen.com
All rights reserved.