テストの実行が完了した後に、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 で)。