Techioz Blog

テストの実行が完了した後に、Cucumber/Capybara を閉じたり、ブラウザ セッションを終了したりするにはどうすればよいですか?

概要

Jenkins でいくつかの問題が発生しています。テストの実行が完了した後も、ブラウザー セッションはまだ生きているため、パイプラインで別の問題が発生します。そのため、テストスイートで実行が完了した後、ブラウザセッションを終了したいと考えています。 Cucumber>Capybara>SitePrism>Rubyを使用しています。

どうすればそれができるでしょうか?テストスイートの最後に実行される以下のようなものが必要です。

RSpec.configure do |config|
  config.after(:suite) do
    puts 'Destroy Driver'
  end
end

解決策

試してみてもいいでしょう

Capybara.send(:session_pool).each { |name, ses| ses.driver.quit }

これは、Selenium::Webdriver のすべてのインスタンスで quit を呼び出す必要がありますが、プライベート メソッド sesion_pool にアクセスしています。実際、これらのインスタンスは、セッションで何か奇妙なことをしていない限り (またはバグがある可能性があります)、capybara が終了すると自動的にクリーンアップされるはずです。 phantomjs で使用する場合は Selenium で)。