Travis CI XVFB Breaking Change

Posted on January 14, 2019 by Ben Limmer Avatar image of Ben Limmer

This morning I was greeted by a bunch of failing front-end builds on Travis CI because XVFB couldn’t start. Here’s how to fix it.

The Problem

Travis CI released an update to their Xenial build environemnt, which introduced a new way to start up XVFB for front-end builds.

Unfortunately, they broke all existing builds based on their documentation, which had you set it up like this:

before_script:
# start XVFB to test the extension (headless does not install extensions fully)
# https://docs.travis-ci.com/user/gui-and-headless-browsers/#using-xvfb-to-run-tests-that-require-a-gui
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
- sleep 3 # give xvfb some time to start

Starting on January 15, 2019, your builds will start failing with messages like this:

Terminal window
$ export DISPLAY=:99.0
$ sh -e /etc/init.d/xvfb start
sh: 0: Can't open /etc/init.d/xvfb
The command "sh -e /etc/init.d/xvfb start" failed and exited with 127 during .

The Solution

You need to remove the portion of your before_script that starts xvfb and instead use the new syntax of:

services:
- xvfb

This new syntax is now in their documentation, so check that out for more information.