About front-end website testing
Website integration tests are extremely useful for front-end development. Automatic website testing makes you sure that your website works properly, that you haven’t broken something working on recent updates. I write front-end integration tests using Selenium technology and Nightwatch (written in NodeJS) or JUnit (written in Java).
Setup Nightwatch
npm install -g nightwatch
Run Selenium Server
Download selenium server and run it from command line:
java -jar selenium-server-standalone-3.0.1.jar

Verify that the selenium server runs using the command
netstat -na

Configure
Go to your website project directory. Create folders there:
./tests ./tests/reports/ ./tests/screenshots/
Then in project root directory place nightwatch.json file with this content:
{ "src_folders" : ["tests"], "output_folder" : "./tests/reports", "custom_commands_path" : "", "custom_assertions_path" : "", "page_objects_path" : "", "globals_path" : "", "selenium" : { "start_process" : false, "server_path" : "", "log_path" : "", "host" : "127.0.0.1", "port" : 4444, "cli_args" : { "webdriver.chrome.driver" : "", "webdriver.ie.driver" : "" } }, "test_settings" : { "default" : { "launch_url" : "http://localhost", "selenium_port" : 4444, "selenium_host" : "localhost", "silent": true, "screenshots" : { <---- this option enables screenshot savin when error occurs "enabled" : true, "path" : "./tests/screenshots", "on_failure" : true, "on_error" : true }, "desiredCapabilities": { "browserName": "firefox", "javascriptEnabled": true, "acceptSslCerts": true } } } }
Create tests/ directory in the project root folder.
Create tests/main.js file:
module.exports = { 'Checking page default layout' : function (browser) { browser .url('http://url-to-your-project-dev-site') .waitForElementVisible('body', 1000); browser .useXpath() .getValue('xpath','//*[@id="sale"]/div/input[1]', function(result) { this.assert.equal(result.value,'1510'); }) .elements('xpath','//*[@id="sale"]/descendant::div[@class="row"]', function(result) { this.assert.equal(result.value.length,1); }) .end(); } };
Run tests from command line
nightwatch