【備忘録】Chromium 121でVRTが落ちる事がある

3行まとめ

  • SeleniumやBackstopを使用してChromiumなどでスクリーンショットを取るVRTでChrome(Chromium)のバージョンが121の場合、要素を選択できず落ちてしまうことがある
  • ウインドウサイズの変更をすることで発生する可能性がある
  • 現在のところ解決策はChrome(Chromium)のバージョンを下げるか--headless=oldにする必要がある。

bugs.chromium.org

所感

私の環境では、Backstop(内部はPuppeteer)を使っている環境で、Chromiumのバージョンを121に上げたところ、400ほどあるVRTの半分が落ちてしまっている問題が発生しました。エラーでは、Element Not Foundが多くその次にConnection Timeoutエラーもありました。また、スクリーンショットがとれても502になるケースも数多く見られています。

このテストでは、ci内にローカルなサーバーを立てて比較するのですがほとんどローカル環境で失敗してしまっています。そのため、ローカル環境のアクセスログ(nginx)を確認したところ499のエラーになっていることがわかりました。499はクライアント側でコネクションが閉じられた際に出されるものらしいのでブラウザ側の問題っぽいです。

調査したところ、このようなPRにたどり着きました(教えていただきました)。

github.com

どうやら、ウィンドウサイズが小さくなりすぎるためエラーになるっぽいです。--headless=oldにすると直るらしいので試したところ、解決しました。

現在、私は--headless=oldにしましたが、Chrome 121にバグが起きているという状況を考えるとバージョンをダウングレードしてテストしてもいいかもしれません。とはいえ、最新ブラウザでテストできなくなるのでVRTはそれでいいんかという話題もありそうです。

もし、同じ問題が発生しているのであれば、--headless=oldに設定の上、 4709 - chromedriver - WebDriver for Google Chrome - Monorail をウォッチして解決してリリースされたらnewに戻すようにするのが一番いいかもしれません*1

*1:忘れないように気をつけましょう