ChromeDriverを使ったE2Eテストは再現性に注意が必要
他の環境ではちょっとどうなっているのか分からないのでとりあえず Ruby 限定の話。
- Chrome ウェブブラウザ
- ChromeDriver - WebDriver for Chrome
- flavorjones/chromedriver-helper: Easy installation and use of chromedriver, the Chromium project's selenium webdriver adapter.
登場人物は以上。以下、メモ。
- ChromeDriver は standalone server である
- Ruby では ChromeDriver を利用しやすくしてくれる chromedriver-helper gem がある
- これを使うと chromedriver を起動するコマンドとこれのアップデートを支援する chromedriver-update コマンドがインストールされる
- chromedriver-helper gem のバージョンと chromedriver server のバージョンは一致しない
- chromedriver-update を叩いた時点での最新バージョンが常に安定バージョンとは限らない
- 明示的にバージョンダウンするには chromedriver-update <version> とする(helpは特にない)
これを CI で再現するには chromedriver-update をとりあえず叩くようにしておきつつ、コケたらバージョン指定してダウンするといった対応を即座にしていく必要がある。のかな? いや違うな、CI で動く Chrome のバージョンの変更を検知するところからか?
とにかく PhantomJS 時代と違って Headless Chrome でいこうと思ったら Chrome, ChromeDriver, chromedriver-helper gem のバージョンの情報を追う必要があるので、ちょっとこれまでより気を使うことが増えるなぁという感想でした。