Cypress Test Runner 在 circleCI 中通过带有信号 SIGSEGV 的退出事件意外退出

Cypress Test Runner unexpectedly exited via a exit event with signal SIGSEGV in circleCI


我被这个问题困住了。我正在 运行ning 赛普拉斯测试。当我在本地 运行 时,它 运行 很顺利。当我在 circleCI 中 运行 时,它会在一些执行后抛出错误。
这是我得到的:

[334:1020/170552.614728:ERROR:bus.cc(392)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[334:1020/170552.616006:ERROR:bus.cc(392)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[334:1020/170552.616185:ERROR:bus.cc(392)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[521:1020/170552.652819:ERROR:gpu_init.cc(441)] Passthrough is not supported, GL is swiftshader

当前行为:
当我 运行 我的 specs headless 在 circleCI 上时,Cypress 意外关闭并出现套接字错误。

错误代码:

Test Runner 通过带有信号 SIGSEGV 的退出事件意外退出

请搜索 Cypress 文档以获取可能的解决方案:

https://on.cypress.io


平台: linux (Debian - 10.5)
赛普拉斯版本:8.6.0

问题已通过将 cypress 版本恢复到 7.6.0 得到解决。

我在 Azure 构建中也遇到了同样的问题。我们最近才从 Cypress 8.4.0 迁移过来。回到那个问题已经解决了。

将柏树降级 运行 npm install cypress@7.6.0

将 cypress 降级到 8.3.0 对我来说解决了这个问题,你不需要转到以前的版本。

npm install cypress@8.3.0

SIGSEGV 表示段错误。阅读所有相关内容 here

"In practice, a segfault occurs when your program breaks some fundamental rule set by the operating system. In that case, the operating system sends your process a signal (SIGSEGV on Mac & Linux, STATUS_ACCESS_VIOLATION on Windows), and typically the process shuts down immediately."

此博客 post 还详细介绍了这种情况是如何发生的,即使您不直接与操作系统交互(因为我们正在撰写 JavaScript)。请在原作者的网站上阅读以了解上下文。

但简而言之 - 您可能会遇到此错误,因为

一个。您在旧版本的 NodeJS 上升级了 Cypress,或者

b。您升级了 NodeJS,而您的 Cypress 代码与该 NodeJS 版本直接或间接不兼容(这可能是您自己的代码,或其依赖项之一)

由于 SIGSEGV 是完全关闭,因此您没有堆栈跟踪或调试信息来指导您。因此,您必须使用老式的方式进行调试,打开或关闭测试 and/or 依赖项以定位代码中的问题。