重新运行服务
此服务跟踪在WebdriverIO 测试框架中执行的失败的 Mocha 或 Jasmine 测试和 Cucumber 场景。它将允许重新运行失败或不稳定的测试或场景。
注意:运行 WebdriverIO 版本5.x
和 6.x
的 Cucumber 框架用户应使用版本1.6.x
。如果您使用的是最新主要版本7.x
,请使用此服务的最新1.7.x
版本。
重新运行与重试
WebdriverIO 为 Cucumber 和 Mocha/Jasmine 构建的retry
逻辑有助于处理 Cucumber 和 Mocha/Jasmine 中不稳定的步骤。每个框架中的重试都有注意事项
- Cucumber:它没有考虑到某些步骤可能无法在测试过程中重新尝试。运行一个步骤两次可能会破坏场景的其余部分,或者在测试上下文中可能无法实现。
- Mocha/Jasmine:
retry
逻辑可能应用于单个测试,但是,这仍然是在实时进行的,并且可能没有考虑时间问题或网络连接问题。
re-run
的主要区别
- 将重新运行整个单个 Cucumber 场景,而不仅仅是一个步骤
- 允许在主要测试执行完成后重新运行整个规范文件
- 可以复制并在本地执行(
retry
无法执行) - 仍然可以与
retry
方法结合使用 - 不需要任何代码更改即可将
retry
逻辑应用于不稳定或有问题的测试
建议花一些时间评估可用的选项。混合解决方案可能是提供最佳真实和可操作测试结果的最佳解决方案。
安装
最简单的方法是在 package.json
中将 wdio-rerun-service
添加到 devDependencies
中。
{
"devDependencies": {
"wdio-rerun-service": "^1.6.2"
}
}
可以使用 npm
安装它
npm install wdio-rerun-service
包安装完成后,将其添加到 wdio.conf.js
中的 services
数组中
// wdio.conf.js
const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [RerunService, {
// ...
}]
};
有关如何安装 WebdriverIO
的说明,请参见此处。
配置
以下选项可以添加到 wdio.conf.js 文件中。要为服务定义选项,您需要按以下方式将服务添加到 services
列表中
// wdio.conf.js
const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [
[RerunService, {
// Re-run service options here...
}]
],
// ...
};
rerunDataDir
在执行过程中将保留所有重新运行 JSON 数据的目录。
类型:字符串
默认值:./results/rerun
示例
const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [
[RerunService, {
rerunDataDir: './custom-rerun-directory'
}]
],
// ...
}
rerunScriptPath
写入重新运行 Bash 脚本的路径。
类型:字符串
默认值:./rerun.sh
示例
const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [
[RerunService, {
rerunScriptPath: './custom-path-for-rerun.sh'
}]
],
// ...
}
ignoredTags
(仅限 Cucumber)要排除的 Cucumber 标签集。如果场景包含标签,则重新运行服务将跳过分析。
类型:数组
默认值:[]
示例
const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [
[RerunService, {
ignoredTags: ['@known_bug']
}]
],
// ...
}
commandPrefix
将添加到生成的重新运行命令中的前缀。
类型:字符串
默认值:''
示例
const RerunService = require('wdio-rerun-service');
export.config = {
// ...
services: [
[RerunService, {
commandPrefix: "VARIABLE=true"
}]
],
// ...
}