Create a folder and install night watch
mkdir nightwatch-frontend; npm install nightwatch -g --dev-saveSelect WebDriver Service
So you have an option to what browser and driver you want to use for testing, there’s Firefox(GekoDriver), Chrome(ChromeDriver), Edge(Microsoft WebDriver), Safari(SafariDriver). I always use Chrome for development, so let’s install ChromeDriver.
npm install chromedriver --save-devnightwatch.json
Nightwatch expects to have nightwatch.json configuration file in your root directory and paste this code inside.
{
"src_folders" : ["tests"],
"webdriver" : {
"start_process": true,
"server_path": "node_modules/.bin/chromedriver",
"port": 9515
},
"test_settings" : {
"default" : {
"desiredCapabilities": {
"browserName": "chrome"
}
}
}
}Settings for different environment
This is really convenient and you don’t need to change URL every environment. You can set URL for local development and different URL for testing and production.
{
...
"test_settings" : {
"default" : {
"launch_url" : "http://localhost",
"globals" : {
"myGlobalVar" : "some value",
"otherGlobal" : "some other value"
}
},
"integration" : {
"launch_url" : "http://staging.host",
"globals" : {
"myGlobalVar" : "other value"
}
}
}
}nightwatch --env integrationTest Group
tests/
├── logingroup
| ├── login_test.js
| └── otherlogin_test.js
├── addressbook
| ├── addressbook_test.js
| └── contact_test.js
├── chat
| ├── chatwindow_test.js
| ├── chatmessage_test.js
| └── otherchat_test.js
└── smoketests
├── smoke_test.js
└── othersmoke_test.jsTo run smoke tests:
nightwatch --group smoketestsTo skip smoke tests:
nightwatch --skipgroup smoketestsSkipping multiple groups
nightwatch -skipgroup addessbook,chatYou can use tags as well but were not covering it here.
Lets write some basic test
Inside your tests folder create file first-test.js and paste the code sample and run nightwatch.
module.exports = {
'Demo test Google' : function (browser) {
browser.url('https://www.google.com');
browser.expect.element('#hplogo').to.be.present;
browser
.waitForElementVisible('body')
.setValue('input[type=text]', 'nightwatch')
.waitForElementVisible('input[name=btnK]')
.click('input[name=btnK]')
.pause(1000)
.assert.containsText('#main', 'Night Watch');
browser.end();
}
}nightwatch --env defaultChrome browser will open and simulate the test.
I hope this helps you setup nightwatch basic testing. Chow!!!