I see the following stack trace in the output after running target "test-app ahpra.AhpraTests"
java.lang.IncompatibleClassChangeError: the number of constructors during runtime and compile time for geb.navigator.SearchContextBasedBasicLocator do not match. Expected -1 but got 2
at geb.navigator.SearchContextBasedBasicLocator.<init>(SearchContextBasedBasicLocator.groovy:37)
at geb.navigator.factory.BrowserBackedNavigatorFactory.<init>(BrowserBackedNavigatorFactory.groovy:35)
at geb.Configuration.createNavigatorFactory(Configuration.groovy:417)
at geb.Browser.createNavigatorFactory(Browser.groovy:131)
at geb.Browser.getNavigatorFactory(Browser.groovy:119)
at geb.Page.init(Page.groovy:131)
at geb.Browser.createPage(Browser.groovy:862)
at geb.Browser.go(Browser.groovy:510)
at geb.Browser.go(Browser.groovy:491)
at ahpra.AhpraTests$_testSomething_closure1.doCall(AhpraTests.groovy:23)
at geb.Browser.drive(Browser.groovy:1049)
at geb.Browser.drive(Browser.groovy:1019)
at ahpra.AhpraTests.testSomething(AhpraTests.groovy:22)
The project in questions has been setup as follows:
Grails 2.0.3.
JDK 1.7
Test dependencies
org.gebish:geb-junit4:0.12.2
org.seleniumhq.selenium:selenium-chrome-driver:2.32.0
org.seleniumhq.selenium:selenium-support:2.32.0
GebConfig.groovy
import org.openqa.selenium.chrome.ChromeDriver
driver = {
System.setProperty("webdriver.chrome.driver", "C:\\dev\\chromedriver.exe")
def driverInstance = new ChromeDriver()
driverInstance
}
baseNavigatorWaiting = true
atCheckWaiting = true
There is one domain class called Physio and it has a single field "name" and a scaffolded controller.
The test code is as follows:
package ahpra
import geb.Browser
import static org.junit.Assert.*
import org.junit.*
class AhpraTests {
@Before
void setUp() {
// Setup logic here
}
@After
void tearDown() {
// Tear down logic here
}
@Test
void testSomething() {
Browser.drive {
}.quit()
}
}