Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework.

Download Chaiv1.9.1

for NodeAnother platform?BrowserRails

The chai package is available on npm.
$ npm install chai
View Node Guide

for BrowserAnother platform?NodeRails

The chai.js script is available for download or a hotlink.
Download chai.jsView Browser Guide

for RailsAnother platform?NodeBrowser

Chai is available through Konacha, a modern test harness that takes full advantage of Rails 3 features such as the asset pipeline and engines.
Konacha GitHub Project

Chai has several interfaces that allow the developer to choose the most comfortable. The chain-capable BDD styles provide an expressive language & readable style, while the TDD assert style provides a more classical feel.

Should

chai.should();

foo.should.be.a('string');
foo.should.equal('bar');
foo.should.have.length(3);
tea.should.have.property('flavors')
  .with.length(3);

Expect

var expect = chai.expect;

expect(foo).to.be.a('string');
expect(foo).to.equal('bar');
expect(foo).to.have.length(3);
expect(tea).to.have.property('flavors')
  .with.length(3);

Assert

var assert = chai.assert;

assert.typeOf(foo, 'string');
assert.equal(foo, 'bar');
assert.lengthOf(foo, 3)
assert.property(tea, 'flavors');
assert.lengthOf(tea.flavors, 3);

Plugins extend Chai's assertions to new contexts such as vendor integration & object construction. Developers can build their own plugins to share with community or use the plugin pattern to DRY up existing tests.

Custom Plugins

Browse our growing directory of custom plugins & vendor integrations to find the best tool for your needs.

Develop Plugins

Chai has an extensivity utility belt for plugin developers. Learn how to build your plugins & share.

 

Powered by Open Source

Chai is hosted on GitHub. Have a suggestion or found a bug? Fork this project to help make Chai even better. Even this documentation site is open source and available for contribution.

Involved Community

We have an active mailing list available at our Google Group, or drop by freenode IRC #chaijs channel to get help anytime.