跳至主要内容

重新运行服务

wdio-rerun-service 是一个第三方包,更多信息请参见GitHub | npm

wdio-rerun-service CI npm npm bundle size GitHub issues

此服务跟踪在WebdriverIO 测试框架中执行的失败的 Mocha 或 Jasmine 测试和 Cucumber 场景。它将允许重新运行失败或不稳定的测试或场景。

注意:运行 WebdriverIO 版本5.x6.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"
}]
],
// ...
}

欢迎!我怎样才能帮助您?

WebdriverIO AI Copilot