XHR-запрос от предыдущей спецификации Capybara js (и сбой) в следующей спецификации

1

Мы используем Chrome без головы с Capybara и Selenium для трех тестов функций js.

У нас есть предсказуемый (только на CI) сбой, когда один конкретный js-тест (с использованием xhr) следует за другим, который также использует xhr (см. Https://github.com/thredded/thredded/tree/separate-out-js-from -non-js-in-ci для кода или https://travis-ci.org/thredded/thredded/jobs/302376004 для выборочного прогона).

Ошибка сервера всегда появляется в следующей спецификации: "Пользователь создает новую тему с заголовком и контентом", но URL-адрес, очевидно, из предыдущей спецификации "Пользователь, ответивший на тему, начинает цитату-ответ (js)".

Очевидно, что существует условие гонки между запросом, который выпадает из конца спецификации и происходит после DatabaseCleaner.clean. Тем не менее, я понимаю, что с Capybara 2. 7+ [1] after_each должен произойти после reset_session! что должно предотвратить эту точную проблему. В любом случае я уверен, что на этой странице нет ничего, что могло бы создать этот запрос (у нас есть конкретное ожидание/тест для завершения этого запроса ajax).

Это происходит с 3 различными базами данных и тремя различными версиями рельсов (4.2, 5.0, 5.1). Мы обновили до последней Capybara.

Попробовали отключить turbolinks, добавив массивный (10 с) спать в конце оскорбительной спецификации... Пробовали вручную сбросить сеансы тоже.

Должно быть, что-то не хватает. Любые указатели?

[1] https://github.com/teamcapybara/capybara/pull/1637 ссылается на https://bibwild.wordpress.com/2016/02/18/struggling-towards-reliable-capybara-javascript-testing/

UPDATE: добавили ссылки на xhr, поскольку у другого (нового) js spec возникла проблема, и что это не первые два запроса (форма входа в систему и сообщение для входа в систему), которые вызывают ошибку, но первый запрос xhr который вызывает ошибку. В новом случае запрашиваемый запрос xhr запрашивается с POST в последующих спецификациях, даже если он был отправлен полностью с помощью GET

Теги:
selenium-chromedriver
capybara

1 ответ

0
Лучший ответ

Похоже, это была ошибка хромирования.

Мы исправили это, обновив chromedriver (на travis) до v2.33 (linux). https://travis-ci.org/thredded/thredded/builds/302431113

Предыдущая версия была v2.31. Как ни странно, мы не могли заставить это ломаться локально с 2.31 (mac).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню