ChromeDriver problem in UI Tests

Hi, there have been cases when different UI Tests failed with the following error:

org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
07-Aug-2015 02:06:18	Build info: version: '2.37.0', revision: 'a7c61cbd68657e133ae96672cf995890bad2ee42', time: '2013-10-18 09:51:02'
07-Aug-2015 02:06:18	System info: host: 'gw107', ip: '149.165.228.105', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-45-generic', java.version: '1.7.0_79'
07-Aug-2015 02:06:18	Driver info: driver.version: ChromeDriver
07-Aug-2015 02:06:18	        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
07-Aug-2015 02:06:18	        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
07-Aug-2015 02:06:18	        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111)
07-Aug-2015 02:06:18	        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:115)
07-Aug-2015 02:06:18	        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:161)
07-Aug-2015 02:06:18	        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:107)
07-Aug-2015 02:06:18	        at org.openmrs.uitestframework.test.TestBase.setupChromeDriver(TestBase.java:306)
07-Aug-2015 02:06:18	        at org.openmrs.uitestframework.test.TestBase.startWebDriver(TestBase.java:98)
07-Aug-2015 02:06:18	        at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
07-Aug-2015 02:06:18	        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
07-Aug-2015 02:06:18	        at java.lang.reflect.Method.invoke(Method.java:606)
07-Aug-2015 02:06:18	        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
07-Aug-2015 02:06:18	        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
07-Aug-2015 02:06:18	        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
07-Aug-2015 02:06:18	        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
07-Aug-2015 02:06:18	        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
07-Aug-2015 02:06:18	        at org.junit.rules.RunRules.evaluate(RunRules.java:20)
07-Aug-2015 02:06:18	        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
07-Aug-2015 02:06:18	Caused by: org.openqa.selenium.WebDriverException: java.net.SocketTimeoutException: Read timed out
07-Aug-2015 02:06:18	Build info: version: '2.37.0', revision: 'a7c61cbd68657e133ae96672cf995890bad2ee42', time: '2013-10-18 09:51:02'
07-Aug-2015 02:06:18	System info: host: 'gw107', ip: '149.165.228.105', os.name: 'Linux', os.arch: 'amd64', os.version: '3.13.0-45-generic', java.version: '1.7.0_79'
07-Aug-2015 02:06:18	Driver info: driver.version: ChromeDriver
07-Aug-2015 02:06:18	        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:75)
07-Aug-2015 02:06:18	        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:527)
07-Aug-2015 02:06:18	        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
07-Aug-2015 02:06:18	        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111)
07-Aug-2015 02:06:18	        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:115)
07-Aug-2015 02:06:18	        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:161)
07-Aug-2015 02:06:18	        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:107)
07-Aug-2015 02:06:18	        at org.openmrs.uitestframework.test.TestBase.setupChromeDriver(TestBase.java:306)
07-Aug-2015 02:06:18	        at org.openmrs.uitestframework.test.TestBase.startWebDriver(TestBase.java:98)
07-Aug-2015 02:06:18	        at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
07-Aug-2015 02:06:18	        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
07-Aug-2015 02:06:18	        at java.lang.reflect.Method.invoke(Method.java:606)
07-Aug-2015 02:06:18	        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
07-Aug-2015 02:06:18	        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
07-Aug-2015 02:06:18	        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
07-Aug-2015 02:06:18	        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
07-Aug-2015 02:06:18	        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
07-Aug-2015 02:06:18	        at org.junit.rules.RunRules.evaluate(RunRules.java:20)
07-Aug-2015 02:06:18	        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
07-Aug-2015 02:06:18	        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

The root of these errors seem to be problems with starting new session in ChromeDriver.Does anyone have any knowledge on what can be causing this issue?

One fix would be to switch to using saucelabs :wink: We could prioritize that in such a case.

Another problem with chromedriver that happens sometimes when running tests on CI:

java.lang.AssertionError: cannot find chromedriver executable: org.apache.commons.vfs2.FileSystemException: Could not copy "jar:file:///home/bamboo-agent-2/.m2/repository/org/openmrs/contrib/uitestframework/1.6-SNAPSHOT/uitestframework-1.6-SNAPSHOT.jar!/chromedriver/linux/chromedriver" because it does not exist.
	at org.junit.Assert.fail(Assert.java:88)
	at org.openmrs.uitestframework.test.TestBase.setupChromeDriver(TestBase.java:292)
	at org.openmrs.uitestframework.test.TestBase.startWebDriver(TestBase.java:98)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)

It looks like at some point of the running UI Tests, the chromedriver seems to be missing. How is this possible?

Have you checked yourself that the executable is actually in the jar at the given location?

Side note, we’ve been seeing some issues in the PIH smoke tests with Chrome 44 and ChromeDriver 2.18. A different error than these though.

We added some hacks to our tests to work around them, but it looks like Chromedriver 2.19 was just released which will hopefully have a long-term fix.