Chai is a BDD / TDD assertion library for Node.js and the browser that can be delightfully paired with any JavaScript testing framework.
Download Chai ¶
For Node ¶
The chai
package is available on npm.
npm install chai --save-dev
For Browser ¶
The chai.js
script is available for download or a hotlink.
Getting Started ¶
Learn how to install and use Chai through a series of guided walkthroughs.
API Documentation ¶
Explore the BDD & TDD language specifications for all available assertions.
Plugin Directory ¶
Extend Chai with additional assertions and vendor integration.
Interfaces ¶
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 ¶
import "chai/register-should.js";
foo.should.be.a("string");
foo.should.equal("bar");
foo.should.have.lengthOf(3);
tea.should.have.property("flavors").with.lengthOf(3);
Expect ¶
import { expect } from "chai";
expect(foo).to.be.a("string");
expect(foo).to.equal("bar");
expect(foo).to.have.lengthOf(3);
expect(tea).to.have.property("flavors").with.lengthOf(3);
Assert ¶
import { assert } from "chai";
assert.typeOf(foo, "string");
assert.equal(foo, "bar");
assert.lengthOf(foo, 3);
assert.property(tea, "flavors");
assert.lengthOf(tea.flavors, 3);
Plugins ¶
Plugins extend Chai's assertions to new contexts such as vendor integration & object construction. Developers can build their own plugins to share with the community or use the plugin pattern to DRY up existing tests.
Featured Plugin: chai-webdriver ¶
Create expressive integration tests with Chai and selenium-webdriver.
import sw from "selenium-webdriver";
import { expect, use } from "chai";
import chaiWebdriver from "chai-webdriver";
const driver = new sw.Builder()
.withCapabilities(sw.Capabilities.chrome())
.build();
// And then...
use(chaiWebdriver(driver));
driver.get("http://chaijs.com/");
expect("nav h1").dom.to.contain.text("Chai");
expect("#node .button").dom.to.have.style("float", "left");
Custom Plugins ¶
Browse our growing directory of custom plugins & vendor integrations to find the best tool for your needs.
Develop Plugins ¶
Chai has an extensive 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.
Join our Community ¶
We have an active GitHub Discussions forum where you can ask questions, discuss improvements, and contribute to Chai.