如何解决任何人都可以看到为什么我的 cy.waitUntil() 命令在评估一个真值后不起作用?
在这个 Cypress 测试中,我试图利用 cy.waitUntil npm 包 等待加载微调器不存在,然后继续运行测试,而不会出现竞争条件无法通过测试的风险在 CI 中(目前测试失败,因为在组件全部加载完成之前在页面上执行了命令。
在这第一次尝试中,我试图通过从包装器 div 上的属性“data-cy-isLoading”获取它来断言加载微调器的状态,其值依赖于呈现微调器的相同逻辑。
cy.waitUntil(
() => {
let stillLoading = null
cy.get('[data-cy-isLoading]')
.then(val => (stillLoading = val[0].attributes[1].value))
.then(() => {
if(stillLoading === 'false'){
return true
}
})
},{
timeout: 8000,description: 'Await loading spinner',}
)
我尝试调整它的每一种方式都失败了,如果满足 if(stillLoading === 'false') 条件并且返回 True 被命中,则 cy .waitUntill 命令仍然会无限期地继续重试而不退出 waitUntil 命令并继续测试
这个变体也不起作用。
cy.waitUntil(
() => {
let done;
let stillLoading;
cy.get('[data-cy-isLoading]')
.then(val => (stillLoading = val[0].attributes[1].value))
.then(() => {
if(stillLoading === 'false'){
done = true
}
})
done ? expect(done).to.be.true : false
},}
)
接下来,我尝试通过在命令/断言上使用超时来简单断言微调器自身的存在。
!!cy.get('[data-cy="spinningCircle"]',{timeout: 10000}).should('not.be.visible')
!!cy.get('[data-cy="spinningCircle"]',{timeout: 10000}).should('not.exist')
这些也不起作用,因为一旦无法找到元素 [data-cy=spinningCircle] 就会失败
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。