With the new Django 1.4+ support for in-browser testing frameworks, it was time for selenose to support django-jenkins, a plug and play continuous integration tool for Django and Jenkins.

Selenose now provides two Selenium related tasks for django-jenkins:

selenium-server-task starts a Selenium Server before running the tests, and stops it once they are over.

selenium-driver-task provides a Selenium Web Driver to the tests.

Selenium Server Task This task starts a Selenium Server before running tests, and stops it at the end of the tests. To enable it, edit your settings.py and append selenose.tasks.selenium_server to JENKINS_TASKS : JENKINS_TASKS = [ # Other tasks... 'selenose.tasks.selenium_server' , ] If this setting does not exist yet, do not forget to create it with the default tasks: JENKINS_TASKS = [ 'django_jenkins.tasks.run_pylint' , 'django_jenkins.tasks.with_coverage' , 'django_jenkins.tasks.django_tests' , 'selenose.tasks.selenium_server' , ] Options for Selenium Server are the same as for the nose Selenium Server Plugin. Set them in a setup.cfg located in the current working directory, for instance: [selenium-server] debug = true log = selenium-server.log You can also specify the path to the configuration file with the --selenose-config option on the manage.py jenkins command line: $ python manage.py jenkins --help [ ... ] selenose.tasks.selenium_server: --selenose-config = SELENOSE_CONFIGS Load selenose configuration from config file ( s ) . May be specified multiple times ; in that case , all config files will be loaded and combined. In your tests, just create a new Remote Web Driver calling the server and that's it: from django.test import LiveServerTestCase from selenium import webdriver class TestCase ( LiveServerTestCase ): @classmethod def setUpClass ( cls ): cls . driver = webdriver . Remote ( desired_capabilities = webdriver . DesiredCapabilities . FIREFOX ) super ( BaseTestCase , cls ) . setUpClass () @classmethod def tearDownClass ( cls ): super ( BaseTestCase , cls ) . tearDownClass () cls . driver . quit () def test ( self ): driver . get ( self . live_server_url )

Selenium Driver Task This task provides a Selenium Web Driver to Selenium tests. To enable it, edit your settings.py and append selenose.tasks.selenium_driver to JENKINS_TASKS : JENKINS_TASKS = [ # Other tasks... 'selenose.tasks.selenium_server' , ] If this setting does not exist yet, do not forget to create it with the default tasks: JENKINS_TASKS = [ 'django_jenkins.tasks.run_pylint' , 'django_jenkins.tasks.with_coverage' , 'django_jenkins.tasks.django_tests' , 'selenose.tasks.selenium_driver' , ] But enabling this task is not enough, a Web Driver environment is also required. An environment declares all the necessary parameters to create a new Web Driver. See selenose documentation for more details. The environments are defined in a setup.cfg located in the current working directory, for instance: [selenium-driver:sample] webdriver = firefox You can also specify the path to the configuration file containing the environments with the --selenose-config option on the manage.py jenkins command line: $ python manage.py jenkins --help [ ... ] selenose.tasks.selenium_driver: --selenose-config = SELENOSE_CONFIGS Load selenose configuration from config file ( s ) . May be specified multiple times ; in that case , all config files will be loaded and combined. --selenium-driver = SELENIUM_DRIVER Enable the provided environment. To enable an environment, use the --selenium-driver option on the manage.py jenkins command line: $ python manage.py jenkins --selenium-driver = sample Then the Web Driver is directly available in you tests with self.driver and there is no need to cleanup after use, selenose will do it for you: from selenose.cases import LiveServerTestCase class TestCase ( LiveServerTestCase ): def test ( self ): self . driver . get ( self . live_server_url ) # Your test here...