You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rails 6的RSpec应用中默认禁用自动生成截图功能

解决方案

Rails 系统测试默认开启了测试失败时自动保存截图的特性,你之前在单个测试文件内添加before块调用driven_by的方式,本质是覆盖了Rails默认的带自动截图参数的驱动配置,从而禁用了截图功能。

以下两种全局配置方案都只需修改rails_helper.rb即可实现需求:

方案1:全局统一驱动配置(推荐,匹配你现有的使用习惯)

在rails_helper.rb的RSpec.configure块内添加针对type: :system类型测试的全局before钩子,无需再每个文件单独写重复配置:

RSpec.configure do |config|
  config.fixture_path = "#{::Rails.root}/spec/fixtures"
  config.use_transactional_fixtures = true
  config.infer_spec_type_from_file_location!
  config.filter_rails_from_backtrace!
  config.include FactoryBot::Syntax::Methods
  # 新增以下全局system测试驱动配置
  config.before(:each, type: :system) do
    driven_by :selenium_chrome_headless
  end
end

配置生效后可直接删除所有单个测试文件内的重复before块,效果完全一致。

方案2:直接关闭自动截图开关

如果你不需要修改驱动配置,仅要禁用自动截图功能,可直接修改Rails系统测试的默认参数,在rails_helper.rb末尾添加以下代码即可:

Rails::SystemTestCase.automatically_save_screenshots_on_failure = false

该配置直接关闭自动截图的全局开关,无论使用什么驱动都不会再生成测试截图。


内容的提问来源于stack exchange,提问作者O Milli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:24:07