如何使用 Cuprite 和 Webdrivers 在 rspec 特性测试中测试 react-rails 组件
How to test react-rails components in rspec feature tests using Cuprite & Webdrivers
我正在更新旧应用程序的 Ruby 和 Rails 版本,并试图让所有功能测试通过。由于仍然依赖 capybara-webit
,他们中的大多数人都失败了。我已经用 webdrivers
和 cuprite
替换了它,并且修复了大约一半。尽管如此,在 运行 测试时,所有注入的反应组件(使用 react-rails
)都没有被渲染(截图证明了这一点)。
我已经添加了 gem 并在我的 spec_helper.rb
文件中使用此配置:
Capybara.register_driver(:cuprite) do |app|
Capybara::Cuprite::Driver.new(
app,
window_size: [1200, 800],
inspector: true
)
end
Capybara.default_driver = Capybara.javascript_driver = :cuprite
我也尝试过使用 :headless_chrome
驱动程序使其工作,但效果更差。使用该配置,页面也不会呈现注入的 React 组件的 erb
父容器。我还尝试在 sleep
组件正在渲染的地方添加,但没有用。有没有办法让 React 组件通过此设置在 test
中呈现?
它们是否以开发模式呈现?如果是这样,问题很可能是两种模式之间资产处理的差异。在测试模式(和生产)中,资产被打包以减少请求的数量。这意味着一个 JS 文件中的错误可以阻止 JS 的其余部分执行。检查您的浏览器控制台是否存在 JS 错误并全部修复
我正在更新旧应用程序的 Ruby 和 Rails 版本,并试图让所有功能测试通过。由于仍然依赖 capybara-webit
,他们中的大多数人都失败了。我已经用 webdrivers
和 cuprite
替换了它,并且修复了大约一半。尽管如此,在 运行 测试时,所有注入的反应组件(使用 react-rails
)都没有被渲染(截图证明了这一点)。
我已经添加了 gem 并在我的 spec_helper.rb
文件中使用此配置:
Capybara.register_driver(:cuprite) do |app|
Capybara::Cuprite::Driver.new(
app,
window_size: [1200, 800],
inspector: true
)
end
Capybara.default_driver = Capybara.javascript_driver = :cuprite
我也尝试过使用 :headless_chrome
驱动程序使其工作,但效果更差。使用该配置,页面也不会呈现注入的 React 组件的 erb
父容器。我还尝试在 sleep
组件正在渲染的地方添加,但没有用。有没有办法让 React 组件通过此设置在 test
中呈现?
它们是否以开发模式呈现?如果是这样,问题很可能是两种模式之间资产处理的差异。在测试模式(和生产)中,资产被打包以减少请求的数量。这意味着一个 JS 文件中的错误可以阻止 JS 的其余部分执行。检查您的浏览器控制台是否存在 JS 错误并全部修复