Zombie.js
Zombie.js is a fast, headless testing framework that provides various functionality to write tests that hit your full technology stack. While I generally prefer to write more fine-grained, isolated tests, it's important to also have a few smoke tests and/or integration tests to verify end-to-end functionality. Zombie makes these kinds of tests easy, while allowing me to still use ExpectThat and Mocha.
The Example
Here's a simple example that populates two input elements and then verifies that the values of those input fields contain the expected text.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
zombie = require("zombie") | |
require("expectThat.mocha") | |
browser = new zombie.Browser() | |
describe "When populating two text boxes", -> | |
expectThat "they should have values of foo and bar", (done) -> | |
browser.visit "http://127.0.0.1/~dmohl/mocha-zombie/specs.html", -> | |
browser | |
.fill(".search", "foo") | |
.fill("#test", "bar") | |
input1 = browser.querySelector ".search" | |
input2 = browser.querySelector "#test" | |
input1.value.should equal "foo" | |
input2.value.should equal "bar" | |
done() |
You can find the full example here.
After a few commands such as " coffee --output lib/ specs/ " and " mocha 'lib/example.spec.js' --reporter spec ", you should see an output that looks something like this:

To learn more about ExpectThat, visit https://github.com/dmohl/expectThat.