CircleCIでHeadless Chromeを使ったテストが動かないっぽい件で、ひとまずunless使ってGemfileを条件分岐するというお行儀の悪いことをしていましたが、もしかしたら直ったような気がするので、改めてメモしておきます。
前々回の記事と、
前回の記事がこのへん。
そもそもの理由はchromedriver-helper
gemがインストールするchromeドライバーとCircleCIのイメージに入っているChromeのバージョンに整合性がないのがえらーとなっていた理由です。で、Chromeのアップグレードを色々試みたんですが、どうやらこれでいけそうでした。
- run:
name: Install Latest Chrome
command: |
sudo apt install libappindicator3-1
curl -L -o google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome.deb
sudo sed -i 's|HERE/chrome\"|HERE/chrome\" --disable-setuid-sandbox|g' /opt/google/chrome/google-chrome
rm google-chrome.deb
バージョンの整合性は解決したものの、Chrome failed to start: crashed
のようなエラーが出たりとか、別のプロジェクトでno such session
という話も聞いたりしていたので、テスト用にno-sandbox
オプションを追加してこれらを回避することにしました。
テストで一時的に使うのにセキュリティ上の理由はあまりないはずなので、sandbox外で実行するのは問題ないはず。これで起動しないなどのエラーを回避できたので、ひとまずこれで様子をみたいと思います。