Capybara 测试不起作用,而实际应用程序运行良好。 React 前端 Rails 5
Capybara tests don't work, while actual app works fine. React front-end in Rails 5
规格:Rails 5.2,Ruby 2.5.1,Yarn 1.91.1,React-Rails 2.6.0,硒-webdriver 3.14,chromedriver 77,水豚 gem 3.29,Ubuntu 18.04
问题:我在 Rails 应用程序中使用 React 组件创建了一份问卷,该应用程序在 运行 处于开发模式时有效。我可以单击是或否按钮,然后回调函数呈现新问题文本。但是我的 selenium 集成测试没有发现这一点。 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
现在使用 sleep
可以正常工作。这是我所做的更改。
1) 我删除了已弃用的 gem chromedriver-helper
并将其替换为 webdrivers
2) 添加 require 'webdrivers'
到 rails_helper.rb 文件。
3) 在我更改为 var questionnaire = this
的 questionnaire = this
的反应代码中发现错误(未在开发中显示或未登录 chrome webdriver)。 =17=]
集成测试现在使用 selenium_chrome_headless
可以顺利通过
规格:Rails 5.2,Ruby 2.5.1,Yarn 1.91.1,React-Rails 2.6.0,硒-webdriver 3.14,chromedriver 77,水豚 gem 3.29,Ubuntu 18.04
问题:我在 Rails 应用程序中使用 React 组件创建了一份问卷,该应用程序在 运行 处于开发模式时有效。我可以单击是或否按钮,然后回调函数呈现新问题文本。但是我的 selenium 集成测试没有发现这一点。 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
现在使用 sleep
可以正常工作。这是我所做的更改。
1) 我删除了已弃用的 gem chromedriver-helper
并将其替换为 webdrivers
2) 添加 require 'webdrivers'
到 rails_helper.rb 文件。
3) 在我更改为 var questionnaire = this
的 questionnaire = this
的反应代码中发现错误(未在开发中显示或未登录 chrome webdriver)。 =17=]
集成测试现在使用 selenium_chrome_headless