GebとSpockで同一テストケースで複数ブラウザ(クロスブラウザ)テストを実行したい
GebとSpockで同一テストケースで複数ブラウザ(クロスブラウザ)テストを実行したい
著者:ふじさわゆうき
問題
- 同一のテストケースでクロスブラウザテストを実行したいが、"GebConfig.groovy"に設定があるため、ブラウザの切り替えが難しい
解決
- "where:"と"setup:","def cleanup()"を駆使して、同一テストケースでのクロスブラウザテストを実現する
- 以下、実装コードについては、以下の記事を参考にしつつ理解してください
- 【入門】Geb+SpockではじめるWebテスト~リファクタリング編~ - yfj2’s Automatic Web Test Related Blog
実装
- whereで"driverName"を切り替える
- setupで"driverName"に応じたdriverをnewする
- cleanupでdriverを終了する
- "@Unroll"にアノテーションで、ブラウザごとのテスト結果にする
class GoogleWikipediaMainTest extends GebSpec { @Unroll def "first result for wikipedia search should be wikipedia"() { setup: switch(driverName){ case "firefox" : driver = new FirefoxDriver() break case "chrome": driver = new ChromeDriver() break case "ie": driver = new InternetExplorerDriver() break } when: to GoogleHomePage then: at GoogleHomePage when: search("test") then: waitFor { at GoogleResultsPage } when: search("wikipedia") then: waitFor { at GoogleResultsPage } and: waitFor { firstResultLink.text() == "Wikipedia"} when: firstResultLinkClick() then: waitFor { at WikipediaPage } where: driverName << ["firefox", "chrome", "ie"] } def cleanup(){ driver.quit() } }