バージョン情報
- 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の起動オプションに--lang
にja-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は無事日本語のものになったので、テストも直りました。