Add a Selenium test suite for Review Board.

Review Request #1527 — Created April 21, 2010 and submitted

Information

Review Board
master

Reviewers

Add a Selenium test suite for Review Board.

This adds a new Selenium test suite for testing various user-facing
parts of Review Board through the Selenium browser automation tools.

The tests cover most common operations. In particular:

* Logging in
* Creating/modifying/publishing a review request
* Closing review requests
* Uploading diffs
* Uploading screenshots
* Viewing diffs
* Reviewing
* Commenting (diffs and screenshots)
* And more...

This provides full coverage of our datastore.js, meaning that we have
complete UI coverage for all calls to our web API. When we start moving to
the new web API, this should help us catch any regressions.

The tests live in the webtests/ directory, outside of the main reviewboard/
package directory. The reason for this is that we don't necessarily want to
have these tests run every time the full test suite is run, as they need
to mess with the browser, and they're slow. If we choose, we can run
these tests with the main test suite by doing:

	$ ./reviewboard/manage.py test -- --with-webtests

Or, to run just the web tests:

	$ ./reviewboard/manage.py test -- webtests
Or:
	$ ./contrib/internal/webtests.sh

This updates some URLs and templates in order to add identification information
to some elements in order to let us more easily test them.

It also fixes up some of the test runner code to properly build and tear down
the media directories, so that we can access all bundled media and uploaded
media for the tests.
Ran the full test suite, several times. Originally a lot of things were caught
(all have been fixed and are posted for review). With these fixes, the whole
suite completes successfully.