This package has been deprecated

Author message:

Package is no longer supported... use at your own risk

TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

chai-webdriverio Travis badge Greenkeeper badge

Provides webdriverio sugar for the Chai assertion library. Allows you to create expressive integration tests:

expect('.frequency-field').to.have.text('One time')

What sorts of assertions can we make?

All assertions start with a WebdriverIO-compatible selector, for example:

  • expect('.list') (CSS selector)
  • expect('a[href=]') (CSS Selector)
  • expect('//BODY/DIV[6]/DIV[1]') (XPath selector)
  • expect('a*=Save') (Text selector)

Then, we can add our assertion to the chain.

  • expect(selector) - Test whether [at least one] matching element exists in the DOM
  • expect(selector) - Test whether or not [at least one] matching element is displayed
  • expect(selector).to.have.text('string') - Test the text value of the selected element(s) against supplied string. Succeeds if at least one element matches exactly
  • expect(selector).to.have.text(/regex/) - Test the text value of the selected element(s) against the supplied regular expression. Succeeds if at least one element matches
  • expect(selector).to.have.count(number) - Test how many elements exist in the DOM with the supplied selector
  • expect(selector).to.have.value('x') - Test that [at least one] selected element has the given value
  • expect(selector).to.have.focus() - Test that [at least one] selected element has focus

You can also always add a not in there to negate the assertion:

  • expect(selector)'property')


Setup is pretty easy. Just:

var chai = require('chai');
var chaiWebdriver = require('chai-webdriverio').default;

// And you're good to go!
chai.expect('#site-container h1.heading').to.not.contain.text("I'm a kitty!");

Default Wait Time

As an optional argument to the initializer, you can add an options object in this format:

var options = {defaultWait: 500} // 500ms
chai.use(chaiWebdriver(browser, options));

The defaultWait parameter will cause chai-webdriverio to wait the specified number of milliseconds for a given selector to appear before failing (if it is not yet present on the page). You can use immediately to skip this default wait time:

expect(selector).to.immediately.have.text('string'); // fails immediately if element is not found

Beware: For immediately to work, your implicit wait time in WebdriverIO must be set to 0. The immediately flag has no way to skip WebdriverIO's implicit wait.



WebdriverIO version Compatible chai-webdriverio version
5.x.x >= 1.0.0
4.x.x 0.4.3


chai-webdriverio version >= 1.0.0 requires Node.js 8.x


so easy.

npm                # download the necessary development dependencies
npm transpile      # compile ES6 into javascript
npm test           # build and run the specs


  • @mltsy : exist, text assertions, documentation & test adjustments


Apache 2.0


Thanks to goodeggs for creating: chai-webdriver which inspired this module.

Package Sidebar


npm i @rpii/chai-webdriverio

Weekly Downloads






Unpacked Size

89.6 kB

Total Files


Last publish


  • rpii