配置设置
基本设置
以下是测试执行期间将传递给 Nightwatch 实例的默认设置。
名称 | 类型 | 默认 | 描述 |
---|---|---|---|
src_folders |
字符串 | 数组 | glob 模式 |
无 | 包含测试所在文件夹的数组(不包括子文件夹)。 如果未指定此选项,则测试源必须作为 测试运行器 的第二个参数内联传递。 |
test_settings |
对象 | 一个对象,其中定义了所有测试环境,每个环境都根据需要覆盖测试设置。始终需要 default 环境,其他环境从该环境继承设置。有关详细信息,请参阅 定义测试环境。 |
|
webdriver |
对象 | 包含 **WebDriver** 相关配置选项的对象。 | |
selenium |
对象 | 包含 **Selenium 服务器** 相关配置选项的对象。如果未使用 Selenium 服务器,则应设置 webdriver 选项。从 Nightwatch 1.0 开始,仅在针对 Grid 设置或云测试服务(例如 SauceLabs 或 BrowserStack)进行测试时才需要 Selenium。 |
|
custom_commands_path |
字符串 | 数组 | glob 模式 |
无 | 将从中加载自定义命令的位置。 |
custom_assertions_path |
字符串 | 数组 | glob 模式 |
无 | 将从中加载自定义断言的位置。 |
page_objects_path |
字符串 | 数组 | glob 模式 |
无 | 将从中加载页面对象文件的位置。 |
globals_path |
字符串 | 无 | 外部全局模块的位置,该模块将被加载并作为主客户端实例上的 globals 属性提供给测试。全局变量也可以在 test_settings 环境中定义/覆盖。 |
backwards_compatibility_mode 自 v2.0 起 |
布尔值 | false | 在 Nightwatch v1.x 中,当与 await 运算符一起使用时,API 命令将返回完整的 {value: `<VALUE>`} 作为结果对象,而在 v2 中,将直接返回该值。如果使用回调,则行为保持不变。 |
disable_global_apis 自 v2.0 起 |
布尔值 | false | 禁用全局 API,如 "browser" 、"element()" 、"expect()" ;如果将 Nightwatch 与第三方库一起使用,则可能需要这样做。 |
测试运行器设置
以下设置用于控制内置 CLI 测试运行器的运行方式。
名称 | 类型 | 默认 | 描述 |
---|---|---|---|
test_runner |
字符串 | 对象 | "default" | 指定在运行测试时使用哪个测试运行器。值可以是 default (内置的 nightwatch 运行器)或 mocha 。示例: "test_runner" : {"type" : "mocha", "options" : {"ui" : "tdd"}} |
parallel_process_delay |
整数 | 10 | 指定在并行模式下运行时,子进程启动之间的延迟(以毫秒为单位)。 |
enable_fail_fast 自 v2.0 起 |
布尔值 | false | 启用在发生第一个测试失败时中止测试运行执行;其余测试套件将被跳过。 |
test_workers |
布尔值 | 对象 | false | 是否使用每个测试套件的测试工作器并行运行各个测试套件。如果设置为 true ,则并行运行测试并自动确定工作器数量。如果设置为对象,则可以指定工作器数量为 "auto" 或 number 。示例: "test_workers" : {"enabled" : true, "workers" : "auto"} 自 v1.3.7 起,可以使用
|
unit_tests_mode |
布尔值 | false | 控制是否在单元测试模式下运行测试,这意味着不会自动创建会话。 |
测试会话设置
这些设置用于微调测试会话的行为并定义在会话过程中可能可用的属性。
设置 baseUrl
属性
此 baseUrl
(或 launchUrl
)属性将提供给测试中使用的主 Nightwatch API。其值取决于使用的环境。有关测试环境的更多信息,请参见 Nightwatch 运行器 部分。
如果运行测试时指定了 integration
环境(使用 --env integration
),则 baseUrl
将根据配置设置为 http://staging.host
。否则,它将具有在 default
环境中定义的值(即 https://127.0.0.1
)。
module.exports = {
'Demo test' : function (browser) {
browser
.url(browser.baseUrl)
// ...
.end();
}
};
名称 | 类型 | 默认 | 描述 |
---|---|---|---|
baseUrl |
字符串 | 无 | 一个 URL,可以在以后的测试中用作要加载的主 URL。如果测试将在不同的环境中运行,每个环境都有不同的 URL,这将非常有用。 别名: base_url 、launch_url 、launchUrl 。 |
desiredCapabilities 别名: capabilities |
对象 | 函数 | Selenium 功能 | 创建新会话时的 WebDriver 功能。例如,可以指定浏览器名称以及其他功能。 示例 "desiredCapabilities" : { 您可以查看 此处 的完整功能列表。 自 v2.0 起,还可以指定 Selenium 功能 对象。示例
或者作为函数
|
|
screenshots |
对象 | 无 | Selenium 在命令错误发生时生成屏幕截图。将 on_failure 设置为 true 后,还会为失败或出错的测试生成屏幕截图。这些文件保存在磁盘上。自 `v0.7.5` 起,您可以通过将 `"on_error"` 设置为 `false` 来禁用命令错误的屏幕截图。 示例 "screenshots" : { |
globals |
对象 | 一个对象,该对象将在测试中可用,并且可以按环境覆盖。示例"globals" : {
|
|
persist_globals |
布尔值 | false | 如果要保留测试套件运行之间的相同全局变量对象或在每个测试套件之间保留其(深层)副本,请将其设置为 true 。 |
start_session |
布尔值 | true | 是否自动启动 WebDriver 会话。当运行不与 Webdriver 服务器交互的单元/集成测试时,这通常设置为 false 。 |
end_session_on_fail |
布尔值 | true | 在测试终止时(通常是在断言失败后)自动结束会话。 |
skip_testcases_on_fail |
布尔值 | true | 当一个测试用例失败时,跳过来自同一个测试套件(即测试文件)的剩余测试用例(或测试步骤)。 |
use_xpath |
布尔值 | false | 使用 xpath 作为默认定位器策略 |
use_ssl |
布尔值 | false | 如果通过 https 连接到远程 Grid 服务器,则设置为 true。另外,请勿忘记将 port 设置为 443。 |
sync_test_names |
布尔值 | true | 启用此选项后,将在 desiredCapabilities 中添加一个 name 属性,其中包含测试套件名称。这在使用云测试服务时很有用。 |
persist_globals |
布尔值 | false | 如果要保留测试套件运行之间的相同全局变量对象或在每个测试套件之间保留其(深层)副本,请将其设置为 true 。 |
selenium_host 已弃用 - 使用 selenium.host |
字符串 | localhost | Selenium 服务器接受连接的主机名/IP。 |
selenium_port 已弃用 - 使用 selenium.port |
整数 | 4444 | Selenium 服务器接受连接的端口号。 |
过滤设置
以下设置可用于定义过滤测试文件的方式。
名称 | 类型 | 默认 | 描述 |
---|---|---|---|
exclude |
array | 要跳过的文件夹或文件模式数组(相对于主源文件夹)。 示例 "exclude" : ["excluded-folder"] 或 "exclude" : ["test-folder/\*-smoke.js"] |
|
filter |
字符串 | 加载测试时要使用的文件夹或文件模式。与该模式不匹配的文件将被忽略。 示例 "filter" : "tests/\*-smoke.js" |
|
skipgroup |
字符串 | 跳过一组测试(子文件夹);可以是逗号分隔值的列表(无空格)。 | |
skiptags |
字符串 | 按标签名称跳过测试;可以是逗号分隔值的列表(无空格)。 |
输出设置
以下设置可用于控制运行测试时的输出和日志记录。
名称 | 类型 | 默认 | 描述 |
---|---|---|---|
output_folder |
字符串 | tests_output | 保存 JUnit XML 报告文件的路径。 |
disable_colors |
布尔值 | false | 控制是否全局禁用 CLI 输出的颜色。 |
live_output |
布尔值 | false | 此选项仅在并行运行测试时有用。控制是否缓冲输出。 |
silent |
布尔值 | true | 是否显示来自 WebDriver 或 Selenium 服务器的扩展 HTTP 流量命令日志。 |
output |
布尔值 | true | 用于完全禁用 CLI 输出。 |
detailed_output |
布尔值 | true | 默认情况下,在测试运行时会显示详细的断言输出。如果只想看到显示的测试用例名称和通过/失败状态,则将其设置为 false 。并行运行测试时,默认情况下会禁用详细输出。 |
disable_error_log |
布尔值 | false | 如果不想在测试执行期间显示错误(它们始终在最后显示),则将其设置为 true。 |
output_timestamp |
布尔值 | false | 如果要在日志输出旁边看到时间戳,则将其设置为 true。 |
log_screenshot_data |
布尔值 | false | 用于在截取屏幕截图时在(详细)日志中显示 Base64 图像数据。 |
WebDriver 设置
以下是 Webdriver 服务的一些选项。Nightwatch 可以自动启动和停止 Webdriver 进程,这非常方便,因为您不必自己管理它,只需专注于测试。
如果要启用此功能,请将 start_process
设置为 true
并指定 server_path
中二进制文件的位置。
名称 | 类型 | 默认 | 描述 |
---|---|---|---|
start_process |
布尔值 | false | 启用此功能后,Webdriver 服务器将在后台的 子进程 中运行,并自动启动/停止。 Nightwatch 包括对管理 Chromedriver、Geckodriver(Firefox)、Safaridriver 和 Selenium Server 的支持。 |
server_path |
字符串 | 无 | 仅在 start_process 启用时有用。 |
host |
字符串 | 仅在 Webdriver 服务在另一台机器上运行时才需要。 | |
port |
整数 | Webdriver 服务将监听的端口号,或者 Nightwatch 将尝试连接的端口号。 | |
ssl |
布尔值 | 如果通过 HTTPS 连接到远程(云)服务,则应将其设置为 true 。另外,不要忘记将端口设置为 443。 |
|
log_path |
string|boolean | 无 | 放置 Webdriver 服务日志文件 output.log 文件的位置。默认为当前目录。要禁用 Webdriver 日志记录,请将其设置为 false |
log_file_name |
string|none | 无 | 默认情况下,日志文件名将与测试套件文件名相同,但也可以指定不同的文件名。 |
cli_args |
对象 | 无 | 要传递给 Webdriver 进程的 CLI 参数列表。这因每个 Webdriver 实现而异。 |
keep_alive |
布尔值 | 对象 | false | 启用 HTTP Keep-Alive。如果设置为 true ,则使用默认设置启用 keepAlive 选项 (keepAliveMsecs = 3000)。如果设置为对象,可以指定 keepAliveMsecs 值。示例: "keep_alive" : {"enabled" : true, "keepAliveMsecs" : 2000} |
timeout_options |
对象 | timeout: 60000 retry_attempts: 0 |
对 Webdriver 服务的请求将在 timeout 毫秒内超时;将重试 retry_attempts 次。示例 {timeout: 15000, retry_attempts: 5}
|
status_poll_interval 自 v1.2.2 起 |
整数 | 100 | 在检查 Webdriver 服务器是否已启动并正在运行时,状态 ping 检查之间要使用的间隔(以毫秒为单位)。 |
max_status_poll_tries 自 v1.2.2 起 |
整数 | 5 | 在返回超时错误之前,检查 Webdriver 服务器是否已启动并正在运行时的 ping 状态检查尝试次数。 |
process_create_timeout 自 v1.2.2 起 |
整数 | 120000 | 等待 Node.js 进程创建并运行的总时间(以毫秒为单位)(默认为 2 分钟),包括生成子进程和检查状态。 |
username |
字符串 | 无 | 通常仅在云测试 Selenium 服务时才需要。如果服务器需要凭据,则此用户名将用于计算 Authorization 标头。该值也可以是环境变量,在这种情况下,它将如下所示 "username" : "${SAUCE_USERNAME}"
|
access_key |
字符串 | 无 | 此字段将与 username 一起用于计算 Authorization 标头。与 username 一样,该值也可以是环境变量"access_key" : "${SAUCE_ACCESS_KEY}"
|
proxy |
字符串 | 无 | 将请求代理到 Webdriver(或 Selenium)服务。接受 http、https、socks(v5)、socks5、sock4 和 pac。 使用 proxy-agent,该代理需要作为 NPM 中的单独包安装。 示例: http://user:pass@host:port |
default_path_prefix |
字符串 | 有时在使用 Selenium Server 时需要。要添加到所有请求的 (e.g. /wd/hub) 前缀。 |
Selenium Server 设置
如果使用 Selenium Server,则连接相关的设置应放在 "selenium""
下。如果 webdriver
和 selenium
字典都存在,则 selenium
选项将与 webdriver
选项合并。
配置与基于云的测试提供商(如 BrowserStack、SauceLabs、CrossBrowserTesting、LambdaTest 或 TestingBot)的连接时,也应使用 "selenium"
设置。
名称 | 类型 | 默认 | 描述 |
---|---|---|---|
start_process |
布尔值 | false | 是否自动管理 Selenium 进程。 |
server_path |
字符串 | 无 | Selenium jar 文件的位置。如果 start_process 已启用,则需要指定此位置。例如: bin/selenium-server-standalone-2.43.0.jar |
log_path |
string|boolean | 无 | 放置 Selenium output.log 文件的位置。默认为当前目录。要禁用 Selenium 日志记录,请将其设置为 false |
version2 |
布尔值 | false | 如果需要使用旧版 Selenium Server 2,则将其设置为 true 。 |
port |
整数 | 4444 | Selenium 将监听的端口号,或者 Nighwatch 将尝试连接的端口号。 |
cli_args |
对象 | 无 | 要传递给 Selenium 进程的 CLI 参数列表。在这里,您可以为浏览器驱动程序设置各种选项,例如
|
Selenium 示例配置
以下是在 nightwatch.conf.js
中使用本地 Selenium Server 并支持 Firefox、Chrome 和 Internet Explorer 的示例配置。
假定在当前项目中安装了以下 NPM 包
module.exports = {
src_folders: [],
test_settings: {
default: {
launch_url: 'https://nightwatch.node.org.cn'
},
selenium: {
// Selenium Server is running locally and is managed by Nightwatch
selenium: {
start_process: true,
port: 4444,
server_path: require('selenium-server').path,
cli_args: {
'webdriver.gecko.driver': require('geckodriver').path,
'webdriver.chrome.driver': require('chromedriver').path,
'webdriver.ie.driver': process.platform === 'win32' ? require('iedriver').path : ''
}
},
webdriver: {
start_process: false
}
},
'selenium.chrome': {
extends: 'selenium',
desiredCapabilities: {
browserName: 'chrome',
chromeOptions: {
}
}
},
'selenium.firefox': {
extends: 'selenium',
desiredCapabilities: {
browserName: 'firefox'
}
},
'selenium.ie': {
extends: 'selenium',
desiredCapabilities: {
browserName: 'internet explorer'
}
}
}
}
BrowserStack 示例配置
Browserstack 是最流行的云测试平台之一。在 Nightwatch 中使用它非常简单,在自动生成的 nightwatch.conf.js
文件中存在配置。
拥有帐户后,您需要设置以下环境变量。Nightwatch 也支持 Dotenv 文件。
BROWSERSTACK_USER
BROWSERSTACK_KEY
请记住,还要启用 HTTP keepalive 以提高网络性能。
module.exports = {
src_folders: [],
webdriver: {
keep_alive: true,
timeout_options: {
timeout: 60000,
retry_attempts: 3
}
}
test_settings: {
default: {
launch_url: 'https://nightwatch.node.org.cn'
},
browserstack: {
selenium: {
host: 'hub-cloud.browserstack.com',
port: 443
},
// More info on configuring capabilities can be found on:
// https://www.browserstack.com/automate/capabilities?tag=selenium-4
desiredCapabilities: {
'bstack:options' : {
local: 'false',
userName: '${BROWSERSTACK_USER}',
accessKey: '${BROWSERSTACK_KEY}',
}
}
},
'browserstack.chrome': {
extends: 'browserstack',
desiredCapabilities: {
browserName: 'chrome',
chromeOptions : {
}
}
},
'browserstack.firefox': {
extends: 'browserstack',
desiredCapabilities: {
browserName: 'firefox'
}
},
'browserstack.ie': {
extends: 'browserstack',
desiredCapabilities: {
browserName: 'IE',
browserVersion: '11.0',
'bstack:options' : {
os: 'Windows',
osVersion: '10',
local: 'false',
seleniumVersion: '3.5.2',
resolution: '1366x768'
}
}
}
}
}