diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/application/GuiApplicationRunner.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/application/GuiApplicationRunner.java
index 16359bb2fdfcdc112a06416f64f802079b2e3c6b..e0a4e8ccba8b38f0cfd20d45d4edfb76b61976a2 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/application/GuiApplicationRunner.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/application/GuiApplicationRunner.java
@@ -21,6 +21,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.openqa.selenium.NoSuchElementException;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.infra.uid.UidGenerator;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.PageProxy;
 import ch.systemsx.cisd.openbis.uitest.page.dialog.AddExperimentTypeDialog;
@@ -54,7 +55,6 @@ import ch.systemsx.cisd.openbis.uitest.page.tab.SampleTypeBrowser;
 import ch.systemsx.cisd.openbis.uitest.page.tab.SpaceBrowser;
 import ch.systemsx.cisd.openbis.uitest.page.tab.Trash;
 import ch.systemsx.cisd.openbis.uitest.page.tab.VocabularyBrowser;
-import ch.systemsx.cisd.openbis.uitest.suite.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.type.Browsable;
 import ch.systemsx.cisd.openbis.uitest.type.DataSet;
 import ch.systemsx.cisd.openbis.uitest.type.DataSetType;
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SeleniumTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/dsl/SeleniumTest.java
similarity index 97%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SeleniumTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/dsl/SeleniumTest.java
index af1957b42e23d09dfda6b42746d55a4d0cf17731..247f47307d2b85dbb50fb5282a1b70b0eb3fa2a7 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SeleniumTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/dsl/SeleniumTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.infra.dsl;
 
 import static org.hamcrest.CoreMatchers.not;
 
@@ -30,17 +30,16 @@ import org.openqa.selenium.Dimension;
 import org.openqa.selenium.TakesScreenshot;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.firefox.FirefoxDriver;
-import org.testng.annotations.AfterGroups;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeGroups;
+import org.testng.annotations.AfterTest;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.BeforeSuite;
+import org.testng.annotations.BeforeTest;
 
 import ch.systemsx.cisd.openbis.uitest.infra.application.ApplicationRunner;
 import ch.systemsx.cisd.openbis.uitest.infra.application.GuiApplicationRunner;
 import ch.systemsx.cisd.openbis.uitest.infra.application.PublicApiApplicationRunner;
-import ch.systemsx.cisd.openbis.uitest.infra.dsl.DslSampleBrowser;
 import ch.systemsx.cisd.openbis.uitest.infra.matcher.CellContentMatcher;
 import ch.systemsx.cisd.openbis.uitest.infra.matcher.CollectionContainsMatcher;
 import ch.systemsx.cisd.openbis.uitest.infra.matcher.CurrentPageMatcher;
@@ -166,9 +165,11 @@ public abstract class SeleniumTest
         driver.quit();
     }
 
