赛普拉斯有两种运行模式:调试/开发模式,以 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 正常,则您的问题很可能是内存 . 如果是这种情况,您有两个选项可以提供帮助 .
1 回答
赛普拉斯有两种运行模式:调试/开发模式,以
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.json
文件允许您为各种设置设置自定义值 .numTestsKeptInMemory
默认为30,但您可以将其减少到10,5或甚至0.在0时,您将无法获得任何DOM快照 . 内存使用量仍会攀升,但速度会慢得多 .其次,您可以并且应该将一个大型测试文件拆分为多个较小的测试文件 . 从版本3.0.0开始,Cypress runs each test file in its own render process . 这使得赛普拉斯可以在每次测试后进行清理,只要您的个人文件足够小,就可以有效地修复内存问题 .
如果这些都没有解决您的问题,那么您可能正在处理另一个错误,例如this one . 如果您在the Github tracker找不到问题,可能需要考虑reporting it .