【发布时间】:2021-07-20 20:57:27
【问题描述】:
我正在使用Cypress 7.7.0(也在8.0.0 上进行了测试),我遇到了一个有趣的竞争条件。我正在测试一个页面,其中Cypress 所做的第一个交互是单击一个按钮以打开一个模式。为了使包大小保持较小,我将模式拆分为自己的预取 webpack 块。我的Cypress 测试以cy.get('#modal-button').click() 开头,但这不会加载模态,因为模态尚未完成下载/加载。相反,它什么也不做(甚至不会向控制台抛出任何错误)。换句话说,Cypress 与页面交互过快。这也通过手动测试进行了复制(我在页面加载后超级快地单击了按钮)。我尝试将模态设置为预加载,但这也不起作用。
我可以通过在页面加载和按钮交互之间引入更多延迟来解决问题。例如,在我单击按钮之前插入任何Cypress 命令(甚至是cy.wait(0))可以修复解决方案。然而,Cypress 以不需要插入这些脆弱的解决方案而闻名。有没有解决这个问题的好方法?我想将模式保留在自己的块中。
仅供参考:我使用Vue 作为我的前端库,并使用简单的defineAsyncComponent(() => import(/* webpackPrefetch: true */ './my-modal.vue')) 来加载模态组件。我认为这个问题对于Cypress 来说很普遍。
【问题讨论】:
标签: javascript vue.js webpack cypress prefetch