关闭Rails系统测试中的屏幕截图

时间:2017-06-02 20:00:27

标签: ruby-on-rails capybara

我在Rails 5.1中使用系统测试,我想关闭失败案例的自动截图。通常,失败消息足以让我弄清楚发生了什么 - 并且值得注意的是,webdriver浏览器窗口总是需要关注才能截取屏幕截图,这在我处理代码时很烦人(或者试图做其他事情)。

Capybara配置中是否有内置方法可以关闭屏幕截图?我查看了文档并且没有明确说明任何内容,但由于这是主流Rails的新增功能,我认为这并不一定意味着它不存在。

3 个答案:

答案 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