CircleCIでHeadless Chromeを使ったテストが動かないっぽい件で、ひとまずunless使ってGemfileを条件分岐するというお行儀の悪いことをしていましたが、もしかしたら直ったような気がするので、改めてメモしておきます。

前々回の記事と、

前回の記事がこのへん。

そもそもの理由はchromedriver-helpergemがインストールするchromeドライバーとCircleCIのイメージに入っているChromeのバージョンに整合性がないのがえらーとなっていた理由です。で、Chromeのアップグレードを色々試みたんですが、どうやらこれでいけそうでした。

1- run:
2    name: Install Latest Chrome
3    command: |
4      sudo apt install libappindicator3-1
5      curl -L -o google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
6      sudo dpkg -i google-chrome.deb
7      sudo sed -i 's|HERE/chrome\"|HERE/chrome\" --disable-setuid-sandbox|g' /opt/google/chrome/google-chrome
8      rm google-chrome.deb

バージョンの整合性は解決したものの、Chrome failed to start: crashedのようなエラーが出たりとか、別のプロジェクトでno such sessionという話も聞いたりしていたので、テスト用にno-sandboxオプションを追加してこれらを回避することにしました。

テストで一時的に使うのにセキュリティ上の理由はあまりないはずなので、sandbox外で実行するのは問題ないはず。これで起動しないなどのエラーを回避できたので、ひとまずこれで様子をみたいと思います。