Add support for testing other browsers via selenium.

This allows for testing in Chrome as well as the default Firefox
(not that any of the tests get anywhere near passing), which should
make it easier to get things moving (or to add IE testing at some
point).

Change-Id: I8d2472ae71526bc9afd5781b044b4b044674b950
Merge branch 'master' into selenium
Bump to the latest version of selenium

Change-Id: Ia6ca611ae0021f8a02222eea8ba9212da41a4310
Tidyups, clarify the use of the badger firefox.

Change-Id: Iee4cce011d8afe710c9b57816b09bcbba5a4eb72
Provide a default url for chrome.

This supports dev instances by default.

Change-Id: I9a1f6b5d6958de7436dd6c33c62177875914a9af
Remove redundant line, bump browser headings down a level.

These aren't really top level headings.

Change-Id: Ic10c373e70cb2765046e508a13ba12a636bef20b
Add support and examples for using HTMLUnit.

This is a headless browser which provides flexibility, though doesn't
let the developer see visually what's happening.

Change-Id: I6e19f407021cef714a9906b40ef241c4854fac00
Tidy imports per PEP 8.

Change-Id: Ie8f88c6dfabe489572095674dd290603fa9d53e2
Fix title and login selenium tests, part fix registration.

This updates the tests for the current UI version, and adds some
helper methods for getting elements & asserting their display state.
The registration test mostly works, but doesn't seem to show the
div properly for reasons unknown (it works manually).

Change-Id: I6cb4bc292d97777aa021c74be903674f5fb26157
Let users login with any case of username.

This is already the case for our other services, specifically the
IDE and forums, so it's incongruous to prevent it here. We still
respond with the canonical username, and (should) use that internally
so internal references will remain canonical.

The only occasion where we require case matching is the activation
of new accounts, where the username is used as a sqlite lookup key.
In this case, the user is expected to be clicking a link sent in an
email, so the need for tolerance is greatly reduced anyway.

Fix the one place we weren't handling usernames correctly, add tests
for that case plus the general login case and bump libnemesis to get
the required infrastructure changes to allow case-insensitive logins.

Change-Id: I66e0aa2f60801fcc424c043db55abfb3c9af9fad
Update testing of user display, add test for the self-link.

This doesn't yet cover actual user editing, or any specifics, just
that the right box is shown, with the right username.

In order to do this, add helper methods which wait for a given element
to be shown, based around a helper method which waits for a predicate
or a timeout.

Change-Id: I76cc430b93b1f0f2f3c8519dd788e95b19a99e7d
Correct outdated local.py name in readme.

Change-Id: Ic110ca3585878c957b08c0e55c84b5781a6075b9
Correct name of the chrome browser file.

Change-Id: Ib26a44d9b1dd43f78af1512df3915cad205eeb98
Change default Chrome handling to go via the server, update readme.

This modifies the chrome browser example to allow either direct
control of the driver, which it turns out is slow, or access via the
server which is faster. Also update the readme to reflect this, and
tidy it up in the process now that we (almost) always need the server.

Change-Id: I9ab86a8aaf2cd9dbf6793f9ac287e0eaa34321a6
Improve assertion failure message.

Change-Id: Icbbb12913cb29001e418190819f1829ffd0b85b1
Remove user that shouldn't be present.

Change-Id: I2edf034dd2260015d291cbda6c67278eac12f69b
Make it possible to login as any user.

Change-Id: I5093119e0889abdb3e5d5b6a0fe7d7a8e11ce11e
Add a test for a student using the self-edit link in the top right.

This is about as close to the case of a user not being in a college
as we can get for the moment.

Change-Id: Iddc734fa2c44af951a71721302815a164a0e3e1b
Merge and update the registration display and function tests.

There seems little point having one test which is going to effectively
duplicate the first portion of another test, as it may as well just
be one test. Ensure that the created user is not present in either
LDAP or sqlite either before or after the test runs so that it
should always work. Include handling of the feedback display so that
developers can see (via assertions) what error messages the user
would see.

Change-Id: I0d1159b0583ccf348e7f73d60e4eef32cd41b556
Add helper to get the informational feedback messages.

Change-Id: Ia5ee1a59c59ececb3b3d04e81a898a6852374e33