Git Product home page Git Product logo

chai-webdriverio's Introduction

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')
expect('.toggle-pane').to.not.be.visible()

What sorts of assertions can we make?

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

  • expect('.list') (CSS selector)
  • expect('a[href=http://google.com]') (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).to.be.there() - Test whether [at least one] matching element exists in the DOM
  • expect(selector).to.be.visible() - Test whether or not [at least one] matching element is visible
  • 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).not.to.have.text('property')

Setup

Setup is pretty easy. Just:

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

// And you're good to go!
browser.url('http://github.com');
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.

Contributing

so easy.

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

Contributors:

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

License

Apache 2.0

Thanks

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.