Automatize your tests:
module.exports = function(grunt) {
grunt.initConfig({
nightwatch: {
options: { /* see below */ }
}
});
grunt.loadNpmTasks('grunt-nightwatch');
};
Write some tests:
tests/default/google-test.js
module.exports = {
'Demo test Google': function(browser) {
browser
.url('http://www.google.com')
.waitForElementVisible('body', 1000)
.setValue('input[type=text]', 'nodejs')
.waitForElementVisible('button[name=btnG]', 1000)
.click('button[name=btnG]').pause(1000)
.assert.containsText('#ires', 'joyent/node')
.end();
}
};
Execute:
$ grunt nightwatch # target: default
$ grunt nightwatch:A # target: A
$ grunt nightwatch:A:B # targets: A, B
Currently, grunt-nightwatch
supports the same options as nwrun can handle.
Note that the nighwatch.json file settings is fully supported, but your task options will override them if needed.
module.exports = function(grunt) {
grunt.initConfig({
nightwatch: {
options: {
// task options
standalone: true,
// download settings
jar_version: '2.44.0',
jar_path: '/opt/selenium/server.jar',
jar_url: 'http://domain.com/files/selenium-server-standalone-1.2.3.jar',
// nightwatch settings
globals: { foo: 'bar' },
globals_path: 'custom_tests/globals',
custom_commands_path: 'custom_tests/helpers',
custom_assertions_path: 'custom_tests/asserts',
src_folders: ['custom_tests/nightwatch'],
output_folder: 'report',
test_settings: {},
selenium: {}
},
custom: {
// custom target + overrides
config_path: '/path/to/file.json',
src_folders: ['other_tests/nightwatch']
}
}
});
};
Since 0.5.0
, grunt-nightwatch
will pass grunt.cli.options
as the argv
option to nwrun
.
This means you can use grunt nightwatch:A:B --group foo --tag bar
directly on the CLI.
When running in parallel Nightwatch will copy the process.argv
and it may produce bugs if you expect a single boolean argument like grunt nightwatch:A:B --standalone
.
It will spawn grunt nightwatch --standalone --env A
and the argv will be erroneously parsed as --standalone=--env
.
All options are the same as the main settings.
nightwatch: {
demo: { /* see above */ }
}
Now you can execute grunt nightwatch:demo
to run your tests.
Note that your tests must be grouped together as follows: tests/<group>/test.js
nightwatch: {
options: {
// task options
standalone: true,
// download settings
jar_version: '2.53.0',
jar_path: '../nightwatch/selenium-server-standalone-2.53.0.jar',
// jar_url: 'http://domain.com/files/selenium-server-standalone-1.2.3.jar',
src_folders: ['custom_tests/nightwatch'],
test_settings: {
phantom: {
"desiredCapabilities": {
"browserName": "phantomjs",
"phantomjs.binary.path": "binaries/nightwatch/phantomjs.exe"
}
},
firefox: {
"desiredCapabilities": {
"browserName": "firefox"
}
},
chrome: {
"desiredCapabilities": {
"browserName": "chrome"
},
"cli_args" : {
"webdriver.chrome.driver" : "binaries/nightwatch/chromedriver.exe"
}
}
}
}
}
This configuration allows you to run your tests against different browsers by calling grunt nightwatch:chrome
or grunt nightwatch:phantom
etc.