Alfajor ------- Tasty functional testing. Alfajor provides a modern, object-oriented and browser-neutral interface to HTTP resources. With Alfajor, your Python scripts and test code have a live, synchronized mirror of the browser's X/HTML DOM, even with DOM changes made on the client by JavaScript. Alfajor provides: - A straightforward 'browser' object, with an implementation that communicates in real-time with live web browsers via Selenium and a fast, no-javascript implementation via an integrated WSGI gateway - Use a specific browser, or, via integration with the 'nose' test runner, switch out the browser backend via a command line option to your tests. Firefox, Safari, WSGI- choose which you want on a run-by-run basis. - Synchronized access to the page DOM via a rich dialect of lxml, with great time-saving shortcuts that make tests compact, readable and fun to write. - Optional management of server processes under test, allowing them to transparently start and stop on demand as your tests run. - An 'apiclient' with native JSON response support, useful for testing REST and web api implementations at a fine-grained level. - A friendly BSD license. Behind the scenes, Alfajor has a well-defined structure that supports plugins for new browser backends and testing requirements. The following plugins are already underway or in planning: - Windmill - Selenium 2.0 / WebDriver - cloud-based Selenium testing services - py.test integration Getting Started =============== This is the alpha-release README. Please, bear with us as we assemble traditional documentation and tutorial material. Until then... To get started quickly, use the Alfajor self-tests to see it in action: Setup: 1) create and activate a virtualenv (optional) 2) cd to the top of this distribution 3) python setup.py develop 4) easy_install nose If you don't have Selenium installed, download Selenium RC. All you need is the selenium-server.jar, and no configuration is required. Run it with 'java -jar selenium-server.jar'. Action: 1) nosetests --help After following the steps above, the Alfajor plugin should be available and listing command-line options for nose. 2) nosetests You just ran a whole mess of tests against an in-process web app through a WSGI interface. 3) nosetests --browser=firefox You just ran the same mess of tests in a real web browser! You can try other browser names: safari, etc. ------------------------------------------------------------------------------ The main action of Alfajor is directed through an alfajor.ini file. At the simplest, this can be anywhere on the filesystem (see the --alfajor-config option in nose) or placed in the same directory as the .py file that configures the WebBrowser. See tests/webapp/{__init__.py,alfajor.ini}.