使用模拟服务器的BrowserStack e2e测试

时间:2018-08-28 09:22:44

标签: selenium express nightwatch.js browserstack mockserver

我的目标是建立一个环境,让CircleCI在不同的浏览器中的BrowserStack上运行我的e2e测试。

我的测试假设有一个模拟服务器正在运行。 (例如,测试正在检查是否已对模拟服务器进行了某些调用。)

我了解到有local测试BrowserStack之类的东西,但是每当我想在端口65432上启动模拟服务器时,它都表明该端口已被使用。 Error: listen EADDRINUSE :::65432

我有一个Express模拟服务器正在运行(在端口65432上),Nightwatch对Selenium服务器进行了测试。

到目前为止,我只看到了针对运行在互联网上的首页(例如google.com)进行测试的示例,但是我想在本地运行自己的模拟服务器并对它进行测试。

有没有一种方法可以运行模拟服务器,并针对该模拟服务器运行Nightwatch和Selenium的测试,并且全部由在BrowserStack上运行测试的CI工具完成?

2 个答案:

答案 0 :(得分:0)

如果您的计算机(使用模拟服务器-TomcatNginx,{{3})上托管了内部网站(公众无法访问) }等),并希望运行基于Selenium的脚本来在BrowserStack上测试该应用程序,则可以使用Express Mock Server

您只需要run the binary file在本地计算机(可访问内部网站的 )上提供它们,并将功能“ browserstack.local”设置为“ {{1 }}'。因此,在BrowserStack上运行的测试将能够访问您的内部网站。我建议您阅读文档Local Testing feature。您可以在NightwatchJS-BrowserStack here上签出文档。

如果您希望使用CircleCI触发测试。他们也提供CircleCI的插件,请在同一here上阅读更多内容。在这种情况下,插件本身将为您处理本地测试。

答案 1 :(得分:0)

对于将来的读者:我的问题是并行性-我为2个工作程序(基本上是子进程)设置了以下对象:

"test_workers": {
    'enabled': true,
    'workers': 2
}

我从一个我找不到的示例中找到了此设置,但是如果您使用自己的模拟服务器运行Nightwatch测试,则可能会弄乱测试套件,因为每个工作人员都将尝试模拟一个模拟服务器进行自己的测试,显然会失败。