PitaliumがMaven対応したのでDockerと組み合わせて使ってみる
Pitaliumはこれまでjarファイルをダウンロードして自分でセットアップする必要がありましたが、先日Mavenのリポジトリに登録されました!これで導入の手間が大幅に軽減されるはずです。
そこで今回はごく基本的なPitalium導入法に加えて、Dockerを使ってSelenium Hub/Nodeを簡単に組み合わせる方法を紹介します。
要件
まず以下の環境はあることとします。
- Docker
- Gradle
Dockerの実行
Dockerはすでにインストールされている前提とします。Selenium Hub/NodeはDockerコンテナイメージのサイズが大きいので、ダウンロードに時間がかかります。そこで、とりあえず実行しておきます。
$ docker run -d -p 4444:4444 –name selenium-hub selenium/hub | |
$ docker run -d -v /dev/urandom:/dev/random -P –link selenium-hub:hub selenium/node-chrome-debug |
これでどちらも実行されればSelenium Hub/Nodeが立ち上がって、Chromeが使える状態になります。
ディレクトリ構成
最低限のディレクトリ構成は次のようになります。
$ tree . | |
. | |
├── build.gradle | |
└── src | |
├── main | |
│ └── resources | |
│ └── capabilities.json | |
└── test | |
└── java | |
└── pitaliumtest | |
└── SampleTest.java | |
6 directories, 3 files |
capabilities.jsonはHubのブラウザ設定を記述しますが、この時点ではChromeのみなので次のようになります。IEやFirefoxなど必要に応じて追加してください。
[ | |
{ | |
"browserName": "chrome" | |
} | |
] |
build.gradleは次のようになります。ここでPitaliumを指定するだけです。
apply(plugin: 'java') | |
apply plugin: 'application' | |
version = '0.0.1-SNAPSHOT' | |
sourceCompatibility = 1.8 | |
repositories { | |
mavenCentral() | |
} | |
dependencies { | |
compile group: 'com.htmlhifive', name: 'pitalium', version: '1.2.1' | |
} |
SampleTest.javaは今回は次のように記述しました。03.基本的なテストコードの書き方 – hifiveのままですが、Dockerで立ち上がるChromeは英語版になっていますので、アクセス先を日本語版指定としています。
import static org.hamcrest.CoreMatchers.*; | |
import static org.hamcrest.MatcherAssert.*; | |
import org.junit.Test; | |
import org.openqa.selenium.By; | |
import org.openqa.selenium.WebElement; | |
import com.htmlhifive.pitalium.core.PtlTestBase; | |
public class SampleTest extends PtlTestBase { | |
@Test | |
public void test() throws Exception { | |
// 1. hifiveサイトのトップページを開きます | |
driver.get("http://www.htmlhifive.com/conts/web/view/Main/?language=ja"); | |
// 2. hifiveサイトのトップページのスクリーンショットを撮影します | |
assertionView.assertView("OpenhifiveTopPage"); | |
// 3. "#about" に表示されているタイトルが正しいことをチェックします | |
WebElement about = driver.findElementById("about"); | |
WebElement title = about.findElement(By.tagName("h2")); | |
assertThat(title.getText(), is("hifiveとは")); | |
} | |
@Test | |
public void testClickAndCapture() throws Exception { | |
// 1. hifiveサイトのトップページを開きます | |
driver.get("http://www.htmlhifive.com/conts/web/view/Main/?language=ja"); | |
// 2. hifiveサイトのトップページのスクリーンショットを撮影します。 | |
assertionView.assertView("OpenhifiveTopPage"); | |
// 3. "過去のお知らせ一覧" ボタン要素を取得してクリックします。 | |
WebElement infoHistoryButton = driver.findElementByCssSelector("#news a.btn"); | |
infoHistoryButton.click(); | |
// 4. ページ遷移後のスクリーンショットを撮影します。 | |
assertionView.assertView("OpenNewsListPage"); | |
} | |
} |
実行する
後はテストを実行するだけです。
$ gradle test |
しばらく待つと結果が表示されます。
$ gradle test | |
:compileJava UP-TO-DATE | |
:processResources UP-TO-DATE | |
:classes UP-TO-DATE | |
:compileTestJava | |
:processTestResources UP-TO-DATE | |
:testClasses | |
:test | |
BUILD SUCCESSFUL | |
Total time: 1 mins 11.666 secs |
そしてJUnitのファイルも生成されています。
Pitaliumのテストファイルも生成され、スクリーンショットも保存されています。
Dockerコンテナイメージがダウンロードできるまでに若干の時間がかかりますが、それさえ終われば環境を整えるのはとても簡単です。ぜひPitaliumを使ってWebブラウザベースのビジュアルテスティングを推進してください!
コメントは受け付けていません。