Nightwatch.js

Browser automated testing, the easy way.

Browser Automation

Nightwatch.js is an integrated, easy to use End-to-End testing solution for browser based apps and websites, written on Node.js. It uses the W3C WebDriver API to perform commands and assertions on DOM elements.

  • Clean Syntax

    Simple but powerful syntax which enables you to write tests very quickly, using only Javascript (Node.js) and CSS or Xpath selectors.

  • Cloud Testing Support

    Comes with its own cloud testing platform - NightCloud.io (TBA). Works with other cloud testing providers, such as SauceLabs and BrowserStack.

  • Page Objects Support

    Fluent and easy to work with Page Object Model support to better organise elements and sections, with support for both CSS or Xpath selectors.

  • Easy to Extend

    Flexible command and assertion framework which makes it easy to extend to implement your application custom commands and assertions.

  • Built-in Test Runner

    Built-in command-line test runner which can run the tests either sequentially or in parallel, together, by group, tags or single. Also, support for Mocha runner is built-in.

  • WebDriver Service

    Manages automatically Selenium or WebDriver services (ChromeDriver, GeckoDriver, Edge, Safari) in a separate child process.

  • Continuous Integration

    JUnit XML reporting is built-in so you can integrate your tests in your build process with systems such as Teamcity, Jenkins, Hudson etc.

Demo Test

The test below navigates to google.com and searches for "rembrandt van rijn", then verifies if the term first result is the Wikipedia page of Rembrandt.


module.exports = {
  'Demo test Google' : function (client) {
    client
      .url('http://www.google.com')
      .waitForElementVisible('body', 1000)
      .assert.title('Google')
      .assert.visible('input[type=text]')
      .setValue('input[type=text]', 'rembrandt van rijn')
      .waitForElementVisible('button[name=btnG]', 1000)
      .click('button[name=btnG]')
      .pause(1000)
      .assert.containsText('ol#rso li:first-child',
        'Rembrandt - Wikipedia')
      .end();
  }
};

Run and manage your Nightwatch tests
with absolutely no hassle, no config, no nonsense.

Learn More