docker - 在单台机器上并行运行 cypress 测试会出错
问题描述
TLDR:在 jenkins 的同一台机器上的 docker 容器中运行并行 cypress 测试的问题。
我正在尝试在 cypress 的单个 aws 机器 2 docker 实例上运行以同时并行运行不同的套件。我遇到了一些问题,尽管我已经docker-compose.yml
在cypress.json
文件上配置并公开了 2 个独特且不同的端口,但端口上似乎存在冲突。他的第一个容器工作,但第二个容器因以下错误而崩溃:
✖ Verifying Cypress can run /home/my-user/.cache/Cypress/4.1.0/Cypress
→ Cypress Version: 4.1.0
Xvfb exited with a non zero exit code.
There was a problem spawning Xvfb.
This is likely a problem with your system, permissions, or installation of Xvfb.
----------
Error: _XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
(EE)
Fatal server error:
(EE) Cannot establish any listening sockets - Make sure an X server isn't already running(EE)
----------
Platform: linux (Ubuntu Linux - 18.04)
Cypress Version: 4.1.0
重要说明:我想自己实现并行化,而不是使用--parallel
cypress 中的功能,我需要在同一台机器上内部实现它,仅在封装环境中。
有什么建议么?
解决方案
如果我理解正确,您需要做的就是使用xvfb-run -a
. 例如xvfb-run -a npx cypress run --browser Chrome
,So-a
将分配下一个可用端口号,这意味着您可以并行运行多个 cypress 容器。检查http://elementalselenium.com/tips/38-headless
推荐阅读
- javascript - 无法连接html
- .htaccess - htaccess 将漂亮的 URL 重定向到丑陋的 URL
- nexmo - 如何为语音应用程序创建事件 URL?
- javascript - js弹窗不出现
- python - Azure blob 的 Python requests.get()
- java - 如何将 gradle 处理的代码导入为库(Eclipse)
- python - conda:使用最新包创建环境
- r - 您如何将大型 RasterStack 对象临时插入到更高的周期性(每周到每天)
- python - 如何在熊猫中将奇怪的日期值修复为日期时间类型
- javascript - 使用 TypeScript 的函数名称的 ESlint 规则(camelCase 首字母小写)