我有一组三个e2e测试,我正在从Cypress 8.7转换到10.3,最终目标是能够利用Cypress的组件测试。
所有测试都作为一个组和单个规范(通过 --规格(<);路径(>);
)8.7。文章源自玩技e族-https://www.playezu.com/189109.html
在转换到10.3版本后,我有一个规范,它调用一个公共命令,该命令单击一个按钮(扩展添加到页面中),该按钮启动其侦听器并调用 chrome.runtime.发送消息
用一条消息打开扩展UI。在这种特殊情况下,内容脚本正在处理自己的消息(这在技术上是多余的),但由于还有其他情况与背景脚本通信,因此我们使用相同的方法 发送消息
呼吁一致性(这在实际的Chrome环境中每次都有效)。为了便于实现这一点,后台脚本有一个监听器,它可以有效地将消息发送回发送选项卡,用于它不直接处理的消息。文章源自玩技e族-https://www.playezu.com/189109.html
- 规范1:始终有效
- 规范2: 总是 单独运行时工作
--规范
和 从不 所有测试一起运行时有效 - 规范3:与规范2相同
我不认为这是一个比赛条件,因为没有多少 cy.等待()
取得了成功。我可以验证内容脚本中注册事件的部分 chrome.runtime.onMessage.addListener
在每个等级库的开头运行(单独运行和一起运行)。但是,它在单击按钮时从不运行(即使在暂停并手动单击时)。文章源自玩技e族-https://www.playezu.com/189109.html
我为测试设置了扩展清单,只匹配cypress访问的URL,并将其与 所有_帧:true
,导致扩展按钮仅显示在内容窗口中,而不是整个Cypress chrome窗口。登录中 文件
在监听器注册和点击监听器都记录了同一个文档,所以我认为这不是跨框架问题。文章源自玩技e族-https://www.playezu.com/189109.html
根据来自后台脚本的可用日志记录,我的结论是它有效地停止了运行(消息处理程序开始处的断点不再触发)。然而,没有任何迹象表明这可能是为什么。文章源自玩技e族-https://www.playezu.com/189109.html
如果我将这些其他规范中的所有测试放在一个规范中,则该调用会按预期工作(尽管测试仍然失败,可能是由于在规范之间清除了一些其他状态)。我可以做些什么来找出为什么Cypress 10.3中的后台脚本在不同的规范之间停止运行?文章源自玩技e族-https://www.playezu.com/189109.html
最后一点需要注意的是,背景脚本中存在一些未捕获和忽略的错误。我正在努力清理这些,但尽管如此,这些测试在过去一直有效(并且在运行每个规范时都是单独运行的),所以我不知所措。文章源自玩技e族-https://www.playezu.com/189109.html
电脑硬件测试软件文章源自玩技e族-https://www.playezu.com/189109.html 文章源自玩技e族-https://www.playezu.com/189109.html