LoginSignup
3
1

More than 5 years have passed since last update.

Polymerで作ったアプリやカスタムエレメントをSelenium Gridを使ってテストできるようにする

Last updated at Posted at 2017-05-25

Polymer で作ったアプリやカスタムエレメントをテストする

コマンドラインから実行する場合は、以下のように指定します。

$ polymer test
$ wct test/index.html

wctweb-component-testerの略で、 polymer test も内部で呼び出しています。
Jenkinsなどを使ってテストしたい場合、wctがnode.jsに対応しているので、gulpから呼び出すようなケースもあるでしょう(私はこの方法を使っています)。

Selenium Grid を使う

Jenkinsからテストする場合、Selenium Gridを使うことが多いのではないでしょうか?
Polymerの公式には、UnitTestは local もしくは remote(Sauce Labs) というモードがあるものの、Selenium Gridでテスト可能であることは書いていません。
StackOverflowで調べると解決策が出てきます。

Configure Polymer web-component-tester to use a Selenium Grid server

ここで紹介されている例のとおりで 実行できていました

Polymer CLI が 1.0.0 になると動かなくなる

先日の Google I/O '17 のツールセッションでも発表がありましたが、CLIツールが1.0になりました。
さっそく1.0にアップグレードしてみると、Selenium Gridでテストが動かなくなっています。

これの原因を調べるのにかなりの時間を要しましたが、web-component-testerのissueにありました。
WCT ignores the webserver hostname #523

Polymer CLI 1.0でweb-component-testerがv6以上を要求するため、この問題が表面化しました。

詳しくは issue を参照してほしいのですが、今までは最初のstackoverfowのとおり webserver.hostname が参照されていたのですが、localhostへのハードコーディングに変更となっています。
変更理由はこちらのチェンジログに書かれています。

Selenium Gridでのテストは正式にサポートされているわけではないので、この変更にどうこう言えないのですが、みんなが Sauce Labs使っているわけではないのでね...

そのissueを上げた人はPRも出していて、マージされないかなーと思っています(cla:yes になっているのでマージされると思っている)。

現時点の解決策

が、上記修正だと 個人的に 困るので web-component-tester v5.x と同じ設定で Selenium Gridを実行できるように修正しました。

npm install で入れる場合、TypeScriptをコンパイルしたJavaScriptが必要になる(gitignoreされているので通常ではリポジトリにはない)ので、use-webserver.hostname-by-selenium-grid-4-npm-installという(コンパイル済みJSファイルを入れた)ブランチを用意しました。以下のコマンドでインストール可能です。

$ npm install https://github.com/sizuhiko/web-component-tester.git#use-webserver.hostname-by-selenium-grid-4-npm-install --save-dev

webserver.hostname でこれまで通り指定できるようになっています。

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1