首页 文章

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

提问于
浏览
1

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

enter image description here

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

enter image description here

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

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

1 回答

  • 4

    赛普拉斯有两种运行模式:调试/开发模式,以 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.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 .

相关问题