Спецификации: Rails 5.2, Ruby 2.5.1, Yarn 1.91.1, React-Rails 2.6.0, selenium-webdriver 3.14, chromedriver 77, capybara gem 3.29, Ubuntu 18.04
Проблема: я создал анкету, используя компоненты реакции в приложении Rails, которое работает при запуске в режиме разработки. Я могу нажать кнопку «да» или «нет», после чего функция обратного вызова отобразит новый текст вопроса. Однако мои интеграционные тесты селена этого не замечают. Объект page
по-прежнему имеет тот же текст для первого вопроса, поэтому я получаю сообщение об ошибке, подобное этому.
Failure/Error: expect(question.text).to include('last question')
expected "first question" to include "last question"
Сам тест выглядит так в features/questionnaire.rb
RSpec.feature "Onboarding Questionnaire", type: :feature, js:true do
(...)
it...
question = find('h3.question')
expect(question.text).to include('first question')
yes = find('#yes')
yes.click
sleep 5
question = find('h3.question')
expect(question.text).to include('last question')
Проблема возникает после yes.click
. Сначала я думал, что моя анимация вызывает проблему, но я удалил ее, и это просто использование setState в моей функции обратного вызова.
Вот моя функция обратного вызова
saveAnswer(e) {
questionnaire = this
++questionnaire.state.page
questionnaire.setState({page: questionnaire.state.page})
}
Вот конфигурация моего драйвераCapybara.javascript_driver = :selenium_chrome_headless