wttech/bobcat

BB Reports has hardcoded path to firefox library

Closed this issue · 2 comments

@Shaihuludus
While building bobcat in my local got below error.
OS: MAC

-------------------------------------------------------------------------------
Test set: com.cognifide.qa.bb.logging.reporter.ReporterTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.202 sec <<< FAILURE!
shouldCreateLogEntries(com.cognifide.qa.bb.logging.reporter.ReporterTest)  Time elapsed: 0.708 sec  <<< ERROR!
com.google.inject.ProvisionException: Guice provision errors:

1) Error in custom provider, java.lang.IllegalStateException: Specified firefox binary location does not exist or is not a real file: c:/Program Files (x86)/Mozilla Firefox 24/firefox.exe
  while locating com.cognifide.qa.bb.provider.selenium.webdriver.WebDriverProvider
  while locating org.openqa.selenium.WebDriver

1 error
	at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:987)
	at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1009)
	at com.cognifide.qa.bb.junit.WebDriverClosingRule.after(WebDriverClosingRule.java:46)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:50)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at com.cognifide.qa.bb.junit.TestRunner.runMethod(TestRunner.java:167)
	at com.cognifide.qa.bb.junit.TestRunner.runChild(TestRunner.java:127)
	at com.cognifide.qa.bb.junit.TestRunner.runChild(TestRunner.java:61)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at com.cognifide.qa.bb.junit.TestRunner.run(TestRunner.java:140)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.IllegalStateException: Specified firefox binary location does not exist or is not a real file: c:/Program Files (x86)/Mozilla Firefox 24/firefox.exe
	at com.google.common.base.Preconditions.checkState(Preconditions.java:444)
	at org.openqa.selenium.firefox.internal.Executable.<init>(Executable.java:46)
	at org.openqa.selenium.firefox.FirefoxBinary.<init>(FirefoxBinary.java:138)
	at org.openqa.selenium.firefox.FirefoxOptions.getBinaryOrNull(FirefoxOptions.java:219)
	at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:200)
	at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:108)
	at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:137)
	at com.cognifide.qa.bb.provider.selenium.webdriver.WebDriverType$1.create(WebDriverType.java:57)
	at com.cognifide.qa.bb.provider.selenium.webdriver.WebDriverProvider.create(WebDriverProvider.java:107)
	at com.cognifide.qa.bb.provider.selenium.webdriver.WebDriverProvider.get(WebDriverProvider.java:98)
	at com.cognifide.qa.bb.provider.selenium.webdriver.WebDriverProvider.get(WebDriverProvider.java:48)
	at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:55)
	at com.google.inject.internal.InjectorImpl$4$1.call(InjectorImpl.java:978)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024)
	at com.google.inject.internal.InjectorImpl$4.get(InjectorImpl.java:974)
	... 26 more

Hi @DeChrish,

what version of Bobcat are you using? With the latest release (1.3.0) we bumped Selenium to 3.11, which means running tests on Firefox requires running it through GeckoDriver. You need an executable on your machine and you can point Bobcat to it either by putting the path to the driver in system's PATH or you can use the webdriver.gecko.driver property.

At the moment in your case the path comes from one of the properties file - take a look under src/main/cfg/common in the webdriver.properties.

Closing this for now, let us know in case of any further problems.