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面白そう。また気が向いたときに触ってみようかな。