When comparing Nightwatch.js vs WD.js, the Slant community recommends Nightwatch.js for most people. In the question“What are the best Node.JS Selenium WebDriver client libraries / bindings?” Nightwatch.js is ranked 5th while WD.js is ranked 8th. The most important reason people chose Nightwatch.js is:
Nightwatch solves the [Paradox of Choice](http://www.ted.com/talks/barry_schwartz_on_the_paradox_of_choice?language=en) among testing frameworks such as Jasmine, Cucumber or Mocha+Chai, by including its own BDD-style assertion library, based on Chai.
Ranked in these QuestionsQuestion Ranking
Pros

Pro You don't have to choose a testing framework
Nightwatch solves the Paradox of Choice among testing frameworks such as Jasmine, Cucumber or Mocha+Chai, by including its own BDD-style assertion library, based on Chai.
Pro Includes its own testing framework / assertions library
Pro Test organization is out of the box
Supports page object model, custom commands, custom assertions, and globals.js.

Pro 3rd party integration with Cucumber
Though Cucumber is not officially supported, Nightwatch can be used with Cucumber.
Pro Cleaner and more concise code than WebdriverJS
There is no need to pass the 'driver' instance around, and not as many parentheses.
Using WD.js
function login(username, password) {
return this
.waitForElementByCss('.loginForm', asserters.isDisplayed, seconds(explicit_wait))
.elementById('emailAddress').sendKeys(username)
.elementById('password').sendKeys(password)
.elementById('signInButton').click()
}
Using WebDriverJS
function login(driver, username, password) {
driver.wait(until.elementIsVisible(driver.findElement({css: '.loginForm'})), seconds(explicit_wait));
driver.findElement({id: 'emailAddress'}).sendKeys(username);
driver.findElement({id: 'password'}).sendKeys(password);
driver.findElement({id: 'signInButton'}).click();
}
Cons

Con No official BDD-style syntax support

Con Includes its own testing framework / assertions library
Unlike WebdriverIO, which lets you use various test frameworks and assertion libraries (e.g. Jasmine, Cucumber, Mocha + Chai), Nightwatch comes with its own BDD-style interface for performing assertions, based on Chai.
Here's a simple test example:
module.exports = {
'Demo test Google' : function (browser) {
browser
.url('http://www.google.com')
.waitForElementVisible('body', 1000)
.setValue('input[type=text]', 'nightwatch')
.waitForElementVisible('button[name=btnG]', 1000)
.click('button[name=btnG]')
.pause(1000)
.assert.containsText('#main', 'Night Watch')
.end();
}
};

Con Dropped by Intern
Intern v1 used WD.js, but they dropped it in favor of developing Leadfoot.

Con Less activity than WebdriverIO
WebdriverIO issues: 34 open, 507 closed. First release May 2012 at v0.6
WD.js issues: 18 open, 216 closed. First release: April 2011
