Если вы тестируете одностраничное приложение с помощью Selenium, вы обязательно столкнетесь с проблемами ожидания (знаменитые StaleElementReferenceError, NoSuchElementError или ElementNotClickableError и другие).

Это происходит, когда Selenium думает, что страница завершила рендеринг, и приступает к выполнению своих утверждений, в то время как ваш Javascript все еще работает.

Selenium-webdriver, библиотека NodeJS для Selenium, поставляется с удобным модулем до, который позволяет нам избежать этих проблем. Однако я нашел его синтаксис немного неуклюжим, поскольку многие из его методов требуют, чтобы вы передавали ему элемент вместо селектора.

Я хотел иметь возможность совершать такие звонки:

until.elementTextMatches('.myElementClass', /some content/);
until.elementIsNotVisible('.myElementClass');

Поэтому я решил написать небольшой вспомогательный модуль для ожидания:

На данный момент он предоставляет только три метода: elementTextMatches, elementIsNotVisible и seconds. Однако, если вы найдете это полезным и хотите, чтобы я добавил еще несколько методов, дайте мне знать в комментариях.