PIYO - Tech & Life -

Circle CIでHeadless Chrome 解決編

CI RSpec

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

前々回の記事と、

https://blog.piyo.tech/posts/2018-03-30-chrome-on-circleci/

前回の記事がこのへん。

https://blog.piyo.tech/posts/2018-04-20-circleci-chromedriver/

そもそもの理由はchromedriver-helpergemがインストールする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オプションを追加してこれらを回避することにしました。

https://sites.google.com/a/chromium.org/chromedriver/help/chrome-doesn-t-start

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