Testing JavaScript is hard. Testing JavaScript meant for the browser is even harder. There is not any one thing in particular, but building an entire testing ecosystem that plays well with itself and fulfills all the requirements of a modern, robust testing configuration is an immense undertaking. We have been there. We have trialed and erred. We have backtracked. We have hit many more dead ends than I care to talk about.
All of that work has led us here.
- Mocha, Chai, and Expect based testing framework.
- RequireJS backed dependency system.
- PhantomJS AND in-browser testing.
- Ability to run full test suite or just one file.
- Code coverage powered by Istanbul.
- build.xml for getting started with Jenkins.
- Sample Jenkins config.xml for metrics configuration.
To get things ready, just do the following:
git clone https://github.com/jmather/testing-browser-javascript-completely
npm install
grunt bower
Command | Description |
---|---|
test |
Run all unit tests |
test:browser |
Run all unit tests in your preferred browser |
test:coverage |
Run code coverage |
Now test
and test:browser
also have an optional argument --file
which can be passed a single file.
This is quite helpful if you are just trying to finish up a single unit test.
To run all of your unit tests:
grunt test
To run one unit test:
grunt test --file test/unit/file.test.js
To run all of your unit tests in the browser:
grunt test:browser
To run one unit test in the browser:
grunt test:browser --file test/unit/file.test.js