English version of this article is here:
Zaleniumってことばを見かけたので触ってみた。
Zalenium?
https://zalando.github.io/zalenium/
ちょこっと触ってみた感じ良さげ
- 1) ローカルマシンですごく簡単に試すことができる
- 2) Seleniumのテストを実行するのに合わせて動的にコンテナが起動する
- 3) テストが録画される
1) ローカルマシンですごく簡単に試すことができる
Zaleinumを起動
# イメージを2つpullしてきて docker pull elgalu/selenium docker pull dosel/zalenium # 実行! docker run --rm -ti --name zalenium -p 4444:4444 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /tmp/videos:/home/seluser/videos \ --privileged dosel/zalenium start
(今日の話とは直接関係ないけど、docker.sockのマウントは注意して使いたいね)
で、Live Previewページにアクセスすると http://localhost:4444/grid/admin/live 2つのマシンが起動してることが分かる。

テストを実行する
テストを実行するための環境は立ち上がったから、Seleniumのテストを用意して実行してみよう。
僕は自分の好みでGebで用意したけど、お好きなやつでどうぞ。
HelloZelenium.groovy
Browser.drive {
go "http://gebish.org"
assert title == "Geb - Very Groovy Browser Automation"
$("div.menu a.manuals").click()
waitFor { !$("#manuals-menu").hasClass("animating") }
$("#manuals-menu a")[0].click()
assert title.startsWith("The Book Of Geb")
}
Gebのドキュメントからとってきた。読んだら何してるかはだいたい分かるよね。
GebConfig.groovy
driver = {
def capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME);
capabilities.setCapability(CapabilityType.PLATFORM_NAME, Platform.LINUX);
def remoteWebDriverUrl = new URL("http://localhost:4444/wd/hub")
new RemoteWebDriver(remoteWebDriverUrl, capabilities)
}
設定はGebConfigに。RemoteWebDriverにZelenium Hub URLを渡してテストを実行する。
import とかを含んだソース全部はここに置いといた: https://gist.github.com/bufferings/a8980ea515a893e21a3a95955ace5dc9
で、実行!
groovy HelloZalenium
したら、Live Previewのページで、テストが実行されてるのが見える。

簡単。
2) Seleniumのテストを実行するのに合わせて動的にコンテナが起動する
複数のテストを同時に実行してみる。
for i in {1..8};do groovy HelloZalenium & done
たら、8つのマシンがコンテナとして立ち上がって、テストが実行されて、シャットダウンするのが分かる。

3) テストが録画される
デフォルトで全部のテストが録画される。ここで見れる http://localhost:4444/dashboard/#

設定まわり
こんな感じで設定を渡したりできる:
driver = {
def capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, BrowserType.FIREFOX);
capabilities.setCapability(CapabilityType.PLATFORM_NAME, Platform.LINUX);
capabilities.setCapability("screenResolution", "1280x720");
capabilities.setCapability("tz", "Asia/Tokyo");
def remoteWebDriverUrl = new URL("http://localhost:4444/wd/hub")
new RemoteWebDriver(remoteWebDriverUrl, capabilities)
}
FireFoxで、1280x720で、Asiz/Tokyoで実行されるようになった

他にも面白そうな機能があるなぁ
- SauceLabs/BrowserStack/TestingBot連携
- Kubernetes対応
- とか
まとめ
Zelenium面白そう。また気が向いたときに触ってみようかな。