結論
1. google-chrome
をインストールします
- 詳細は割愛します*1
- 配置場所は
/opt/google/chrome
配下になるかと思います
2. chromedriver
をインストールします
- 詳細は割愛します
- 配置場所は
/usr/bin/chromedriver
になるかと思います*2
3. spec/rails_helper.rb
に記述を追加します
spec/rails_helper.rb
に以下の記述を追加します。/usr/bin/chromedriver
の部分は chromedriver
がインストールされている場所です。
Selenium::WebDriver::Chrome::Service.driver_path = '/usr/bin/chromedriver'
4. RSpec (System Spec) を実行します
これで、System Spec が正しく実行できるはずです。ただ、ヘッドレスではない Chrome の動作には VcXsrc X Server
の設定が必要になります*3。
注意点
Chrome を Headless モードで実行したい場合は /opt/google/chrome/google-chrome
を編集します*4。
最終行の以下の部分を編集します。
exec -a "$0" "$HERE/chrome" "$@"v
上記の部分に対して以下のように --headless
オプションを付与すると、ヘッドレスモードで起動できます。他に --disable-setuid-sandbox
オプションなどを付与することも出来ます。
exec -a "$0" "$HERE/chrome" --headless "$@"
上記の書き方だとすべての場合に --headless
になってしまうので、以下のように書くのも良いです。
if [[ $RAILS_ENV = "test" ]]; then exec -a "$0" "$HERE/chrome" --headless "$@" else exec -a "$0" "$HERE/chrome" "$@" fi
補足
共同開発をしている場合には、自分だけ WSL2 で開発しているときは spec/rails_helper.rb
を変更してしまうことになります。
それを避けるためには、たとえば spec/support
配下に上記の一行だけを書いたコードを置き、それを .git/info/exclude
で自分だけ無視すればうまくいくことでしょう*5。