在单机上并行运行 cypress 测试会出现错误

问题描述 投票:0回答:2

TLDR:在 jenkins 的同一台机器上的 docker 容器中运行并行 cypress 测试时出现问题。

我试图在单个 aws 机器上运行 2 个 cypress 的 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

重要提示:我想自己实现并行化,而不是使用cypress中的功能

--parallel
,我需要在同一台机器上仅在封装环境中内部实现它。

有什么建议吗?

docker parallel-processing runtime-error cypress xvfb
2个回答
0
投票

如果我理解正确的话,你需要做的就是用

xvfb-run -a
启动 cypress (在容器中)。例如。
xvfb-run -a npx cypress run --browser Chrome
因此
-a
将分配下一个可用端口号,这意味着您可以并行运行多个 cypress 容器。检查http://elementalselenium.com/tips/38-headless


0
投票

请注意此处的Cypress 如何使用 Xvfb 的文档

在我自己的环境中,以详细模式运行 cypress

DEBUG=cypress:* cypress run  

显示了这个:

env","DEPLOYMENT_ENV=nightly"] +0ms
  cypress:cli undefined DISPLAY environment variable +0ms
  cypress:cli Cypress will spawn its own Xvfb +1ms
  cypress:cli needs to start own Xvfb? true +0ms
  cypress:cli Starting Xvfb +0ms
  cypress:xvfb _XSERVTransSocketINETCreateListener: ...SocketCreateListener() failed
  cypress:xvfb _XSERVTransMakeAllCOTSServerListeners: server already running
  cypress:xvfb (EE)
  cypress:xvfb Fatal server error:
  cypress:xvfb (EE) Cannot establish any listening sockets - Make sure an X server isn't already running(EE)

关键是

DISPLAY
环境变量未定义 - 因此 Cypress 尝试启动自己的 Xvfb 实例。

但是我们的机器已经运行了 Xvfb,因此出现错误。

我们的解决方案是提供 DISPLAY 环境变量,端口通常是 99。

© www.soinside.com 2019 - 2024. All rights reserved.