Создайте утверждение, которое всегда будет проходить при отображении DOM
, например, используя .get()
для элемента, который добавляется к DOM
ex), если у вас было <ul class="myloadedlist">....
:
cy.get('.virtual-scroll').scrollTo('bottom')
cy.get('ul.myloadedlist')
cy.get('li').last().children('h4').contains('1999')
Таким образом, Cypress продолжит тестирование, как только этот элемент станет видимым.
Почему?
Я предполагаю, что элементы добавляются вDOM
в каком-то свитке eventListener
.В этом случае это правильное поведение.
По сути, вы протестировали условие гонки , когда пользователь очень быстро прокручивал довнизу страницы, чтобы увидеть, что DOM
еще не закончил рендеринг - действительный сенарио.
Поскольку вы нацелились на элемент last()
li
, Cypress находит последний элемент страницы до DOM
обновляется и ожидает его до contain
1999
, чего не происходит, даже после того, как Cypress попытается в течение 4 секунд.
Этона самом деле отличная особенность Cypress, потому что вы можете тестировать состояние DOM
в те моменты, которые пользователь может видеть только в течение доли секунды .