Nicolas
Nicolas

Reputation: 1484

PHPUnit Selenium Xvfb Centos

I am trying to setup functional tests on my Centos Server using Selenium Web Server and Phpunit.

When I run the tests, I get an error in the command line :

PHPUnit_Extensions_Selenium2TestCase_WebDriverException: 
Unable to connect to host vmdev-pando-56 on port 7055 after 45000 ms. 
Firefox console output: Error: no display specified

I've been doing research for more than three days and I couldn't find a solution. I read many posts, including SOverflow. As per my understanding, everything is properly set up, and yet I am experiencing the same problem as many other people, and the solutions that work for them seem to be not working for me.

This is my setup:

  1. OS: Centos 6.5 x86 in command line (no GUI)
  2. PHP: 5.6
  3. Phpunit: 3.7, although I also tried with 5.3
  4. Selenium standalone web server: 2.53, downloaded from here, although I also tried with 2.9
  5. Xvfb system: xorg-x11-server-Xvfb
  6. Firefox: 38.0.1, although I also tried with 38.7

I also set the DISPLAY to :99 in my bash profile:

enter image description here

This is what I do to set up the environment:

  1. First, I launch the Xvfb system: /usr/bin/Xvfb :99 -ac -screen 0 1280x1024x24 &
  2. Then I launch the Selenium server: /usr/bin/java -jar /usr/lib/selenium/selenium-server-standalone-2.53.0.jar &
  3. I launch Firefox: firefox & (although I know this is not necessary, but just in case)

All of the three processes are running in background.

At this point, I know that Firefox is operative, as well as the X buffer. I can run the command firefox http://www.stackoverflow.com & and then take an snapshot of the buffer by executing import -window root /tmp/buffer_snapshot.png, which happens to be something like this:

enter image description here

I of course received a warning on the terminal: Xlib: extension "RANDR" missing on display ":99", but I read countless of times that this is not a problem.

Anyway, the problem begins just now.

I've written a rather simple functional test (please notice that other tests I've written other than functional, they work just fine, so the environment in that respect seem to be properly configured):

<?php
    namespace My\APP\BUNDLE\Tests\Functional\MyTest;

    use PHPUnit_Extensions_Selenium2TestCase;

    class HelloWorldTest extends PHPUnit_Extensions_Selenium2TestCase {

    protected function setUp() {        
        $this->setBrowser('firefox');
        $this->setHost('localhost');
        $this->setPort(4444);
        $this->setBrowserUrl('http://www.stackoverflow.com');   
    }

    public function testTitle() {
        $this->url('/');
        $this->assertEquals("1", "1");
    }
}

And when I run the test by issuing phpunit HelloWorldTest.php, I get the following error:

PHPUnit_Extensions_Selenium2TestCase_WebDriverException: 
Unable to connect to host vmdev-pando-56 on port 7055 
    after 45000 ms. Firefox console output:
Error: no display specified

Checking the log file generated by selenium, I found the following (interesting) lines:

21:55:46.135 INFO - Creating a new session for Capabilities [{browserName=firefox}]

[...]

java.util.concurrent.ExecutionException:
org.openqa.selenium.WebDriverException:
java.lang.reflect.InvocationTargetException
    Build info: version: '2.53.0', 
    revision: '35ae25b', 
    time: '2016-03-15 17:00:58'
System info: host: 'vmdev-pando-56', 
    ip: '127.0.0.1', 
    os.name: 'Linux', 
    os.arch: 'i386', 
    os.version: '2.6.32-431.el6.i686', 
    java.version: '1.7.0_99'
Driver info: driver.version: unknown

[...]

(The file contains the complete stack trace dump, and the original message of no display specified)

No errors in the Xvfb log file.

At this point I have no clue of what I am doing wrong.

Can anyone help?

Thanks a lot

Upvotes: 2

Views: 749

Answers (1)

MikeJRamsey56
MikeJRamsey56

Reputation: 2819

A reason for the Unable to connect error is that the version of Selenium Server does not know how to work with the version of Firefox you have installed. Selenium standalone web server 2.53 is the latest and greatest. selenium-firefox-driver is also 2.53. Firefox version 38 is old. I am running firefox 45.0.1 with selenium 2.53.

Upvotes: 1

Related Questions