Skip to content

lugensa/gocept.jasmine

Repository files navigation

The gocept.jasmine distribution

Jasmine integration for selenium.

Usage

You need two things to run jasmine tests with selenium:

  • A test app which requires your resources and jasmine test files:

    class MyTestApp(gocept.jasmine.jasmine.TestApp):
    
        def need_resources(self):
            # Require your resources here
            my.package.resource.need()
            my.package.tests.jasmine_tests.need()
    
        @property
        def body(self):
            # HTML setup for your tests goes here
            return '<div id="my_container"></div>'
    
  • A TestCase with the jasmine layer:

    class MyJasmineTestCase(gocept.jasmine.jasmine.TestCase):
    
        layer = gocept.jasmine.jasmine.get_layer(MyTestApp())
    
        def test_integration(self):
            self.run_jasmine()
    

The important things here are, that the get_layer function is given your jasmine app and that the returned Layer is used on your TestCase.

In your Test, simple run run_jasmine, which will open the TestApp in your Browser. The TestApp renders your body and includes all needed resources and then runs the jasmine tests. run_jasmine will wait for these tests to finish and the report success or failure. Jasmine tracebacks and error details are visible through the selenium error handling.

Debugging

You can set the debug flag on your test case to get a pdb debugger right after the start of the jasmine tests. This lets you debug your jasmine tests within your browser:

class MyJasmineTestCase(gocept.jasmine.jasmine.TestCase):

    layer = gocept.jasmine.jasmine.get_layer(MyTestApp())
    debug = True

    def test_integration(self):
        self.run_jasmine()