2

I've been trying to run selenium codes over Jenkins (server/openshift). There is chrome node in the jenkins machine for Test Automation - Selenium. I'm getting this error:

org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally

Test ll work on chrome node jenkins-openshift. So I don't need to set browser type as headless, besides If I set browser type as headless, It can't find any UI component of our application. By the way, I developed this code by using cucumber/gherkin.

It works on local via maven clean-verify.

This is our jenkins file to run automated UI test on jenkins:

 stage('scm checkout') {
 echo '****************************************\r*** scm checkout'
 checkout scm
 echo '*** show content ***'
 sh "ls -lA"
 }
 stage('build artifact') {
 echo '****************************************\r*** Build Artifact'
 sh "mvn -V -B clean package"
 }
 stage('selenium GUI test') {
 echo '****************************************\r*** Selenium GUI Test'
 sh "mvn -V -B clean verify"
 }
}

This is related part of pom.xml:

<plugins>
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId>
 <version>3.8.0</version>
 <configuration>
 <source>1.8</source>
 <target>1.8</target>
 </configuration>
 </plugin>
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-failsafe-plugin</artifactId>
 <version>2.18.1</version>
 <executions>
 <execution>
 <configuration>
 <forkCount>3</forkCount>
 <reuseForks>true</reuseForks>
 <encoding>UTF-8</encoding>
 <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
 <testFailureIgnore>true</testFailureIgnore>
 <includes>
 <includesFile>**/*UITestsRunner.java</includesFile>
 </includes>
 </configuration>
 <goals>
 <goal>integration-test</goal>
 <goal>verify</goal>
 </goals>
 </execution>
 </executions>
 </plugin>
 <plugin>
 <groupId>net.masterthought</groupId>
 <artifactId>maven-cucumber-reporting</artifactId>
 <version>3.8.0</version>
 <executions>
 <execution>
 <id>execution</id>
 <phase>verify</phase>
 <goals>
 <goal>generate</goal>
 </goals>
 <configuration>
 <projectName>testing</projectName> 
 <outputDirectory>target/cucumber-reports/advanced-reports</outputDirectory>
 <cucumberOutput>target/cucumber-reports/CucumberTestReport.json</cucumberOutput>
 <buildNumber>1</buildNumber>
 <parallelTesting>false</parallelTesting>
 </configuration>
 </execution>
 </executions>
 </plugin>
 </plugins>

Additionally, this is webdriver settings part of the code :

 ChromeOptions options = new ChromeOptions();
 options.addArguments("--no-sandbox"); //Bypass OS security model
 options.addArguments("--disable-web-security");
 options.addArguments("--ignore-urlfetcher-cert-requests");
 //options.addArguments("--disable-renderer-backgrounding");
 options.addArguments("--disable-infobars"); //Disabling infobars
 //options.addArguments("--start-maximized"); //Open Browser in maximized mode
 options.addArguments("--disable-dev-shm-usage"); //Overcome limited resource problem
 options.setExperimentalOption("useAutomationExtension", false);
 options.addArguments("--log-level=3"); // set log level
 options.addArguments("--silent");
 options.addArguments("--disable-gpu");
 options.addArguments("window-size=1920,1080");
 webDriver = new ChromeDriver(options);

There is no issue on local, but on the server, I've been getting this error:

org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally (unknown error: DevToolsActivePort file doesn't exist) (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.) (Driver info: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Linux 3.10.0-957.10.1.el7.x86_64 x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 287 milliseconds Build info: version: '3.5.2', revision: '10229a9', time: '2017-08-21T17:29:55.15Z' System info: host: 'jenkins-agent-blue-1', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-957.10.1.el7.x86_64', java.version: '1.8.0_192' Driver info: driver.version: ChromeDriver at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167) at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new0ドル(JsonWireProtocolResponse.java:53) at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction2ドル(JsonWireProtocolResponse.java:91) at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession24ドル(ProtocolHandshake.java:359) at java.util.stream.ReferencePipeline3ドル1ドル.accept(ReferencePipeline.java:193) at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958) at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:362) at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:136) at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:641) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:254) at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:137) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:178) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:167) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:156)

asked Apr 6, 2019 at 15:52
1
  • Always good to check the chrome version as well as the chromedriver version on your build server in these cases. If it's the same version as your local, you can rule that out. In this case, I'm especially suspicious of the version of chrome on server/openshift Commented May 15, 2019 at 20:11

1 Answer 1

1

First i am not sure you need all these options:

ChromeOptions options = new ChromeOptions();
options.addArguments("--no-sandbox"); //Bypass OS security model
options.addArguments("--disable-web-security");
options.addArguments("--ignore-urlfetcher-cert-requests");
options.addArguments("--disable-renderer-backgrounding");
options.addArguments("--disable-infobars"); 
options.addArguments("--start-maximized"); 
options.addArguments("--disable-dev-shm-usage"); 
options.setExperimentalOption("useAutomationExtension", false);
options.addArguments("--log-level=3"); // set log level
options.addArguments("--silent");
options.addArguments("--disable-gpu");
options.addArguments("window-size=1920,1080");
webDriver = new ChromeDriver(options);

Just run your with following 04 options:

ChromeOptions options = new ChromeOptions();
options.addArguments("--no-sandbox"); //Bypass OS security model 
options.addArguments("--start-maximized");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--headless");
webDriver = new ChromeDriver(options);

Apart from these, please check you are using compatible version of chromedriver from chrome browser in your automation testing services.

answered Apr 9, 2019 at 10:02
5
  • Actually, I don't need to add this: options.addArguments("--headless"); because of working on chrome node. I'll check version compatibility. Commented Apr 9, 2019 at 18:38
  • I've just checked the version of chromedriver. I use chrome 73 and chrome driver 73.0.3683.68 on local as same on chrome node jenkins. Tests work fine in local, however I'm still getting the same error. @Vishal Commented Apr 10, 2019 at 7:11
  • try adding one more argument "--privileged" Commented Apr 15, 2019 at 12:30
  • I've just tried "--privileged" argument. However the result is same. Commented Apr 15, 2019 at 19:45
  • did your jenkins is on Docker ? Commented May 22, 2019 at 6:58

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.