在赛普拉斯中使用 click()

using click() in Cypress

我正在使用 Cypress 测试我的应用程序,在我的应用程序中有一个一分钟的计时器。当计时器到期时,任何按钮都不应工作。更准确地说,即使用户点击按钮,也不会发生任何事情(不应触发连接到这些按钮的功能)。我怎样才能测试这样的东西?

cy.get('#timer-btn').click().wait(60000)
cy.get('#timer').should('have.text', 'TIME IS UP, your score is: 0')
cy.get('.btn').click() 
//???
  1. 不要使用 wait,而是使用超时,因为 wait 总共等待 60 秒,但是有超时,只要满足预期条件,它就会终止。
cy.get('#timer-btn').click()
cy.get('#timer', {timeout: 60000}).should(
  'have.text',
  'TIME IS UP, your score is: 0'
)
cy.get('.btn').click()
  1. 现在,如果按钮在 60 秒后被禁用,您可以使用:
cy.get('#timer-btn').click()
cy.get('#timer', {timeout: 60000}).should(
  'have.text',
  'TIME IS UP, your score is: 0'
)
cy.get('.btn').should('be.disabled')
  1. 现在,如果您在比较计时器期间和之后按钮的 HTML 时看到,如果在计时器完成后向按钮添加了任何 attribute-value 对,您可以断言使用:
cy.get('#timer-btn').click()
cy.get('#timer', {timeout: 60000}).should(
  'have.text',
  'TIME IS UP, your score is: 0'
)
cy.get('.btn').should('have.attr', 'attr-name', 'attr-value')
  1. 如果您看到只添加了一个属性,您可以使用
cy.get('.btn').should('have.attr', 'attr-name')

我相信您可以使用 cy.clock() and .tick() 来操纵浏览器认为已经过去的时间

cy.clock();
cy.get('#timer-btn').click();
cy.tick(60000);
cy.get('#timer').should('have.text', 'TIME IS UP, your score is: 0');
cy.get('.btn').click();