У меня есть тест интеграции Rails, который не работает, и я не могу понять, почему. Я использую Capybara с Selenium в качестве драйвера.
Тест проверяет, что содержимое страницы было удалено после вызова AJAX. Соответствующее действие состоит в том, что нажата кнопка, и этот щелчок кнопки вызывает удаление части страницы с помощью вызова jQuery remove()
. Здесь приведена аппроксимация кода тестирования интеграции:
click_button("Remove stuff")
assert has_no_link?("This should be removed")
Утверждение терпит неудачу, подразумевая, что ссылка все еще существует.
Я читал на Capybara, и я знаю, что вы можете продлить время ожидания по умолчанию. Я распространил его на нелепое значение (20 секунд), и все же утверждение терпит неудачу.
Когда я сам выполняю тестовый процесс вручную, источник страницы все еще показывает содержимое, но DOM не делает (просматривая Firefox DOM Inspector и ищет элемент). Это проблема? Я даже попытался проверить DOM, пока тесты запущены в Firefox, чтобы проверить, был ли контент там, и это не похоже.
Я не знаю, как Capybara все еще находит эту ссылку, которая больше не существует в DOM. Капибара изучает источник вместо DOM и находит ссылку там? Если да, я не знаю, как исправить этот тест, чтобы убедиться, что тест проходит. Обновление страницы устранит проблему, но это не совсем то, что сделает пользователь, поэтому я не решаюсь изменить страницу, просто чтобы пройти тест...
Хотелось бы получить рекомендации относительно того, как подойти к этой проблеме.
Спасибо!