LoginSignup
2
3

More than 5 years have passed since last update.

JenkinsからMavenビルドを行い、Pitalium Explorerで結果を確認する

Last updated at Posted at 2018-04-24

はじめに

Selenium(Java)でE2Eテスト環境を構築する
HTMLの要素を調べてPageクラス(Selenide利用)を作成する

ここまで環境構築からPageクラスの作成まで来たが、「CIできなきゃ意味ないよねー」「そだねー」っと言われないようにCI環境で動かせるようにします:innocent:

CIで回して結果確認までできることを確認し提案して、ある程度は自走で作ってもらえると助かるなぁと思ってます。

色々書いていますが本家のCIサーバ(Jenkins)でPitaliumをテストするに書いてありました・・・

Mavenのpom.xmlを修正する

ライブラリのダウンロードくらいでしか書かれていない状態だが、テストを行えるよう修正を行います。

  • ディレクトリ構成

aWS050249.JPG

  • pom.xml

test~のような設定があるので、本来ならメインのプロジェクト内にテスト用のソースを入れて設定で色々切り分けるのが普通なのかもしれない・・・
今回はテスト用のプロジェクトなので気にせず同じフォルダを指定しました。

pom.xml
<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の設定を行う

  1. Jenkinsの管理
    aWS050250.JPG

  2. Global Tool Configration
    aWS050251.JPG

  3. JDKの設定(ここではeclipseで使っているものを指定した)
    aWS050254.JPG

  4. Mavenの設定(ここではapache-maven-3.5.3-bin.zipを解凍して指定した)
    aWS050255.JPG

Jenkinsの新規ジョブを作成

POMは前述したファイルを指定します。
プロパティで実行方法を指定します。最初なのでSET_EXPECTEDを指定しました。
詳細は基本的なテストの実行方法を参照してください。
aWS050258.JPG

Jenkinsのジョブを実行

HTMLの要素を調べてPageクラス(Selenide利用)を作成する

この時に作ったクラスで実際に動かしてみる。
Selenium GridのHubはJenkinsと同一マシン、Nodeはどこでもという状態でHubとNodeが起動している状態で動かしました。

1回目のテスト:SET_EXPECTEDで、検索ワードは「test」
2回目のテスト:RUN_TESTで、検索ワードは「テスト」

このままだとスクリーンショットの結果確認はベリー面倒です。
ここでPitalium Explorerを利用することにしました:hugging:

Pitalium Explorerの環境設定を行う

Pitalium Explorerを使用してテスト結果を確認するを参考に設定を行います。

今回は出力場所を指定していないので、以下のように指定しました。

explorerPersisterConfig.json
{
    "files": {
        "result1": {
            "resultDirectory": "C:/pleiades/workspace_Pitalium/pita/results"
        }
    },
    "defaultResultKey": "result1"
}

Pitalium Explorerで確認する

1回目の実行結果
aWS050266.JPG

おおー画面見える見える:hugging:
aWS050263.JPG

2回目の実行結果(RUN_TESTで実行したので画像の比較が行われている)
aWS050267.JPG

すごっ!差分がめちゃくちゃわかりやすい:laughing:
aWS050264.JPG
aWS050265.JPG

テスト実施するたびに増えていくDBのデータはどうするか

Ouch!何も考えてなかった:rolling_eyes:

  • DBUnitとかDbSetupでテスト実行前に初期化する
  • テスト用のDBスナップショットを取り、実行後に戻す(最悪手動で行うことになりそう)
2
3
0

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
2
3