在同一浏览器实例中的Nightwatch.js + Saucelabs中同时运行集成测试

时间:2019-07-11 09:34:49

标签: integration-testing nightwatch.js saucelabs

我正在尝试使用Nightwatch.js和Saucelabs运行某些​​集成测试用例。当前,对于每个测试用例,都会打开一个新的浏览器窗口,因此,测试用例会花费很长时间。

我需要在同一浏览器窗口中运行测试用例,并在SauceLabs上显示每个测试用例的测试用例结果。

下面是与我需要运行的代码相似的代码。

bin/kafka-reassign-partitions.sh

如果我从Test-1中删除.end(),Saucelabs会在一个浏览器中运行测试,但只会显示名称为Test-2的测试结果

1 个答案:

答案 0 :(得分:0)

Nightwatch默认情况下会自动处理webdriver的启动和停止,但是您可以禁用它,并通过在nightwatch.json文件中将webdriver start_process配置选项设置为false来自己进行管理:

"webdriver" : {
  "start_process": false
}

Nightwatch参考文档:https://nightwatchjs.org/gettingstarted#configuration

但是,您可能不应该这样做。

首先,这意味着您需要做更多的工作-您将必须在每个测试规范中自行管理启动和停止会话,包括传入配置。

其次,在酱汁实验室中的会话应针对每个测试启动和停止。酱只会识别1个完成的测试-每个会话通过或失败。

最后,将测试合并到一个会话中不是一个好习惯-您的浏览器可能处于意外状态,具有不同的Cookie和缓存,并且您的应用程序可能具有先前测试的持久设置。通过在Sauce Labs中创建一个新会话,您可以确保所有内容都是“干净的”,并且可以确保完全重现任何场景。

我了解节省时间的愿望,因为分别启动每个会话以及完成进入应用程序中特定状态所需的任何准备步骤都需要更长的时间。但是,最好不要通过使浏览器处于未知状态,而是通过调用API,设置Cookie或进行其他操作来配置该状态。

这就是Nightwatch在两次测试之间自动重新启动浏览器的原因。