Я пытаюсь проверить обязательные поля формы и сообщение об ошибке, которое отображается при отправке формы без (допустимого) ввода. Это код кипариса, который я использую. Сначала я утверждаю, что форма есть, граница поля ввода серого цвета и ошибка msg не отображается. Затем я нажимаю кнопку отправки и ожидаю, что граница поля ввода станет красной, сообщение об ошибке будет отображаться и также будет красным.
cy.get('[data-module="questionnaire"] form').should('be.visible')
cy.get('[data-module="questionnaire"] form label').should('contain', 'Question 1')
cy.get('[data-module="questionnaire"] form input')
.should('contain', '')
.should('have.css', 'border', '1px solid rgb(204, 204, 204)')
cy.get('[data-module="questionnaire"] form .a-error-block').should('not.exist')
cy.get('[data-module="questionnaire"] form button').invoke('text').should('equal', 'Next question')
cy.get('[data-module="questionnaire"] form button').click()
cy.get('[data-module="questionnaire"] form input')
.should('contain', '')
.should('have.css', 'border', '1px solid rgb(234, 40, 40)')
cy.get('[data-module="questionnaire"] form .a-error-block')
.should('be.visible')
.should('have.css', 'color', 'rgb(234, 40, 40)')
.invoke('text').should('equal', 'This field is required')
Ошибка при первом утверждении после щелчка, причина, по-видимому, заключается в загрузке страницы после отправки формы, которая запускается Cypress. Это сбрасывает вопросник до состояния, в котором еще нет формы, и на этапе подтверждения выполняется поиск формы. Это не должно обновлять по моему мнению. Если я «замораживаю» воспроизведение щелчка, я вижу, как поле ввода меняет цвет, и появляется сообщение об ошибке.
Я вижу это в списке воспроизведения после щелчка:
(FORM SUB)--submitting form--
(PAGE LOAD)--page loaded--