Как утверждать, что поле формы содержит некоторый текст, независимо от того, какой текст находится в Cypress?

#text #cypress

Вопрос:

Небольшая предыстория по этому поводу такова:

Допустим, у меня есть форма с «n» полями ввода.

Я проверяю, будет ли ввод данных в ключевое поле формы автоматически заполнять другие (n-1) поля. На данный момент я не беспокоюсь о том, какие данные автоматически заполняются, только о том, заполняются ли они.

Как мне это сделать в Cypress?

Комментарии:

1. Пожалуйста, поделитесь своим кодом, который вы пробовали вместе с HTML dom, а также, если вы столкнулись с какими-либо ошибками.

Ответ №1:

Вот что я считаю воспроизводимым примером

 <body>
  <form>
    <input id="key" onblur="autofill()" />
    <input id="1" />
    <input id="2" />
    <input id="3" />
  </form>

  <script>
    function autofill() {
      [1,2,3].forEach(id => {
        const input = document.getElementById(id)
        input.value = "Value "   id
      })
    }
  </script>
</body>
 

и вот вам тест

 cy.get('#key').type('the key').blur()  

cy.get('input:not(#key)')
  .each($nonKeyInput => {
    cy.wrap($nonKeyInput)
      .invoke('val')
      .should('not.be.empty')  // passes
  })
 

Сделайте ошибку в приложении

 [1,2].forEach(id => {
 

и тест проваливается.