如何在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
相关产品推荐
相关产品推荐

