diff --git a/user/test/com/google/gwt/requestfactory/client/RequestFactoryExceptionHandlerTest.java b/user/test/com/google/gwt/requestfactory/client/RequestFactoryExceptionHandlerTest.java
index b05e36b..a8b9371 100644
--- a/user/test/com/google/gwt/requestfactory/client/RequestFactoryExceptionHandlerTest.java
+++ b/user/test/com/google/gwt/requestfactory/client/RequestFactoryExceptionHandlerTest.java
@@ -25,6 +25,8 @@
  */
 public class RequestFactoryExceptionHandlerTest extends RequestFactoryTest {
 
+  private static final int DELAY_TEST_FINISH = 5000;
+
   @Override
   public String getModuleName() {
     return "com.google.gwt.requestfactory.RequestFactoryExceptionHandlerTest";
@@ -32,7 +34,7 @@
 
   @Override
   public void testServerFailureCheckedException() {
-    delayTestFinish(5000);
+    delayTestFinish(DELAY_TEST_FINISH);
     SimpleFooRequest context = req.simpleFooRequest();
     SimpleFooProxy rayFoo = context.create(SimpleFooProxy.class);
     final Request<SimpleFooProxy> persistRay = context.persistAndReturnSelf().using(
@@ -46,7 +48,7 @@
 
   @Override
   public void testServerFailureRuntimeException() {
-    delayTestFinish(5000);
+    delayTestFinish(DELAY_TEST_FINISH);
     SimpleFooRequest context = req.simpleFooRequest();
     SimpleFooProxy rayFoo = context.create(SimpleFooProxy.class);
     final Request<SimpleFooProxy> persistRay = context.persistAndReturnSelf().using(
diff --git a/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java b/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
index c3fe25e..85e1cb7 100644
--- a/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
+++ b/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
@@ -172,7 +172,7 @@
     }
   }
 
-  private static final int DELAY_TEST_FINISH = 5000;
+  private static final int DELAY_TEST_FINISH = 10 * 1000;
 
   public <T extends EntityProxy> void assertContains(Collection<T> col, T value) {
     EntityProxyId<?> lookFor = value.stableId();
@@ -616,7 +616,7 @@
   }
 
   public void testFindFindEdit() {
-    delayTestFinish(5000);
+    delayTestFinish(DELAY_TEST_FINISH);
 
     final SimpleFooEventHandler<SimpleFooProxy> handler = new SimpleFooEventHandler<SimpleFooProxy>();
     EntityProxyChange.registerForProxyType(req.getEventBus(),
@@ -722,6 +722,7 @@
 
   public void testHistoryToken() {
     delayTestFinish(DELAY_TEST_FINISH);
+
     SimpleBarRequest context = simpleBarRequest();
     final SimpleBarProxy foo = context.create(SimpleBarProxy.class);
     final EntityProxyId<SimpleBarProxy> futureId = foo.stableId();
@@ -1933,6 +1934,8 @@
   }
 
   public void testServerFailureCheckedException() {
+    delayTestFinish(DELAY_TEST_FINISH);
+
     SimpleFooRequest context = simpleFooRequest();
     SimpleFooProxy newFoo = context.create(SimpleFooProxy.class);
     final Request<SimpleFooProxy> persistRequest = context.persistAndReturnSelf().using(
diff --git a/user/test/com/google/gwt/requestfactory/shared/LocatorTest.java b/user/test/com/google/gwt/requestfactory/shared/LocatorTest.java
index a321383..095f65b 100644
--- a/user/test/com/google/gwt/requestfactory/shared/LocatorTest.java
+++ b/user/test/com/google/gwt/requestfactory/shared/LocatorTest.java
@@ -88,7 +88,7 @@
   };
 
   private static final String ID = "DomainId";
-  private static final int TEST_DELAY = 500;
+  private static final int TEST_DELAY = 5000;
 
   private Factory factory;
 
