はじめに
Selenium(Java)でE2Eテスト環境を構築する
HTMLの要素を調べてPageクラス(Selenide利用)を作成する
ここまで環境構築からPageクラスの作成まで来たが、「CIできなきゃ意味ないよねー」「そだねー」っと言われないようにCI環境で動かせるようにします
CIで回して結果確認までできることを確認し提案して、ある程度は自走で作ってもらえると助かるなぁと思ってます。
色々書いていますが本家のCIサーバ(Jenkins)でPitaliumをテストするに書いてありました・・・
Mavenのpom.xmlを修正する
ライブラリのダウンロードくらいでしか書かれていない状態だが、テストを行えるよう修正を行います。
- ディレクトリ構成
- pom.xml
test~のような設定があるので、本来ならメインのプロジェクト内にテスト用のソースを入れて設定で色々切り分けるのが普通なのかもしれない・・・
今回はテスト用のプロジェクトなので気にせず同じフォルダを指定しました。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pita</groupId>
<artifactId>pita</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>src</testSourceDirectory>
<resources>
<resource>
<directory>resource</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>resource</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.htmlhifive</groupId>
<artifactId>pitalium</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>4.11.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>3.11.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>3.11.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>3.11.0</version>
</dependency>
</dependencies>
</project>
Jenkinsの環境設定を行う
Windows環境で試しています。
Tomcatのwebappsフォルダにjenkins.war(Ver2.107.2)を配置しています。
Jenkinsはログインユーザーまで設定できている前提で書きます。
また、バージョン管理システムとの連携は今回行いません。
環境変数を設定し、日本語の文字化け対策を行う
以下をWindowsのシステム環境変数に設定し、Tomcatの再起動を行いました。
変数:JAVA_TOOL_OPTIONS
値:-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8
JDK、Mavenの設定を行う
Jenkinsの新規ジョブを作成
POMは前述したファイルを指定します。
プロパティで実行方法を指定します。最初なのでSET_EXPECTEDを指定しました。
詳細は基本的なテストの実行方法を参照してください。
Jenkinsのジョブを実行
HTMLの要素を調べてPageクラス(Selenide利用)を作成する
この時に作ったクラスで実際に動かしてみる。
Selenium GridのHubはJenkinsと同一マシン、Nodeはどこでもという状態でHubとNodeが起動している状態で動かしました。
1回目のテスト:SET_EXPECTEDで、検索ワードは「test」
2回目のテスト:RUN_TESTで、検索ワードは「テスト」
このままだとスクリーンショットの結果確認はベリー面倒です。
ここでPitalium Explorerを利用することにしました
Pitalium Explorerの環境設定を行う
Pitalium Explorerを使用してテスト結果を確認するを参考に設定を行います。
今回は出力場所を指定していないので、以下のように指定しました。
{
"files": {
"result1": {
"resultDirectory": "C:/pleiades/workspace_Pitalium/pita/results"
}
},
"defaultResultKey": "result1"
}
Pitalium Explorerで確認する
2回目の実行結果(RUN_TESTで実行したので画像の比較が行われている)
テスト実施するたびに増えていくDBのデータはどうするか
Ouch!何も考えてなかった
- DBUnitとかDbSetupでテスト実行前に初期化する
- テスト用のDBスナップショットを取り、実行後に戻す(最悪手動で行うことになりそう)