2017-06-02 7 views
1

Rails 5.1でシステムテストを使用していますが、私は失敗した場合の自動スクリーンショットをオフにしたいと思います。通常、エラーメッセージは何が起こっているのか把握するのに十分です。特に、Webdriverのブラウザウィンドウには、スクリーンショットを撮るために常にフォーカスがかかります。これはコードを操作しているとき(または何か他のこと)。Railsシステムテストのスクリーンショットをオフにする

Capybaraの設定でスクリーンショットをオフにする方法はありますか?私はドキュメントを見渡して明示的に何も見つけられませんでしたが、これはRailsのメインストリームへの新しい追加であるため、必ずしもそれが存在しないというわけではありません。

答えて

2

は(そこから派生しApplicationSystemTestCase)停止する

def after_teardown 
    take_failed_screenshot 
    Capybara.reset_sessions! 
    super 
end 

のデフォルトafter_teardown方法を持って変更しますこのスクリーンショットを取ってから、最も簡単な方法は思わあなたApplicationSystemTestCaseクラス

class ApplicationSystemTestCase < ActionDispatch::SystemTestCase 
    driven_by ... 

    # Add this method 
    def take_failed_screenshot 
    false 
    end 
end 
+0

ありがとうございました!私はこれのためにActionDispatchのPRを開くかもしれません。このように、メソッドをオーバーライドせずに構成可能にする必要があります。 – dfaulken

+0

@dfaulkenそう、それはシステムテストAPIの見落としであるようですが、もともとは、あなたの 'after_teardown'に' take_failed_screenshot'を追加しなければならないことを意図していましたが、それをAD :: SystemTestCaseに移して見落としました無効にする方法 –

0
Capybara::Screenshot.autosave_on_failure = false 

私はあなたの問題を解決すると思います。

このライブラリをインポートするファイルを探してみてください。またはカピバラ-スクリーンショット/ libに/カピバラ-screenshot.rbを見つけるとRails 5.1 ActionDispatch :: SystemTestCaseでself.autosave_on_failure = truefalse

+0

take_failed_screenshotをオーバーライドすることです。私はどこにそれを書いていますか?私はその定数が定義されているどこにも見つけることができません。 – dfaulken

+1

これはRails 5.1では正しくありません。これはcapybara-screenshot gemに依存しないからです。代わりに、SystemTestCase - https://github.com/rails/rails/blob/5-1-stable/actionpackに焼き付けられています。 /lib/action_dispatch/system_test_case.rb#L90 –

関連する問題