Skip to main content

Open End JavaScript testing and utility kit

Project description

jskit contains infrastructure and in particular a py.test plugin to enable running tests for JavaScript code inside browsers directly using py.test as the test driver. Running inside the browsers comes with some speed cost, on the other hand it means for example the code is tested against the real-world DOM implementations.

The approach also enables to write integration tests such that the JavaScript code is tested against server-side Python code mocked as necessary. Any server-side framework that can already be exposed through WSGI (or for which a subset of WSGI can be written to accommodate the jskit own needs) can play along.

jskit has also some support to run JavaScript tests from based test suites.

jskit also contains code to help modularizing JavaScript code which can be used to describe and track dependencies dynamically during development and that can help resolving them statically when deploying/packaging.

Known supported browsers are Firefox, Internet Explorer >=7, and WebKit browsers.

jskit now supports both py.test 2.0 and late py.test 1.x.

jskit requires Python 2.6 or 2.7. It also uses MochiKit - of which it ships a version within itself for convenience - for its own working though in does not imposes its usage on tested code.

jskit was initially developed by Open End AB and is released under the MIT license.

rest of the docs…

Europython 2009 talk with examples

The project repository lives at

Discussions and feedback should go to py-dev at



  • make reusing one tab/window and the corresponding browser test object for all tests using the same setup in a session the default, this is enforced when using py.test 2.0 which collects all tests first

  • py.test 2.0 is now supported! py.test 1.x still works as well

  • display during the test runs a list of links on the upper right corner of the pages to jump to the outcome sections corresponding to the JavaScript test files or python modules

  • various internal cleanups and simplifications

  • some light refreshing and editing of the docs

  • fix the looking up of jstests_setup values to consider the chain of correctly

  • MochiKit usage is really an implementation detail, switch to by default in tests importing it with __export__=false, which means the name MochiKit alone is defined in the global (window) namespace, use in a jstests_setup:

    class jstests_setup:
        MochiKit__export__ = True

    to get the old behavior.


  • optionally delegate to the serverSide how the baseurl from which tests will be served should look like, useful when doing proxying for functional testing abuse of oejskit

  • change packaging to just offer a source tar file, so that makes it easier to package

  • requires Python 2.6 or 2.7


  • improved code to check for the presence of browsers which is used to skip tests, this means that listing non-present browsers in browser specs should not provoke problems

  • workaround to bug in FF3.5 triggered by the global var leak detection code, no leak detection with FF3.5 :(


  • flexible user-defined-name=commandline control over browser names for server with documentation

  • document the glue to standard library

  • better error reporting when a browser cannot be started

  • use json module included in Python >=2.6, simplejson otherwise

  • move the py.test plugin into the oejskit package, expose it through a pytest11 setuptools entry point

  • fix own-tests-only issues and warnings with py.test 1.1.x


  • fixes for py.test 1.0 final compatibility

  • experimental glue to standard library (no docs yet)

Project details

Download files

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

Source Distribution

oejskit-0.9.0.tar.gz (1.8 MB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page