tags: Ruby, Rails, Web Development date: 2013-01-16 23:00:00.000000000Z
If you are using capybara-webkit to do integration tests in a Ubuntu server distribution like Vagrant or a remote dev server, you may see an error like this:
webkit_server: cannot connect to X server
Don’t worry, that’s because Ubuntu server don’t have an X server running, for those wondering what is a X server:
"An X server is a program in the X Window System that runs on local machines (i.e., the computers used directly by users) and handles all access to the graphics cards, display screens and input devices (typically a keyboard and mouse) on those computers. "
We can easily fix it using xvfb to emulate a X server:
"In the X Window System, Xvfb or X virtual framebuffer is an X11 server that performs all graphical operations in memory, not showing any screen output."
In your bash:
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install xvfb
Running the tests
Now you can run the tests using the xvfb-run command, also you need to specify a DISPLAY:
$ DISPLAY=localhost:1.0 xvfb-run rake spec
Everything should be good now, you can also add the DISPLAY variable to your .bash_profile:
That’s it, remember to always run the tests using the xvfb-run command.