Nightwatch.js

End-to-end testing, the easy way.

Browser Automation

Nightwatch.js is an integrated, easy to use End-to-End testing solution for web applications and websites, written in Node.js. It uses the W3C WebDriver API to drive browsers and perform commands and assertions on DOM elements.

  • Clean Syntax

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

  • Cloud Testing Support

    Works with BrowserStack out of the box. Other cloud testing providers, such as SauceLabs or LambdaTest are easy to add.

  • 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.

  • Test Runner

    Built-in command-line test runner which runs the tests either sequentially or in parallel, with retries and implicit waits. Also supports grouping of test suites and tags.

  • 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 opens the search engine Ecosia.org and searches for "nightwatch", then verifies if the term first result is the Nightwatch.js website.


describe('Demo test Ecosia.org', function() {
  test('search for nightwatch', function(browser) {
    browser
      .url('https://www.ecosia.org/')
      .waitForElementVisible('body')
      .assert.titleContains('Ecosia')
      .assert.visible('input[type=search]')
      .sendKeys('input[type=search]', 'nightwatch')
      .assert.visible('button[type=submit]')
      .click('button[type=submit]')
      .assert.containsText('.mainline-results', 'Nightwatch.js')
      .end();
  })
});

Ready in One Minute

A demo of how you'll be up & running in one minute with Nightwatch using Chrome and Firefox (assuming Node.js and NPM are installed).

npm install nightwatch geckodriver chromedriver --save-dev
npx nightwatch node_modules/nightwatch/examples/tests/ecosia.js