我最近开始使用赛普拉斯,并且发现运行测试可能需要60-80秒,但是如果我在浏览器中通过相同的UI“流程”,则需要20-30秒才能完成。
这正常吗? 是否有任何配置会影响它?
我的测试只有几行,仅使用cy.get()
和cy.contains()
。
答案 0 :(得分:1)
赛普拉斯测试比单元测试慢得多,这是正常的。 UI和无头运行之间的差异可能是由命令和测试之间的cypress初始化引起的。
为减少通过测试所需的时间,请避免使用cy.wait(
,而应使用例如改为cy.get(
。
您还可以尝试使用--headless --browser chrome
标志运行多长时间。
答案 1 :(得分:1)
赛普拉斯必须在第 3 方浏览器上运行代理,以便他们可以记录发送和接收的请求。这会大大减慢加载时间。
我使用的解决方案是在他们提供的电子浏览器中运行我的测试。例如
cypress run -s [your spec file] --headed -b electron
--headed
- 显示电子窗口,以便您了解发生了什么
-b electron
- 使用电子浏览器
答案 2 :(得分:0)
我发现GUI中赛普拉斯测试缓慢的原因之一是赛普拉斯左侧边栏中展开的动作列表。
您会注意到,每个测试标题的正下方是单词“⯆Test”,左侧和下方带有一个箭头,所有操作都会在发生时添加。如果您通过单击单词“测试”关闭该列表,则该列表将关闭,并且测试现在可以更快地运行。现在,即使您关闭了一个测试,下一个测试也将再次打开它。
要关闭默认状态,您需要对代码进行一点修改。
正如我写的elsewhere:
在文件Cypress \ resources \ app \ packages \ runner \ dist \ cypress_runner.js中,在代码中查找var Hook = Object
。稍微低于此值(版本3.8.3中的行102918,版本4.5.0中的行156012)将isOpen
字段值从true
更改为false
。
现在,您的测试应该可以正常运行了。