我有一个Jenkins工作,通过Nightwatch.js框架在Browserstack上运行Selenium测试。我们有一整套测试,nightwatch在不同的进程中运行,我们需要一种方法在所有测试运行后将通过/失败值返回给Jenkins。
我一直在尝试使用Nightwatch hook teardown
在if(this.results.failed) { take action }
每个模块的末尾运行一段代码,但我无法弄清楚我需要采取什么行动以使詹金斯工作无法访问失败。
我最初的想法是创建一个环境变量,并在测试失败时将其设置为false,但我认为每个进程都在一个单独的子shell中运行,因此无法访问由测试模块创建/修改的变量。
我的第二个想法是在全局模块中创建一个计数器,但是当全局after
方法引用时,该值不会按预期增加。
答案 0 :(得分:0)
以下是我建议你这样做的方法:
注意:如果您有多个运行测试的独立版本,请确保您使用 jenkins构建阻止程序插件在所有独立构建完成后启动下游作业
答案 1 :(得分:0)
如果控制台输出包含字符串“TEST FAILURE”,我可以使用Jenkins Log Parser Plugin来解决此问题,从而使测试失败。
这是通过创建包含单行的规则文件来完成的:
error /TEST FAILURE/