我想在我的页面上同时检查多个不同的 toasts,但是我的 Cypress E2E 测试只在它首先看到的那个上失败

问题描述 投票:0回答:2

我正在使用 Cypress 检查弹出消息。我通常只有 1 个吐司,我可以捕获并比较没有问题,但是当我同时有多个吐司时,这不是重复,而是每个它们自己的消息,我的测试只捕获第一个并失败.

单个吐司示例:

Cypress.Commands.add('lookAtToast', (message) => {
  cy.get('.messenger-message-inner').eq(0).should('contain.text', message);
}); 

任何人都可以帮助我使用 Cypress 12(最新)中的方法来查看所有 3 个祝酒词,并能够匹配其中任何一个,一次 1 个......以任何顺序。
前任。如果我有“First Toast”、“Second Toast”、“Third Toast”的祝酒消息 我希望能够有一个测试可以查看它们并匹配其中一个,但不一定是它看到的第一个。

预期得到 1 个且只有 1 个吐司来搭配这个。

cypress toast
2个回答
0
投票

https://docs.cypress.io/api/commands/each


Cypress.Commands.add('lookAtToast', (message) => {
  cy.get('.messenger-message-inner').each((el) => {
    cy.wrap(el).should('contain.text', message);
  });
});

0
投票

吐司的问题是他们在不同的时间来来去去,即使之间的差距很小。

使用

.each()
的问题是
cy.get('.messenger-message-inner')
一看到第一个吐司就会继续前进。

但是,如果第二个、第三个等稍有延迟,他们将永远不会被抓到。

也许断言预期的祝酒次数,像这样

Cypress.Commands.add('lookAtToast', (messages) => {  // array of messages

cy.get('.messenger-message-inner')
  .should('have.length', 3)
  .each((el, index) => {
    cy.wrap(el).should('contain.text', messages[index])
© www.soinside.com 2019 - 2024. All rights reserved.