我在赛普拉斯遇到了浏览器崩溃的问题。 我的自动化脚本过程很长,因此在运行几种方案后都会如此。每次尝试运行第三个方案时,浏览器都会崩溃并显示以下屏幕。
有时会超时并引发440个未知代码错误。
如果我移动第一种情况,那么行为也一样。每次第1次和第2次都能完美执行,但从第3次开始,所有测试都会失败。
有人遇到类似的问题吗?
答案 0 :(得分:6)
Cypress具有两种运行模式:以cypress open
开头的调试/开发模式和以cypress run
开头的测试运行模式。
cypress run
与cypress open
有一些关键区别。最明显的是cypress run
是无头的。它会在后台启动Electron浏览器并执行所有测试。
这不是唯一的区别。如您所知,在使用cypress open
运行时,赛普拉斯会为调试目的拍摄常规的DOM快照。这是通过what has been described实现的,作为受控的内存泄漏;如果您使用cypress open
进行的单个测试运行时间过长,则内存将继续增加,直到Chrome最终崩溃。
如果您的测试可以在cypress run
上正常运行,而不能在cypress open
上正常运行,那么您的问题很可能是内存问题。在这种情况下,您有两个选项可以提供帮助。
首先,您可以减少保留在内存中的快照数量。您可以在Cypress根文件夹中的cypress.json
文件中为各种设置设置自定义值。 numTestsKeptInMemory
的默认值约为30,但您可以将其减小为10、5或什至0。设为0时,您不会获得任何DOM快照。内存使用率仍会上升,但是会以慢得多的速度上升。
{
"numTestsKeptInMemory": 0
}
第二,您可以并且应该将一个大型测试文件拆分为多个较小的测试文件。从3.0.0版开始,Cypress runs each test file in its own render process。这样,赛普拉斯可以在每次测试后进行清理,只要您的单个文件足够小,就可以有效地解决内存问题。
如果这些方法都不能解决您的问题,则可能是您遇到了另一个错误,例如this one。如果您在the Github tracker上找不到问题,则可以考虑考虑reporting it。