我的目标是建立一个环境,让 CircleCI 在不同浏览器中的 BrowserStack 上运行我的 e2e 测试。
我的测试假设有一个模拟服务器正在运行。 (例如,测试正在检查是否已对模拟服务器进行了某个调用。)
我了解到有
local
测试 BrowserStack 之类的东西,但每当我想在端口 65432
上启动模拟服务器时,它都会说该端口已被使用。 Error: listen EADDRINUSE :::65432
我有一个正在运行的 Express 模拟服务器(在端口
65432
上),测试由 Nightwatch 针对 Selenium 服务器运行。
到目前为止,我只看到了针对互联网上的主页运行测试的示例(如
google.com
),但我想在本地运行我自己的模拟服务器并针对它运行我的测试。
有没有一种方法可以让我运行一个模拟服务器,并使用 Nightwatch 和 Selenium 对该模拟服务器运行测试,并且所有这些都由在 BrowserStack 上运行测试的 CI 工具完成?
如果您的计算机上托管有一个内部网站(无法公开访问)(使用模拟服务器 - Tomcat、Nginx、Express Mock Server等)并希望运行基于 Selenium 的脚本要在 BrowserStack 上测试该应用程序,那么您可以使用 本地测试功能。
您只需
run the binary file
他们在您的本地计算机上提供(可访问内部网站)并将功能“browserstack.local
”设置为“true
”。因此,在 BrowserStack 上运行的测试将能够访问您的内部网站。我建议您查看文档here。您可以在here查看 NightwatchJS-BrowserStack 上的文档。
如果您想使用 CircleCI 触发测试。他们还提供了 CircleCI 的插件,请在here阅读更多内容。在这种情况下,插件本身将为您处理本地测试。
对于未来的读者:我的问题是并行性 - 我使用以下对象设置了 2 个工作线程(基本上是子进程):
"test_workers": {
'enabled': true,
'workers': 2
}
我从一个我找不到的示例中找到了这个设置,但是如果您使用自己的模拟服务器运行 Nightwatch 测试,这可能会弄乱测试套件,因为每个工作人员都会尝试启动一个模拟服务器这是自己的测试,显然会失败。
我们还可以使用 Faux API 平台,这为我们提供了很大的空间来在 API 中存储值并可以随时访问它,没有任何限制