如何检查Cypress e2e测试中元素是否从不可见?

gre*_*ark 2 javascript e2e-testing cypress

在赛普拉斯内布线时,是否有任何方法可以断言某个元素永远不可见?

我有一个服务器渲染的Web应用程序,该应用程序有时不应该显示“正在加载”状态。因此,当我在页面之间导航时,“正在加载”指示器会显示几秒钟,然后消失。

我知道赛普拉斯的断言有时会“等待”,但是在这种情况下,这会导致我的断言失败,因为加载指示器消失了,这使测试认为它已经通过了。

我正在使用以下两个断言:

cy.get('[data-test="loading"]').should('not.exist');

cy.get('[data-test="loading"]').should('not.be.visible');

但是他们两个都通过了,因为加载指示器消失了。

我已经检查了所有文档,但似乎没有某种方法可以检查元素从不可见。是否有某种我缺少的方法或一些技巧可以用不同的方式进行测试?

Mac*_*urt 5

我可能疯了,我还没有测试过,但是我想把它扔出去

我假设您正在测试,永远不要有加载指示器,它正在等待默认的4秒钟,指示器消失,因此您的测试通过了。因此,在下面,我将等待时间设置为零,因此不等待。我也对为什么不修复实际代码感到困惑,因为如果您不应该这样做,那么就看不到指示器。也许您无权访问该代码。

cy.get('[data-test="loading"]',{ timeout: 0 }).should('not.exist');

cy.get('[data-test="loading"]',{ timeout: 0 }).should('not.be.visible');
Run Code Online (Sandbox Code Playgroud)