RSpec + capybara + selenium + chromedriverで印刷ボタンの絡むシステムスペックを書いた

概要

自作webサービスのシステムスペックで、印刷ボタンが絡むテストを書くのに苦労したので、その忘備録

やりたかったこと

印刷ボタンを押させる -> キャンセル or 保存ボタンを押下させる

解決策

ヘッドレスブラウザではなく、バックグラウンドでchromeブラウザを立ち上げ、chromeブラウザオプションの--kiosk-printingを用いて、自動で保存ボタンが押下されるようにした。

なぜそうしたか

実際のコード

spec/support/capybara.rb

RSpec.configure do |config|
  config.before(:each, type: :system) do
    driven_by :selenium, using: :headless_chrome, screen_size: [375, 667]
  end
  config.before(:each, type: :system, headless: false) do
    driven_by :selenium, options: {
      browser: :chrome
    } do |driver_option|
    # 印刷ダイアログが開いたら自動で保存ボタンを押下する
    driver_option.add_argument('--kiosk-printing')
    end
  end
end