Skip to content

Instantly share code, notes, and snippets.

@dmitriy-kiriyenko
Created May 16, 2011 12:51
Show Gist options
  • Save dmitriy-kiriyenko/974392 to your computer and use it in GitHub Desktop.
Save dmitriy-kiriyenko/974392 to your computer and use it in GitHub Desktop.
Init.d to start/stop xvfb. Put it into /etc/init.d and chmod it to 755
apt-get install xvfb
apt-get install firefox
export DISPLAY=:99
/etc/init.d/xvfb start
# do your selenium tests here
/etc/init.d/xvfb stop
XVFB=/usr/bin/Xvfb
XVFBARGS=":99 -screen 0 1024x768x24 -fbdir /var/run -ac"
PIDFILE=/var/run/xvfb.pid
case "$1" in
start)
echo -n "Starting virtual X frame buffer: Xvfb"
start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile --background --exec $XVFB -- $XVFBARGS
echo "."
;;
stop)
echo -n "Stopping virtual X frame buffer: Xvfb"
start-stop-daemon --stop --quiet --pidfile $PIDFILE
echo "."
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/xvfb {start|stop|restart}"
exit 1
esac
exit 0
@keenskelly
Copy link

Thanks for sharing this - it was a good start in the right direction for me. I noticed that start-stop-daemon appears to be Debian-specific. I modified it to simply execute $XVFB in the background with '&', capture the pid with $!, and echo'ed it to $PIDFILE, then used killproc -p $PIDFILE $XVFB in the stop handler and it is working for me under CentOS that way. If anybody cares to try that, make sure to import /etc/init.d/functions with the '.' at the beginning to get the killproc function.

@mmell
Copy link

mmell commented Apr 30, 2014

perfect. thanks.

shared_context "selenium features" do

  before(:all) {
    # https://gist.github.com/dmitriy-kiriyenko/974392
    `sudo /etc/init.d/xvfb start`
  }

  after(:all) {
    `sudo /etc/init.d/xvfb stop`
  }
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment