RailsのSystemテストでheadless_chromeに起動オプションを渡す

バージョン情報

  • Rails 6.0.2.1
  • RSpec 3.9.0

RailsのSystemテストでheadless_chromeに起動オプションを渡す

RailsのSystemテストでheadless_chromeを使う場合、driven_byは次のように書くと思う。

driven_by(:selenium, using: :headless_chrome, screen_size: [1400, 800])

これでテストしたとき、ブラウザの言語が英語になってしまって、テストが面倒なことになってしまうケースがあった。
chromeの起動オプションに--langja-JPを渡せればいいんだけど、これがなかなかハマった。

最初は次のように、optionsのargsに起動オプションを書いた。

driven_by(:selenium, using: :headless_chrome, screen_size: [1400, 800], options: {args: ['--lang=ja-JP']})

そしたら、WARN Selenium [DEPRECATION] :args or :switches is deprecated. Use Selenium::WebDriver::Chrome::Options#add_argument instead.と言われてしまった。
なんだ、deprecatedなのか。
というわけで、次のようにした。

driven_by(:selenium, using: :headless_chrome, screen_size: [1400, 800]) do |options|
  options.add_argument('--lang=ja-jp')
end

これにしたらheadless chromeのAccept-Languageは無事日本語のものになったので、テストも直りました。

タイトルとURLをコピーしました