赛普拉斯长自动化脚本使用Aw Snap Error崩溃Chrome浏览器

Pra*_*ara 1 automation typescript cypress

我在柏树有一个浏览器崩溃问题.我的自动化脚本有点漫长的过程,因此在运行几个场景之后.每当它尝试运行第三个场景时,浏览器崩溃并显示以下屏幕.

在此输入图像描述

有时它会超时并抛出440个未知代码错误.

在此输入图像描述

如果我移动我的第一个场景,那么也是同样的行为.每次第1和第2次执行都很完美,但从第3次开始,所有测试都失败

有没有人面对类似的问题?

Jos*_*ica 7

赛普拉斯有两种运行模式:调试/开发模式,启动cypress open和测试运行模式,以cypress run.

cypress run有一些关键的区别cypress open.最明显的cypress run是无头.它在后台启动Electron浏览器并执行所有测试.

这不是唯一的区别.在运行时cypress open,赛普拉斯需要定期的DOM快照进行调试,您可能已经知道了.这是通过所描述的受控内存泄漏实现的; 如果你有一个运行时间太长的测试,cypress open内存将继续攀升,直到Chrome最终崩溃.


如果您的测试工作正常cypress run而不是cypress open,那么您的问题很可能是内存.如果是这种情况,您有两个选项可以提供帮助.

首先,您可以减少内存中保存的快照数量.您cypress.json的根赛普拉斯文件夹中的文件允许您为各种设置设置自定义值.numTestsKeptInMemory默认为30,但您可以将其减少到10,5或甚至0.在0时,您将无法获得任何DOM快照.内存使用量仍会攀升,但速度会慢得多.

{
    "numTestsKeptInMemory": 0
}
Run Code Online (Sandbox Code Playgroud)

其次,您可以并且应该将一个大型测试文件拆分为多个较小的测试文件.从版本3.0.0开始,赛普拉斯在自己的渲染过程中运行每个测试文件.这使得赛普拉斯可以在每次测试后进行清理,只要您的个人文件足够小,就可以有效地修复内存问题.


如果这些都没有解决您的问题,那么您可能正在处理另一个错误,例如这个错误.如果您在Github跟踪器上找不到您的问题,您可能需要考虑报告它.

  • 下面,cypress.json 中的更改目前对我有效。{“numTestsKeptInMemory”:0} (2认同)