将 CucumberJS 与 Nightwatch 结合使用
概述
Nightwatch 2 带来了对直接使用 Cucumber.js 作为替代测试运行器的集成支持。除了 Cucumber 库 本身(版本 7.3 或更高版本)之外,不需要其他插件。
只需在安装了 Nightwatch 的同一项目中运行以下命令
npm i @cucumber/cucumber --save-dev
配置
为了在 Nightwatch 中使用 CucumberJS,您需要设置 test_runner
配置属性并将类型设置为 cucumber
。您还需要设置功能文件所在的路径。
{
test_runner: {
// set cucumber as the runner
type: 'cucumber',
// define cucumber specific options
options: {
//set the feature path
feature_path: 'examples/cucumber-js/*/*.feature',
// start the webdriver session automatically (enabled by default)
auto_start_session: true,
// use parallel execution in Cucumber
// set number of workers to use (can also be defined in the cli as --parallel 2
parallel: 2
}
},
src_folders: ['examples/cucumber-js/features/step_definitions']
}
运行测试
从示例运行 Cucumber 测试的最简单方法是
npx nightwatch --env cucumber-js
Cucumber 规范文件/步骤定义文件可以在 Nightwatch 配置中的 src_folders
中提供,也可以作为 CLI 参数提供。
定义了 src_folders
npx nightwatch
未定义 src_folders
npx nightwatch examples/cucumber-js/features/step_definition
并行运行
使用 2 个工作程序并行运行
nightwatch examples/cucumber-js/features/step_definitions --parallel 2
像往常一样使用其他 测试运行器选项
npx nightwatch examples/cucumber-js/features/step_definitions --headless
手动启动 WebDriver 会话
有时您可能需要在 Nightwatch 实例化后不自动启动 Webdriver 会话。为此,Nightwatch 提供了可作为 this.client
获得的实例,其中包含 launchBrowser()
方法。
配置
{
test_runner: {
type: 'cucumber',
options: {
feature_path: 'examples/cucumber-js/*/*.feature',
auto_start_session: false
}
}
}
然后,您可以使用一个额外的设置文件,您可以将其作为额外的 --require
传递给 Nightwatch,该文件将被转发到 Cucumber。在额外的设置文件中,您可以添加在启动会话之前需要执行的其他操作。
示例 _extra_setup.js
请记住在 this
上设置 browser
,以便 Nightwatch 可以自动关闭它。否则,请记住在您自己的 Cucumber After()
钩子中调用 .quit()
。
const {Before} = require('@cucumber/cucumber');
Before(async function(testCase) {
if (!this.client) {
console.error('Nightwatch instance was not created.');
return;
}
this.client.updateCapabilities({
testCap: 'testing'
});
this.browser = await this.client.launchBrowser();
});
使用额外设置运行
nightwatch examples/cucumber-js/features/step_definitions --require {/full/path/to/_extra_setup.js}
Nightwatch 的 Cucumber 设置文件
您可能还想检查 Nightwatch 用于初始化 Cucumber 运行器的内置设置文件。它位于我们项目的根文件夹中,位于 /cucumber-js/_setup_cucumber_runner.js。
报告
使用集成 Cucumber 测试运行器时,您需要使用 Cucumber 格式化程序 生成输出。
Nightwatch 将转发 --format
和 --format-options
CLI 参数(如果存在)到 Cucumber。
默认情况下,使用 progress
格式化程序。
例如
npx nightwatch --env cucumber-js --format @cucumber/pretty-formatter
或者
npx nightwatch --env cucumber-js --require cucumber.conf.js --format json:report/cucumber_report.json
示例输出
以下是使用 Firefox 运行示例测试时的输出情况。您只需在安装了 Nightwatch 的项目中运行它
npx nightwatch examples/cucumber-js/features/step_definition