当 Nightwatch 测试断言在 Browserstack 中失败时 Jenkins 作业失败
Failing a Jenkins job when nightwatch test assertion fails in Browserstack
我有一个 Jenkins 作业,运行s Selenium 通过 Nightwatch.js 框架在 Browserstack 上进行测试。我们有一整套测试,在不同的进程中守夜 运行s,我们需要一种方法在所有测试都具有 运行.[=13= 之后将 pass/fail 值返回给 Jenkins ]
我一直在尝试使用 Nightwatch 钩子 teardown
来 运行 每个模块末尾的一段代码 if(this.results.failed) { take action }
,但我不知道是什么为了让 Jenkins 作业可以访问故障,我需要采取行动。
我最初的想法是创建一个环境变量,并在测试失败时将其设置为 false,但我认为每个进程 运行s 在一个单独的子 shell 中,因此变量 created/modified无法访问测试模块。
我的第二个想法是在全局模块中创建一个计数器,但是当被全局 after
方法引用时,该值不会按预期递增。
以下是我建议您这样做的方法:
- 在 afterEach 函数中创建一个 synchronised writer (https://github.com/nightwatchjs/nightwatch-docs/blob/master/guide/using-nightwatch/test-hooks.md) 并将测试结果写入系统上的平面文件(csv、tsv、txt 等) 运行 詹金斯。您可以选择仅写入失败 if(this.results.failed) 或将具有 pass/fail 状态的所有 testID 写入文件
- 测试构建完成后,您将在平面文件中获得所有详细信息(包括失败的详细信息)。
- 您现在可以触发下游作业(使用下游 jenkins 插件的 Jenkins 上的不同作业),它有一个简单的脚本(shell 脚本),用于查找您在步骤 1 中编写的测试输出文件中的故障。使用这个,Jenkins 将在测试失败时获得详细信息
注意:如果您有多个独立构建 运行 测试,请确保您使用 jenkins 构建拦截器插件 在所有独立构建完成后启动下游作业完成
我能够使用 Jenkins Log Parser Plugin 解决这个问题,在控制台输出包含字符串 "TEST FAILURE" 的情况下使测试失败。
这是通过创建包含单行的规则文件完成的:
error /TEST FAILURE/
我有一个 Jenkins 作业,运行s Selenium 通过 Nightwatch.js 框架在 Browserstack 上进行测试。我们有一整套测试,在不同的进程中守夜 运行s,我们需要一种方法在所有测试都具有 运行.[=13= 之后将 pass/fail 值返回给 Jenkins ]
我一直在尝试使用 Nightwatch 钩子 teardown
来 运行 每个模块末尾的一段代码 if(this.results.failed) { take action }
,但我不知道是什么为了让 Jenkins 作业可以访问故障,我需要采取行动。
我最初的想法是创建一个环境变量,并在测试失败时将其设置为 false,但我认为每个进程 运行s 在一个单独的子 shell 中,因此变量 created/modified无法访问测试模块。
我的第二个想法是在全局模块中创建一个计数器,但是当被全局 after
方法引用时,该值不会按预期递增。
以下是我建议您这样做的方法:
- 在 afterEach 函数中创建一个 synchronised writer (https://github.com/nightwatchjs/nightwatch-docs/blob/master/guide/using-nightwatch/test-hooks.md) 并将测试结果写入系统上的平面文件(csv、tsv、txt 等) 运行 詹金斯。您可以选择仅写入失败 if(this.results.failed) 或将具有 pass/fail 状态的所有 testID 写入文件
- 测试构建完成后,您将在平面文件中获得所有详细信息(包括失败的详细信息)。
- 您现在可以触发下游作业(使用下游 jenkins 插件的 Jenkins 上的不同作业),它有一个简单的脚本(shell 脚本),用于查找您在步骤 1 中编写的测试输出文件中的故障。使用这个,Jenkins 将在测试失败时获得详细信息
注意:如果您有多个独立构建 运行 测试,请确保您使用 jenkins 构建拦截器插件 在所有独立构建完成后启动下游作业完成
我能够使用 Jenkins Log Parser Plugin 解决这个问题,在控制台输出包含字符串 "TEST FAILURE" 的情况下使测试失败。
这是通过创建包含单行的规则文件完成的:
error /TEST FAILURE/