I've been trying to pass WebBrowser as implicit parameter in a Selenium ScalaTest Spec, but it fails. I have a base superclass for all the tests:
abstract class BaseSpec extends FunSpec with WebBrowser with ShouldMatchers {
implicit val webDriver: WebDriver = new FirefoxDriver
}
Then I have a Page Object having a method with implict WebBrowser parameter:
object LoginPage extends Page {
def login(username: String, password: String) (implicit browser : WebBrowser ) = {
//...
}
And then I want to call the login method from the actual spec. As the spec class implements the WebBrowser trait via its BaseSpec superclass I expect the spec instance calling the method to be resolved as the implicit WebBrowser:
class LoginSpec extends BaseSpec {
it("Should fail on invalid password") {
LoginPage login("wrong username", "wrong password")
assertIsOnLoginPage()
}
}
But this fails with compilation error:
could not find implicit value for parameter browser: org.scalatest.selenium.WebBrowser
on line LoginPage login("wrong username", "wrong password")
Do I always need to explicitly provide this as the WebBrowser parameter value or is there a better way?