赛普拉斯长时间自动化脚本因Aw Snap错误使Chrome浏览器崩溃

时间:2018-08-01 09:44:57

标签: typescript automation cypress

我在赛普拉斯遇到了浏览器崩溃的问题。 我的自动化脚本过程很长,因此在运行几种方案后都会如此。每次尝试运行第三个方案时,浏览器都会崩溃并显示以下屏幕。

enter image description here

有时会超时并引发440个未知代码错误。

enter image description here

如果我移动第一种情况,那么行为也一样。每次第1次和第2次都能完美执行,但从第3次开始,所有测试都会失败。

有人遇到类似的问题吗?

1 个答案:

答案 0 :(得分:6)

Cypress具有两种运行模式:以cypress open开头的调试/开发模式和以cypress run开头的测试运行模式。

cypress runcypress 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