Сложности с Cypress ScrollTo методом - PullRequest
0 голосов
/ 22 мая 2018

У меня возникли некоторые проблемы при тестировании компонента виртуальной прокрутки с Cypress.У меня есть тест, который проверяет элементы li, присутствующие в DOM после прокрутки до дна контейнера.

Когда написано так, тест проходит:

cy.get('.virtual-scroll').scrollTo('bottom')
cy.wait(0)                                             
cy.get('li').last().children('h4').contains('1999')

Когда написано так, это не так:

cy.get('.virtual-scroll').scrollTo('bottom')
cy.get('li').last().children('h4').contains('1999')

Это также не удается:

cy.get('.virtual-scroll').scrollTo('bottom').get('li').last().children('h4').contains('1999')

Во втором и третьем примерах get ('li') возвращает элементы li, присутствующие до завершения прокрутки, и, следовательно, не проходит тест.Я могу исправить это, добавив .wait, но не до конца понимаю поведение и задаюсь вопросом, если это ошибка.

Есть идеи?

1 Ответ

0 голосов
/ 17 июня 2018

Создайте утверждение, которое всегда будет проходить при отображении 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 в те моменты, которые пользователь может видеть только в течение доли секунды .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...