===============
xvfbwrapper
Manage headless displays with Xvfb (X virtual framebuffer)
.. image:: https://travis-ci.org/cgoldberg/xvfbwrapper.svg?branch=master
:target: https://travis-ci.org/cgoldberg/xvfbwrapper
Info:
About xvfbwrapper:
xvfbwrapper is a python wrapper for controlling Xvfb.
About Xvfb:
Xvfb (X virtual framebuffer) is a display server implementing the X11 display server protocol. It runs in memory and does not require a physical display. Only a network layer is necessary.
Xvfb is especially useful for running acceptance tests on headless servers.
Install xvfbwrapper from PyPI:
pip install xvfbwrapper
System Requirements:
- Xvfb (
sudo apt-get install xvfb
, or similar) - Python 2.7 or 3.3+
++++++++++++
Examples
++++++++++++
Basic Usage:
::
from xvfbwrapper import Xvfb
vdisplay = Xvfb()
vdisplay.start()
# launch stuff inside
# virtual display here.
vdisplay.stop()
Basic Usage, specifying display geometry:
::
from xvfbwrapper import Xvfb
vdisplay = Xvfb(width=1280, height=740, colordepth=16)
vdisplay.start()
# launch stuff inside
# virtual display here.
vdisplay.stop()
Usage as a Context Manager:
::
from xvfbwrapper import Xvfb
with Xvfb() as xvfb:
# launch stuff inside virtual display here.
# It starts/stops around this code block.
Testing Example: Headless Selenium WebDriver Tests:
::
import unittest
from selenium import webdriver
from xvfbwrapper import Xvfb
class TestPages(unittest.TestCase):
def setUp(self):
self.xvfb = Xvfb(width=1280, height=720)
self.addCleanup(self.xvfb.stop)
self.xvfb.start()
self.browser = webdriver.Firefox()
self.addCleanup(self.browser.quit)
def testUbuntuHomepage(self):
self.browser.get('http://www.ubuntu.com')
self.assertIn('Ubuntu', self.browser.title)
def testGoogleHomepage(self):
self.browser.get('http://www.google.com')
self.assertIn('Google', self.browser.title)
if __name__ == '__main__':
unittest.main()
The test class above uses selenium
and xvfbwrapper
to run each test case with Firefox inside a headless display.
- virtual display is launched
- Firefox launches inside virtual display (headless)
- browser is not shown while tests are run
- conditions are asserted in each test case
- browser quits during cleanup
- virtual display stops during cleanup
Look Ma', no browser!
(You can also take screenshots inside the virtual display for diagnosing test failures)