結論
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。