yfj2’s Automatic Web Test Related Blog

yfj2のWEBテスト自動化に関わるブログ

GebとSpockで同一テストケースで複数ブラウザ(クロスブラウザ)テストを実行したい

GebとSpockで同一テストケースで複数ブラウザ(クロスブラウザ)テストを実行したい
著者:ふじさわゆうき

問題

  • 同一のテストケースでクロスブラウザテストを実行したいが、"GebConfig.groovy"に設定があるため、ブラウザの切り替えが難しい

解決

実装

  1. whereで"driverName"を切り替える
  2. setupで"driverName"に応じたdriverをnewする
  3. cleanupでdriverを終了する
  4. "@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()
	}
}