I've been following a similar pattern to
https://github.com/cucumber/cucumber-jvm/tree/master/examples/java-webbit-websockets-selenium for sharing the WebDriver instance across scenarios (SharedDriver).
This pattern means that a 'SharedDriver' instance is injected into steps defs etc as seen in
https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-webbit-websockets-selenium/src/test/java/cucumber/examples/java/websockets/NavigationStepdefs.javaI'd like my step defs (and other classes) to depend on WebDriver, not my specific subclass SharedDriver to allow code reuse between teams etc, however changing the constructor from:
public NavigationStepdefs(SharedDriver webDriver) {
this.webDriver = webDriver;
}
to
public NavigationStepdefs(WebDriver webDriver) {
this.webDriver = webDriver;
}
results in the following exception:
org.picocontainer.injectors.AbstractInjector$NotConcreteRegistrationException: Bad Access: 'org.openqa.selenium.WebDriver' is not instantiable
at org.picocontainer.injectors.AbstractInjector.checkConcrete(AbstractInjector.java:86)
at org.picocontainer.injectors.AbstractInjector.<init>(AbstractInjector.java:67)
at org.picocontainer.injectors.SingleMemberInjector.<init>(SingleMemberInjector.java:43)
at org.picocontainer.injectors.ConstructorInjector.<init>(ConstructorInjector.java:104)
It seem that PicoContainer doesn't recognise SharedDriver as a type of WebDriver, even though it extends EventFiringWebDriver which in turn implements WebDriver.
Would someone point me in the right direction with Cucumber's PicoContainer integration?