我在Rails 5.1中使用系统测试,我想关闭失败案例的自动截图。通常,失败消息足以让我弄清楚发生了什么 - 并且值得注意的是,webdriver浏览器窗口总是需要关注才能截取屏幕截图,这在我处理代码时很烦人(或者试图做其他事情)。
Capybara配置中是否有内置方法可以关闭屏幕截图?我查看了文档并且没有明确说明任何内容,但由于这是主流Rails的新增功能,我认为这并不一定意味着它不存在。
答案 0 :(得分:3)
在Rails 5.1中ActionDispatch :: SystemTestCase(从中派生ApplicationSystemTestCase)具有默认的after_teardown
方法
def after_teardown
take_failed_screenshot
Capybara.reset_sessions!
super
end
要阻止此截屏,最简单的方法是覆盖ApplicationSystemTestCase类中的take_failed_screenshot
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
driven_by ...
# Add this method
def take_failed_screenshot
false
end
end
答案 1 :(得分:0)
我认为覆盖 supports_screenshot?方法更为优雅,就我而言,我想在Heroku CI上禁用屏幕截图
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
private
# disable only on CI, i.e: HEROKU CI
def supports_screenshot?
return false if ENV['CI']
super
end
# to disable screenshots completely on every test invironment (local, CI)
def supports_screenshot?
false
end
end
答案 2 :(得分:-1)
Capybara::Screenshot.autosave_on_failure = false
我认为这将解决您的问题。
尝试查找导入此库的文件。或者找到capybara-screenshot / lib / capybara-screenshot.rb并将self.autosave_on_failure = true
更改为false