Skip to content

Instantly share code, notes, and snippets.

@flbuddymooreiv
Created June 21, 2015 01:47
Show Gist options
  • Save flbuddymooreiv/f7644b955d33704d4d2f to your computer and use it in GitHub Desktop.
Save flbuddymooreiv/f7644b955d33704d4d2f to your computer and use it in GitHub Desktop.
Headless Attachable Selenium Testing Environment (HASTE)

Motivation: Manually testing web applications stinks. Selenium offers a pretty impressive way of performing actions and waiting on reactions to occur. To watch it fly by is amazing. For a long-running test, this can be a bit bothersome, as the windows can be popping up and stealing mouse focus and such. The following document explains how to get an automated test environment running with standard tools to help improve the experience of running the tests.

This has been tested/set up on Debian 8.

Install the following items:

sudo apt-get install xvfb
sudo apt-get install x11vnc
sudo apt-get install vncviewer

In one terminal, start xvfb:

user@host:~$ Xvfb :10 -ac -fbdir /var/tmp

:10 specifies which display the X server should create. -ac disables access control. Obviously, in an networked environment, this should be secured more tightly. fbdir gives us a hook to start x11vnc against.

In another terminal, point to the Xvfb and start your test:

user@host:~$ export DISPLAY=:10
user@host:~$ ~/path/to/selenium/test/test.py

At this point, your tests should be running happily. To check in on them, first, start a x11vnc server:

user@host:~$ x11vnc -display :10 -localhost -nopw -forever

If this worked, you should see a PORT=5900 output to the terminal.

Now connect to your x11vnc server using vncviewer:

user@host:~$ vncviewer localhost:5900

Now you should see your test running!

Attaching a display to a headless test may sound a bit crazy, but there are cases when a headless test may behave differently than a test run on the local X server, so this provides a way to peek into what's going on in a very minimal kind of way.

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