-    @BeforeGroups(groups = "login-admin")
+    @BeforeTest(groups =
+        { "login-admin", "sprint-test" })
     public void loginAsAdmin()
     {
+        System.out.println("LOGIN");
         this.openbis = new GuiApplicationRunner(new PageProxy(new ScreenShotter()
             {
                 @Override
@@ -183,9 +184,11 @@ public abstract class SeleniumTest
         openbisApi.login(ADMIN_USER, ADMIN_PASSWORD);
     }
 
-    @AfterGroups(groups = "login-admin")
+    @AfterTest(groups =
+        { "login-admin", "sprint-test" })
     public void logout()
     {
+        System.out.println("LOGOUT!");
         this.openbis = new GuiApplicationRunner(new PageProxy(new ScreenShotter()
             {
                 @Override
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/WebElementProxy.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/LazyLoader.java
similarity index 73%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/WebElementProxy.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/LazyLoader.java
index bf6472d69e3703af5687f76ef574d7af6a47203f..d11bada119536e6ac154183dc9b1af5ee69789e5 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/WebElementProxy.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/LazyLoader.java
@@ -23,25 +23,27 @@ import java.lang.reflect.Method;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 
-import ch.systemsx.cisd.openbis.uitest.suite.SeleniumTest;
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 
-public class WebElementProxy implements InvocationHandler
+public class LazyLoader implements InvocationHandler
 {
 
     private String id;
 
     private String tag;
 
+    private WebElement element;
+
     public static Object newInstance(String id, String tag)
     {
         return java.lang.reflect.Proxy.newProxyInstance(
                 WebElement.class.getClassLoader(),
                 new Class<?>[]
                     { WebElement.class },
-                new WebElementProxy(id, tag));
+                new LazyLoader(id, tag));
     }
 
-    private WebElementProxy(String id, String tag)
+    private LazyLoader(String id, String tag)
     {
         this.id = id;
         this.tag = tag;
@@ -52,12 +54,17 @@ public class WebElementProxy implements InvocationHandler
     {
         try
         {
-            WebElement e = SeleniumTest.driver.findElement(By.id(id));
-            if (tag != null && !tag.equals(e.getTagName()))
+            if (element == null)
             {
-                e = e.findElement(By.xpath(".//" + tag));
+                WebElement e = SeleniumTest.driver.findElement(By.id(id));
+                if (tag != null && !tag.equals(e.getTagName()))
+                {
+                    e = e.findElement(By.xpath(".//" + tag));
+                }
+
+                element = e;
             }
-            return m.invoke(e, args);
+            return m.invoke(element, args);
         } catch (InvocationTargetException e)
         {
             throw e.getTargetException();
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/PageProxy.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/PageProxy.java
index 2d71071e74f355aa0a27f39a015352d084ae4e62..557447b710f8c8eb03c6b3d63f7d688c22033a6a 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/PageProxy.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/PageProxy.java
@@ -17,18 +17,12 @@
 package ch.systemsx.cisd.openbis.uitest.infra.webdriver;
 
 import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-import javassist.util.proxy.MethodHandler;
-import javassist.util.proxy.ProxyFactory;
 
 import org.openqa.selenium.By;
-import org.openqa.selenium.StaleElementReferenceException;
 import org.openqa.selenium.WebElement;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.infra.screenshot.ScreenShotter;
-import ch.systemsx.cisd.openbis.uitest.suite.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.widget.AtomicWidget;
 import ch.systemsx.cisd.openbis.uitest.widget.Widget;
 
@@ -47,71 +41,17 @@ public class PageProxy
     @SuppressWarnings("unchecked")
     public <T> T get(final Class<T> clazz)
     {
-
-        ProxyFactory factory = new ProxyFactory();
-        factory.setSuperclass(clazz);
-
-        MethodHandler handler = new MethodHandler()
-            {
-                @Override
-                public Object invoke(Object self, Method thisMethod, Method proceed, Object[] args)
-                        throws Throwable
-                {
-                    try
-                    {
-                        return proceed.invoke(self, args);
-                    } catch (InvocationTargetException e)
-                    {
-                        if (e.getTargetException() instanceof StaleElementReferenceException)
-                        {
-                            initLocateFields(clazz, (T) self);
-                            return proceed.invoke(self, args);
-                        } else
-                        {
-                            throw e.getTargetException();
-                        }
-                    }
-                }
-            };
-
-        T t;
         try
         {
-            t = (T) factory.create(new Class<?>[0], new Object[0], handler);
-        } catch (IllegalArgumentException ex1)
-        {
-            throw new RuntimeException(ex1);
-        } catch (NoSuchMethodException ex1)
-        {
-            throw new RuntimeException(ex1);
-        } catch (InstantiationException ex1)
-        {
-            throw new RuntimeException(ex1);
-        } catch (IllegalAccessException ex1)
-        {
-            throw new RuntimeException(ex1);
-        } catch (InvocationTargetException ex1)
-        {
-            throw new RuntimeException(ex1);
-        }
-
-        initLocateFields(clazz, t);
+            T t = clazz.newInstance();
 
-        return t;
-    }
-
-    @SuppressWarnings("unchecked")
-    private <T> void initLocateFields(Class<T> clazz, T t)
-    {
-        Class<T> pageClass = clazz;
-        while (pageClass != null)
-        {
-            for (Field field : pageClass.getDeclaredFields())
+            Class<T> pageClass = clazz;
+            while (pageClass != null)
             {
-                Locate locate = field.getAnnotation(Locate.class);
-                if (locate != null)
+                for (Field field : pageClass.getDeclaredFields())
                 {
-                    try
+                    Locate locate = field.getAnnotation(Locate.class);
+                    if (locate != null)
                     {
                         field.setAccessible(true);
                         Widget widget = (Widget) field.getType().newInstance();
@@ -126,7 +66,7 @@ public class PageProxy
                         if (field.getAnnotation(Lazy.class) != null)
                         {
                             element =
-                                    (WebElement) WebElementProxy.newInstance(locate.value(),
+                                    (WebElement) LazyLoader.newInstance(locate.value(),
                                             tagName);
                         } else
                         {
@@ -139,46 +79,36 @@ public class PageProxy
 
                         widget.setContext(new WidgetContext(element, shotter));
                         field.set(t, widget);
-                    } catch (IllegalArgumentException ex)
-                    {
-                        // TODO Auto-generated catch block
-                        ex.printStackTrace();
-                        throw ex;
-                    } catch (IllegalAccessException ex)
-                    {
-                        ex.printStackTrace();
-                        throw new RuntimeException(ex);
-                    } catch (InstantiationException ex)
-                    {
-                        // TODO Auto-generated catch block
-                        ex.printStackTrace();
-                        throw new RuntimeException(ex);
                     }
 
-                }
-
-                Context context = field.getAnnotation(Context.class);
-                if (context != null)
-                {
-                    field.setAccessible(true);
-                    try
-                    {
-                        field.set(t, new WidgetContext(SeleniumTest.driver.findElement(By
-                                .xpath("/html")),
-                                shotter));
-                    } catch (IllegalArgumentException ex)
-                    {
-                        ex.printStackTrace();
-                        throw new RuntimeException(ex);
-                    } catch (IllegalAccessException ex)
+                    Context context = field.getAnnotation(Context.class);
+                    if (context != null)
                     {
-                        ex.printStackTrace();
-                        throw new RuntimeException(ex);
+                        field.setAccessible(true);
+                        try
+                        {
+                            field.set(t, new WidgetContext(SeleniumTest.driver.findElement(By
+                                    .xpath("/html")),
+                                    shotter));
+                        } catch (IllegalArgumentException ex)
+                        {
+                            ex.printStackTrace();
+                            throw new RuntimeException(ex);
+                        } catch (IllegalAccessException ex)
+                        {
+                            ex.printStackTrace();
+                            throw new RuntimeException(ex);
+                        }
                     }
                 }
+
+                pageClass = (Class<T>) pageClass.getSuperclass();
             }
 
-            pageClass = (Class<T>) pageClass.getSuperclass();
+            return t;
+        } catch (Exception e)
+        {
+            throw new RuntimeException(e);
         }
     }
 }
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/WidgetContext.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/WidgetContext.java
index c7c51b42317a95b69d696702866d7144ae47f7c6..f62203ac6dccfad31ad218716dc1fccb0c0bded2 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/WidgetContext.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/infra/webdriver/WidgetContext.java
@@ -25,8 +25,8 @@ import org.openqa.selenium.Point;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.interactions.Actions;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.infra.screenshot.ScreenShotter;
-import ch.systemsx.cisd.openbis.uitest.suite.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.widget.AtomicWidget;
 
 /**
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RegisterExperiment.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RegisterExperiment.java
index e0cb990d065c838e24227dda059ed34430f8adea..870edcc3cb89a3f0631c0ae5cd47ef4f3e222346 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RegisterExperiment.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/page/tab/RegisterExperiment.java
@@ -18,9 +18,9 @@ package ch.systemsx.cisd.openbis.uitest.page.tab;
 
 import java.util.concurrent.TimeUnit;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Lazy;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.Locate;
-import ch.systemsx.cisd.openbis.uitest.suite.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.type.Experiment;
 import ch.systemsx.cisd.openbis.uitest.type.ExperimentType;
 import ch.systemsx.cisd.openbis.uitest.type.Sample;
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/AuthorizationTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/authentication/AuthenticationTest.java
similarity index 89%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/AuthorizationTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/authentication/AuthenticationTest.java
index 7a255b1632fd445b252ef161f0679fab201f596f..ad22bab8352cfd19ecdc9763ef690f06141349ae 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/AuthorizationTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/authentication/AuthenticationTest.java
@@ -1,10 +1,11 @@
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.authentication;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.page.dialog.InvalidPasswordDialog;
 import ch.systemsx.cisd.openbis.uitest.page.menu.AdminMenu;
 import ch.systemsx.cisd.openbis.uitest.page.menu.TopBar;
@@ -12,7 +13,7 @@ import ch.systemsx.cisd.openbis.uitest.page.tab.RoleAssignmentBrowser;
 
 @Test(groups =
     { "no-login" })
-public class AuthorizationTest extends SeleniumTest
+public class AuthenticationTest extends SeleniumTest
 {
 
     @Test
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/DataSetTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/DataSetTest.java
similarity index 92%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/DataSetTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/DataSetTest.java
index 9c22e1e7d671f127ba00b075dba091689d7b9fff..876579c6732d21ac95720812c89ad116072c7f96 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/DataSetTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/DataSetTest.java
@@ -14,10 +14,11 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.main;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.type.DataSet;
 import ch.systemsx.cisd.openbis.uitest.type.Experiment;
 import ch.systemsx.cisd.openbis.uitest.type.Sample;
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/ExperimentTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/ExperimentTest.java
similarity index 93%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/ExperimentTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/ExperimentTest.java
index 8bd43edf472ce28dfb2fe17a5bbaeb05531dc68f..e406f65f55fdd942f578cb7389691e0469d58c86 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/ExperimentTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/ExperimentTest.java
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.main;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.type.Experiment;
 import ch.systemsx.cisd.openbis.uitest.type.Project;
 import ch.systemsx.cisd.openbis.uitest.type.Sample;
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/ExperimentTypeTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/ExperimentTypeTest.java
similarity index 80%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/ExperimentTypeTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/ExperimentTypeTest.java
index 492f1116360f927f5190e4d8df54670b90d65429..3df66a899ac5f41efc749527012624ff4615ff3d 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/ExperimentTypeTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/ExperimentTypeTest.java
@@ -1,9 +1,10 @@
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.main;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.type.ExperimentType;
 
 @Test(groups =
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/ProjectTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/ProjectTest.java
similarity index 78%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/ProjectTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/ProjectTest.java
index 81e57ad8d45f830a76961e7a4f07b31df50dc9b5..b11ffc657abd204b5742414f861e2ac544b75b00 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/ProjectTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/ProjectTest.java
@@ -1,9 +1,10 @@
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.main;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.type.Project;
 
 @Test(groups =
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/PropertyTypeAssignmentTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/PropertyTypeAssignmentTest.java
similarity index 94%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/PropertyTypeAssignmentTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/PropertyTypeAssignmentTest.java
index d6e4338c6bb1bc61031e717deed5d48c8a22a300..30ab5f4429371ab0a82b443397739f29ec0dfdcc 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/PropertyTypeAssignmentTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/PropertyTypeAssignmentTest.java
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.main;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.type.PropertyType;
 import ch.systemsx.cisd.openbis.uitest.type.PropertyTypeAssignment;
 import ch.systemsx.cisd.openbis.uitest.type.Sample;
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/PropertyTypeTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/PropertyTypeTest.java
similarity index 90%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/PropertyTypeTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/PropertyTypeTest.java
index 722f3034225f327bfe3a3b316fce1abee62d9ac3..c9e19480c51409e984c21222f79761c91bdf41f7 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/PropertyTypeTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/PropertyTypeTest.java
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.main;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.type.PropertyType;
 
 /**
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SampleTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/SampleTest.java
similarity index 96%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SampleTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/SampleTest.java
index e3fab77404c8bc8aca0f86e1f16729c020e6f6f3..efac6d8593221772206e1e14d9ccf06c0dbf83cd 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SampleTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/SampleTest.java
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.main;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.type.PropertyType;
 import ch.systemsx.cisd.openbis.uitest.type.Sample;
 import ch.systemsx.cisd.openbis.uitest.type.SampleType;
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SampleTypeTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/SampleTypeTest.java
similarity index 94%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SampleTypeTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/SampleTypeTest.java
index 267de63cfb2d6c96f4cd05717ff95b9974122b11..18662623aa585bb3fb504740cdaa9be679278575 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SampleTypeTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/SampleTypeTest.java
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.main;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.page.dialog.AddSampleTypeDialog;
 import ch.systemsx.cisd.openbis.uitest.type.SampleType;
 
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SpaceTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/SpaceTest.java
similarity index 84%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SpaceTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/SpaceTest.java
index 8a510a4abe5719f032739d5ecf91011c3b6a8430..4c5e88d7bd62421fee24c392b21fbd33ea033e09 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SpaceTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/SpaceTest.java
@@ -1,9 +1,10 @@
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.main;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.type.Space;
 
 @Test(groups =
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/VocabularyTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/VocabularyTest.java
similarity index 79%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/VocabularyTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/VocabularyTest.java
index bdbce6eb4abe919e8e75969dbc748c2cc2ea4a4e..5e7d349f75b9b6999b9b2a8df2d0c76fb273713b 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/VocabularyTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/main/VocabularyTest.java
@@ -1,9 +1,10 @@
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.main;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.type.Vocabulary;
 
 @Test(groups =
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SprintTest.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/sprint/SprintTest.java
similarity index 97%
rename from ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SprintTest.java
rename to ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/sprint/SprintTest.java
index 2e849172abe67fc3e43f00f2c4376e3e9e0123b6..301616cfe4d96dc3157ebf15a97c45bb9ff1d253 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/SprintTest.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/suite/sprint/SprintTest.java
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.uitest.suite;
+package ch.systemsx.cisd.openbis.uitest.suite.sprint;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 
 import org.testng.annotations.Test;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.page.dialog.AddSampleTypeDialog;
 import ch.systemsx.cisd.openbis.uitest.page.menu.AdminMenu;
 import ch.systemsx.cisd.openbis.uitest.page.menu.TopBar;
@@ -37,7 +38,7 @@ import ch.systemsx.cisd.openbis.uitest.type.Vocabulary;
  * @author anttil
  */
 @Test(groups =
-    { "login-admin" })
+    { "sprint-test" })
 public class SprintTest extends SeleniumTest
 {
 
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DropDown.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DropDown.java
index e777021d776b2886194c6900e5ee8727be38eaea..bdf3b8e17814f5e047d3961e3b972152926a88c0 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DropDown.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/DropDown.java
@@ -25,8 +25,8 @@ import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.interactions.Actions;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WidgetContext;
-import ch.systemsx.cisd.openbis.uitest.suite.SeleniumTest;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java
index 39b1d3ac33d3cade2029febf396ea86ce1d8378e..3928e57776c2a3b16f0b5e68c37f3030f299be1e 100644
--- a/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java
+++ b/ui-test/source/java/ch/systemsx/cisd/openbis/uitest/widget/Grid.java
@@ -25,10 +25,10 @@ import java.util.concurrent.TimeUnit;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 
+import ch.systemsx.cisd.openbis.uitest.infra.dsl.SeleniumTest;
 import ch.systemsx.cisd.openbis.uitest.infra.webdriver.WidgetContext;
 import ch.systemsx.cisd.openbis.uitest.page.tab.BrowserCell;
 import ch.systemsx.cisd.openbis.uitest.page.tab.BrowserRow;
-import ch.systemsx.cisd.openbis.uitest.suite.SeleniumTest;
 
 /**
  * @author anttil
diff --git a/ui-test/source/java/tests.xml b/ui-test/source/java/tests.xml
index 519f62ac4d2c95c5fd64db37b26adf201f8dabf8..d18eef456ea9bc7bef897a13477dd4564c3b0f9c 100644
--- a/ui-test/source/java/tests.xml
+++ b/ui-test/source/java/tests.xml
@@ -1,7 +1,17 @@
 <suite name="All" verbose="2" >
-  <test name="All" annotations="JDK">
+  <test name="Main" annotations="JDK">
     <packages>
-      <package name="ch.systemsx.cisd.openbis.uitest.suite.*" />
+      <package name="ch.systemsx.cisd.openbis.uitest.suite.main.*" />
+    </packages>
+  </test>
+  <test name="Sprint" annotations="JDK">
+    <packages>
+      <package name="ch.systemsx.cisd.openbis.uitest.suite.sprint.*" />
+    </packages>
+  </test>
+  <test name="Authentication" annotations="JDK">
+    <packages>
+      <package name="ch.systemsx.cisd.openbis.uitest.suite.authentication.*" />
     </packages>
   </test>
 </suite>