Index: apps/selenium/tests/seleniumtest.py
===================================================================
--- apps/selenium/tests/seleniumtest.py	(revision 1810)
+++ apps/selenium/tests/seleniumtest.py	(working copy)
@@ -6,7 +6,11 @@
 BROWSER = "*firefox"
 TARGET_URL = "http://localhost:8000"
 
+TIMEOUT = 10000
 
+ADMIN_USERNAME = "admin"
+ADMIN_PASSWORD = "admin"
+
 class SeleniumTestCase(unittest.TestCase):
 
     def setUp(self):
Index: apps/selenium/tests/test_wiki.py
===================================================================
--- apps/selenium/tests/test_wiki.py	(revision 0)
+++ apps/selenium/tests/test_wiki.py	(revision 0)
@@ -0,0 +1,124 @@
+from selenium import selenium
+import seleniumtest
+import random
+
+class TestWiki(seleniumtest.SeleniumTestCase):
+
+    def get_to_wiki_page(self):
+        self.selenium.open("/")
+        self.selenium.click("//ul[@class='projects-list']/li[1]//a")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+        if self.selenium.is_element_present("//a[@id='login']"):
+            #We need to log in
+            self.selenium.click("//a[@id='login']")
+            self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+            self.selenium.type("//input[@name='username']", seleniumtest.ADMIN_USERNAME)
+            self.selenium.type("//input[@name='password']", seleniumtest.ADMIN_PASSWORD)
+            self.selenium.click("//input[@id='login-button']")
+            self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        self.selenium.click("//li[@class='wiki']/a")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+    def test_wiki_create_page(self):
+        self.get_to_wiki_page()
+        self.selenium.click("//input[@id='wiki-new-page']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        wiki_page_name = "This is a wiki page name " + str(random.randint(1, 10000))
+        wiki_page_content = "Some wiki content"
+
+        self.selenium.type("//input[@name='name']", wiki_page_name)
+        self.selenium.type("//textarea[@name='content']", wiki_page_content)
+        self.selenium.click("//input[@name='Submit']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        name_in_page = self.selenium.is_element_present("//h2[text()='"+wiki_page_name+"']")
+        self.assertTrue(name_in_page)
+
+        content_in_page = self.selenium.is_text_present(wiki_page_content)
+        self.assertTrue(content_in_page)
+
+    def test_wiki_edit_page(self):
+        self.get_to_wiki_page()
+        self.selenium.click("//table[@id='wikipages']//tr[1]/td[1]/a")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+        self.selenium.click("//a[@id='edit-wiki']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+        self.selenium.type("//textarea[@name='content']", "TEST Content")
+        self.selenium.click("//input[@name='Save']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+        self.assertTrue(self.selenium.is_text_present("TEST Content"))
+
+    def find_current_page_version(self):
+        #Utility function that finds the current version number
+        self.selenium.click("//a[@id='history-wiki']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+        version_number_string = self.selenium.get_text("//table[@id='wiki_versions']//tr[1]/td[1]/a[1]")
+
+        self.selenium.click("//a[@id='current-version-wiki']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        return int(version_number_string)
+
+    def test_wiki_old_versions(self):
+        self.get_to_wiki_page()
+
+        self.selenium.click("//table[@id='wikipages']//tr[1]/td[1]/a")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        version_before = self.find_current_page_version()
+
+        #Edit the page
+        self.selenium.click("//a[@id='edit-wiki']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+        self.selenium.type("//textarea[@name='content']", "modifications " + str(random.randint(1, 10000)))
+        self.selenium.click("//input[@name='Save']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        version_after = self.find_current_page_version()
+
+        #Verify that the version number has been incremented
+        self.assertTrue(version_after == version_before+1)
+
+    def test_wiki_diff(self):
+        self.get_to_wiki_page()
+
+        self.selenium.click("//table[@id='wikipages']//tr[1]/td[1]/a")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        #Edit the page
+        self.selenium.click("//a[@id='edit-wiki']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        random_text =  str(random.randint(1, 10000))
+        text_before = "This is before " + random_text
+        self.selenium.type("//textarea[@name='content']", text_before)
+        self.selenium.click("//input[@name='Save']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        #Edit the same page again
+        self.selenium.click("//a[@id='edit-wiki']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        text_after = "This is after"
+        self.selenium.type("//textarea[@name='content']", text_after)
+        self.selenium.click("//input[@name='Save']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        #Get to the diff page
+        self.selenium.click("//a[@id='history-wiki']")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        self.selenium.click("//table[@id='wiki_versions']//tr[2]/td/a[2]")
+        self.selenium.wait_for_page_to_load(seleniumtest.TIMEOUT)
+
+        #Make sure that the diff is correct
+        substracted_text = self.selenium.get_text("//table//td[3]/span[@class='diff_sub']")
+        self.assertEquals(text_before, substracted_text)
+
+        added_text = self.selenium.get_text("//table//td[6]/span[@class='diff_add']")
+        self.assertEquals(text_after, added_text)
+
+if __name__ == "__main__":
+    seleniumtest.main()
\ No newline at end of file
Index: apps/wiki/templates/wiki/wiki_detail.html
===================================================================
--- apps/wiki/templates/wiki/wiki_detail.html	(revision 1810)
+++ apps/wiki/templates/wiki/wiki_detail.html	(working copy)
@@ -19,10 +19,10 @@
     <hr>
     <div id="wiki-nav">
       {% if perms.wiki.change_wikipage %}
-        <a href="{{ page.get_edit_url }}">{% trans "Edit this page" %}</a>
+        <a id="edit-wiki" href="{{ page.get_edit_url }}">{% trans "Edit this page" %}</a>
       {% endif %}
-      <a href="{{ page.get_history_url }}">{% trans "Old Versions" %}</a>
-      <a href="{{ page.get_list_url }}">{% trans "Page List" %}</a>
+      <a id="history-wiki" href="{{ page.get_history_url }}">{% trans "Old Versions" %}</a>
+      <a id="page-list-wiki" href="{{ page.get_list_url }}">{% trans "Page List" %}</a>
     </div>
 
     <h2>{{ page.name }}</h2>
Index: apps/wiki/templates/wiki/wiki_history.html
===================================================================
--- apps/wiki/templates/wiki/wiki_history.html	(revision 1810)
+++ apps/wiki/templates/wiki/wiki_history.html	(working copy)
@@ -21,7 +21,7 @@
 {% block body %}
   <ul id="wiki-nav">
     <li>
-      <a href="{{ wikipage.get_absolute_url }}">
+      <a id="current-version-wiki" href="{{ wikipage.get_absolute_url }}">
         {% trans "Current version" %}
       </a>
     </li>
Index: apps/wiki/templates/wiki/wiki_list.html
===================================================================
--- apps/wiki/templates/wiki/wiki_list.html	(revision 1810)
+++ apps/wiki/templates/wiki/wiki_list.html	(working copy)
@@ -15,7 +15,7 @@
     <form id="add-wiki" method="get"
           action="{% url create-wikipage project_slug=project.slug %}">
       <input type="text" name="name">
-      <input type="submit" value="{% trans 'New Page' %}">
+      <input id="wiki-new-page" type="submit" value="{% trans 'New Page' %}">
     </form>
   {% endif %}
 
Index: basie/templates/base.html
===================================================================
--- basie/templates/base.html	(revision 1810)
+++ basie/templates/base.html	(working copy)
@@ -3,83 +3,83 @@
 {% load i18n %}
 
 {% comment %}
-  The blocks defined for extension:
-    * head_title: for the page title
-    * extra_head: anything you want to place in <head>
-    * body: main page content
+The blocks defined for extension:
+* head_title: for the page title
+* extra_head: anything you want to place in <head>
+* body: main page content
 {% endcomment %}
 
 <html>
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-    <meta name="viewport" content="initial-scale=1.0">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<meta name="viewport" content="initial-scale=1.0">
 
-    <title>{% block head_title %}{% endblock %}</title>
+<title>{% block head_title %}{% endblock %}</title>
 
-    {# Blueprint is first so it's easy to override. #}
-    <link rel="stylesheet" type="text/css" media="screen, projection"
-          href="{{ MEDIA_URL }}css/blueprint/screen.css">
-    <link rel="stylesheet" type="text/css" media="print"
-          href="{{ MEDIA_URL }}css/blueprint/print.css">
-    <link rel="stylesheet" type="text/css"
-        href="{{ MEDIA_URL }}/css/jqueryui/jquery-ui-1.7.2.custom.css">
+{# Blueprint is first so it's easy to override. #}
+<link rel="stylesheet" type="text/css" media="screen, projection"
+  href="{{ MEDIA_URL }}css/blueprint/screen.css">
+<link rel="stylesheet" type="text/css" media="print"
+  href="{{ MEDIA_URL }}css/blueprint/print.css">
+<link rel="stylesheet" type="text/css"
+href="{{ MEDIA_URL }}/css/jqueryui/jquery-ui-1.7.2.custom.css">
 
-    <!--[if IE]>
-      <link rel="stylesheet" type="text/css" media="screen, projection"
-            href="{{ MEDIA_URL }}css/blueprint/ie.css">
-    <![endif]-->
-    {# /Blueprint #}
+<!--[if IE]>
+<link rel="stylesheet" type="text/css" media="screen, projection"
+    href="{{ MEDIA_URL }}css/blueprint/ie.css">
+<![endif]-->
+{# /Blueprint #}
 
-    <link rel="stylesheet" type="text/css" media="screen, projection"
-          href="{{ MEDIA_URL }}css/style.css">
-    {% if LANGUAGE_BIDI %}
-    <link rel="stylesheet" type="text/css" media="screen"
-          href="{{ MEDIA_URL }}css/rtl.css">
-    {% endif %}
-    <link rel="stylesheet" type="text/css" media="screen, projection"
-        href="{{ MEDIA_URL }}lists/css/lists.css">
+<link rel="stylesheet" type="text/css" media="screen, projection"
+  href="{{ MEDIA_URL }}css/style.css">
+{% if LANGUAGE_BIDI %}
+<link rel="stylesheet" type="text/css" media="screen"
+  href="{{ MEDIA_URL }}css/rtl.css">
+{% endif %}
+<link rel="stylesheet" type="text/css" media="screen, projection"
+href="{{ MEDIA_URL }}lists/css/lists.css">
 
-    {% block extra_head %}{% endblock %}
-  </head>
-  <body class="{% block body_class %}portal{% endblock %}">
-    <div id="topbar">
-      <div id="logowrapper">
-        <a href="{% url project-list %}">
-          <img id="logo" alt="Basie" src="{{ MEDIA_URL }}/img/webclip-icon.png">
-        </a>
-      {% if request.project %}
-        <h1>
-          <a id="project-name"
-             href="{% url project-detail project_slug=request.project.slug %}">
-            {{ request.project.name }}
-          </a>
-        </h1>
-      {% endif %}
-      </div>
-      <ul id="nav">
-        {% if user.is_authenticated %}
-          <li>
-            {% trans "Welcome" %}, {% firstof user.first_name user.username %}
-          </li>
-          <li><a href="{% url preferences %}">{% trans "Preferences" %}</a></li>
-          {% if user.is_staff %}
-            <li><a href="{% url admin-manage %}">{% trans "Manage" %}</a></li>
-          {% endif %}
-          <li><a href="{% url logout %}">{% trans "Logout" %}</a></li>
-        {% else %}
-          <li>
-            {% url logout as logout_url %}
-            {% url login as login_url %}
-            {% ifnotequal request.path logout_url %}
-              {% ifnotequal request.path login_url %}
-                <a href="{{ login_url }}?next={{ request.path }}">
-              {% else %}
-                <a href="{{ login_url }}?next={{ next }}">
-              {% endifnotequal %}
-            {% else %}
-              <a href="{{ login_url }}">
-            {% endifnotequal %}
-                {% trans "Login" %}
+{% block extra_head %}{% endblock %}
+</head>
+<body class="{% block body_class %}portal{% endblock %}">
+<div id="topbar">
+<div id="logowrapper">
+<a href="{% url project-list %}">
+  <img id="logo" alt="Basie" src="{{ MEDIA_URL }}/img/webclip-icon.png">
+</a>
+{% if request.project %}
+<h1>
+  <a id="project-name"
+     href="{% url project-detail project_slug=request.project.slug %}">
+    {{ request.project.name }}
+  </a>
+</h1>
+{% endif %}
+</div>
+<ul id="nav">
+{% if user.is_authenticated %}
+  <li>
+    {% trans "Welcome" %}, {% firstof user.first_name user.username %}
+  </li>
+  <li><a href="{% url preferences %}">{% trans "Preferences" %}</a></li>
+  {% if user.is_staff %}
+    <li><a href="{% url admin-manage %}">{% trans "Manage" %}</a></li>
+  {% endif %}
+  <li><a href="{% url logout %}">{% trans "Logout" %}</a></li>
+{% else %}
+  <li>
+    {% url logout as logout_url %}
+    {% url login as login_url %}
+    {% ifnotequal request.path logout_url %}
+      {% ifnotequal request.path login_url %}
+	<a id="login" href="{{ login_url }}?next={{ request.path }}">
+      {% else %}
+	<a id="login" href="{{ login_url }}?next={{ next }}">
+      {% endifnotequal %}
+    {% else %}
+      <a id="login" href="{{ login_url }}">
+    {% endifnotequal %}
+	{% trans "Login" %}
               </a>
           </li>
         {% endif %}
@@ -121,19 +121,19 @@
         </a> 
       {% endif %} 
         | 
-        <a href="{% url view-license %}"> 
+        <a id="about-license" href="{% url view-license %}"> 
           {% trans "License" %} 
         </a>  
         | 
-        <a href="{% url view-credits %}"> 
+        <a id="about-credits" href="{% url view-credits %}"> 
           {% trans "Credits" %} 
         </a>  
         | 
-        <a href="{% url view-faq %}"> 
+        <a id="about-faq" href="{% url view-faq %}"> 
           {% trans "FAQ" %} 
         </a>  
         | 
-        <a href="{% url view-api %}"> 
+        <a id="about-api" href="{% url view-api %}"> 
           {% trans "API" %} 
         </a>  
     </div> 
Index: basie/templates/registration/login.html
===================================================================
--- basie/templates/registration/login.html	(revision 1810)
+++ basie/templates/registration/login.html	(working copy)
@@ -22,7 +22,7 @@
       {% field form.password class="title" %}
     </p>
     <p>
-      <input type="submit" value="Login">
+      <input id="login-button" type="submit" value="Login">
       <input type="hidden" name="next" value="{{ next }}">
     </p>
   </form>
