Nightwatch 配置
nightwatch.conf.js
Nightwatch 测试运行器二进制文件需要一个配置文件,默认情况下使用当前工作目录中的 nightwatch.conf.js
或 nightwatch.json
文件。如果两个文件都存在,则 nightwatch.conf.js
优先。
以下是一个示例配置文件,它使用 Firefox 作为目标浏览器,并假设已安装 geckodriver
NPM 包。
module.exports = {
// An array of folders (excluding subfolders) where your tests are located;
// if this is not specified, the test source must be passed as the second argument to the test runner.
src_folders: [],
webdriver: {
start_process: true,
port: 4444,
server_path: require('geckodriver').path,
cli_args: [
// very verbose geckodriver logs
// '-vv'
]
},
test_settings: {
default: {
launch_url: 'https://nightwatch.node.org.cn',
desiredCapabilities : {
browserName : 'firefox'
}
}
}
};
自动生成的配置
从版本 **1.3** 开始,Nightwatch 将在第一次运行或未找到其他配置文件时,根据操作系统和现有驱动程序包生成 nightwatch.conf.js
配置文件。如果在当前文件夹中找到 nightwatch.json
或 nightwatch.conf.js
文件,则不会发生任何操作,并且不会生成该文件。
请随意编辑此文件并根据需要调整设置。到目前为止,我们已包含对 Chrome、Firefox、Safari 和 Internet Explorer 的支持。
以下包可以使用 NPM,如果安装,Nightwatch 将自动检测和配置测试运行器
- geckodriver – 用于在 Firefox 中运行测试
- chromedriver – 用于在 Chrome 中运行测试
- selenium-server – 用于使用 Selenium 服务器
使用测试环境
您可能会针对多个环境和/或不同的浏览器运行测试。Nightwatch 提供了一个用于定义不同环境的概念,您可以在其中设置特定的测试设置。
环境位于配置文件中的 "test_settings"
字典下。始终需要一个 default
环境,其他环境将从中继承设置。您可以根据需要覆盖每个环境的任何测试设置。
自动生成的 nightwatch.conf.js
包含几个预定义的测试环境,用于针对几个不同的浏览器(Firefox、Chrome、Safari)运行测试,以及使用 Selenium 服务器或流行的云测试提供商 Browserstack 运行测试。
这是一个摘录
module.exports = {
src_folders: [],
test_settings: {
default: {
launch_url: 'https://nightwatch.node.org.cn'
},
safari: {
desiredCapabilities : {
browserName : 'safari',
alwaysMatch: {
acceptInsecureCerts: false
}
},
webdriver: {
port: 4445,
start_process: true,
server_path: '/usr/bin/safaridriver'
}
},
firefox: {
desiredCapabilities : {
browserName : 'firefox'
},
webdriver: {
start_process: true,
port: 4444,
server_path: require('geckodriver').path
}
}
}
}
考虑到此设置,要运行测试,例如,针对 Safari,我们将运行以下命令行
nightwatch --env safari
请参考 定义测试环境 页面以了解有关如何使用测试环境的更多信息。
使用测试全局变量
Nightwatch 提供的另一个有用概念是测试全局变量。以最简单的形式,它是在配置文件中定义的名值对字典。
全局变量可以定义为 "globals"
属性,也可以定义为外部文件,该文件指定为 "globals_path"
属性。
以下是在 nightwatch.json
中使用 "globals"
属性的示例定义
{
"src_folders": [],
"test_settings": {
"default": {
"launch_url": "https://nightwatch.node.org.cn",
"globals": {
"myGlobalVar" : "some value",
"otherGlobal" : "some other value"
}
}
}
}
与 launch_url
属性一样,globals
对象直接在传递给测试的 Nightwatch api 上可用。
module.exports = {
'Demo test' : function (browser) {
console.log(browser.globals.myGlobalVar); // myGlobalVar == "some value"
}
};
请参考 使用测试全局变量 页面以了解有关如何使用测试全局变量的更多信息。
使用 Env 变量
nightwatch.conf.js
或 nightwatch.json
中的任何配置值都可以指定为环境变量的名称。如果找到,Nightwatch 将自动从 process.env
中填充该值。
Dotenv 文件也受支持,如果在当前工作目录中找到 .env
文件,则将使用该文件。
以下是从生成的 nightwatch.conf.js
中的示例
module.exports = {
src_folders: [],
test_settings: {
default: {
launch_url: 'https://nightwatch.node.org.cn'
},
browserstack: {
webdriver: {
start_process: false
},
selenium: {
host: 'hub-cloud.browserstack.com',
port: 443
},
desiredCapabilities: {
browserName: 'chrome',
'bstack:options' : {
userName: '${BROWSERSTACK_USER}',
accessKey: '${BROWSERSTACK_KEY}',
}
}
}
}
}
手动配置
此时,您应该至少安装了一个 WebDriver 包在您的项目中。有关详细信息,请参考 WebDriver 安装 部分。在项目的根文件夹中创建 nightwatch.json
。
假设您已下载或安装了 ChromeDriver 服务,最简单的 nightwatch.json
文件将如下所示,其中 node_modules/.bin/chromedriver
是安装 ChromeDriver 的路径
{
"src_folders" : ["tests"],
"webdriver" : {
"start_process": true,
"server_path": "node_modules/.bin/chromedriver",
"port": 9515
},
"test_settings" : {
"default" : {
"desiredCapabilities": {
"browserName": "chrome"
}
}
}
}