Skip to main content

Keteparaha is a tool for testing modern JS heavy websites

Project description

[![Join the chat at](]( [![PyPI version](]( [![Build Status](]( [![Coverage Status](](

Keteparaha is a collection of tools to help when functional testing

It contains utilities that assist with tasks like running a browser in a headless environment, or checking that emails have been sent, or a file has been uploaded to a server, or common testing flow control like retrying or ignoring certain errors.

  1. 2015 by Hansel Dunlop.

GPLv3, see LICENSE for more details


A browser test case for testing web applications. Subclass it and call the start_browser method with the name of the browser you want to test with. Closing the browser is handled automatically. For example:

from test_helpers import BrowserTestCase

class YourTestCase(BrowserTestCase):

def setUp(self):
self.browser = self.start_browser(“Firefox”)
def test_page_loads(self):


self.assertIn(“Hello, World”, self.body_text)


Requires XvFB to be installed (sudo apt-get install xvfb).

Designed for testing web applications on a headless server, probably running as part of continuous integration. Usage is exactly like the BrowserTestCase except that you won’t see a browser window open, everything should be done inside a virtual display.

The example below would run Firefox inside a virtual display with a width of 1200px and height of 900px.

from test_helpers import HeadlessBrowserTestCase

class YourTestCase(HeadlessBrowserTestCase):

def setUp(self):
self.browser = self.start_browser(“Firefox”, size=(1200, 900))

Remaining keyword arguments to start browser will be passed down to the virtual display driver. But the other defaults are generally sensible.


The Page class represents a page in your application and should be subclassed and extended. Pages are given urls. Whenever you click a component of your site and the URL changes the associated page will be returned. Creating an instance of a class will automatically visit that page.

from test_helpers import Page SERVER_URL = ‘{}’

class LoginPage(Page):

url = SERVER_URL.format(‘login/’)

def login(self, username, password):
self.click_button(“Login”) self.enter_text(“input[name=username]”, username) self.enter_text(“input[name=password]”, password) return“input[type=submit]”)
class YourDashboard(Page):

url = SERVER_URL.format(‘dashboard/’)

def assert_logged_in(self):
# Will raise an exception if component not present self.get_component(“.account-details”)

class YourTestCase(BrowserTestCase):

def setUp(self):
def test_login_works(self):

login_page = LoginPage(driver=self._driver) dashboard = login_page.login(‘username’, ‘password’)



The email module contains a imap client written to interact with gmail. This is especially useful if you use Google Apps and you’re running tests against it.

Flow Control

This module contains three functions that are intended to make flow control in testing situations less painful. They can be used as decorators. They are:

  • retry
  • ignore
  • fallback

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for keteparaha, version 0.0.24
Filename, size File type Python version Upload date Hashes
Filename, size keteparaha-0.0.24-py2-none-any.whl (15.8 kB) File type Wheel Python version 2.7 Upload date Hashes View hashes
Filename, size keteparaha-0.0.24.tar.gz (11.6 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page