25
2019

AngularのE2EテストでChromeDriverのバージョンを固定する方法

CATEGORYJavaScript
最近のAngualr (Angular CLI) だと、Protractorを使ったE2Eテストが自動でセットアップされるんだけど、ちょっと前にドライバとブラウザのバージョン不一致で動かなくなってしまったのでその対策をまとめとく。

E2Eテストでは protractor.conf.js に定義されたブラウザが使われる。が、ブラウザそのものは、実行環境に別途自分でインストールする必要がある。なので、普通にアップデートしてるとちょくちょくバージョンが上がる。
ng e2e コマンドでは、テスト前に勝手に webdriver-manager update というコマンドを流してドライバをバージョンアップして追従してくれるので、通常は問題ない。
ところが、何かの拍子に両者のバージョンがずれると、途端にE2Eテストが動かなくなってしまう。
(特にChrome系の場合、ドライバがChromeに合わせて新しくなる一方、CentOS版Chromiumとかは更新が遅くてバージョンがずれる。)

最終的に見つけたのが、以下のようにnpm script内でオプションを指定して自動更新を止め、pree2eとして前処理で指定したバージョンのドライバをインストールさせる手段だった(以下、package.jsonから抜粋)。
"pree2e": "webdriver-manager update --versions.chrome=77.0.3865.40",
"e2e": "ng e2e --webdriver-update=false",
※ 指定するのはブラウザではなくドライバのバージョン。Chromeの場合はChromeDriver

ブラウザを更新するとき、ここも更新しないといけないという手間はあるものの、これでテストを安定させることができた。参考までに。
スポンサーサイト



Tag: Angular

0 Comments

Leave a comment