diff --git a/common.ant.xml b/common.ant.xml
index 0548bd9..37cfcce 100755
--- a/common.ant.xml
+++ b/common.ant.xml
@@ -182,7 +182,7 @@
              failureproperty="junit.failure" tempdir="@{test.out}" >
         <jvmarg line="${junit.platform.args}" />
         <jvmarg line="-Xmx768m" />
-        <sysproperty key="gwt.args" value="${junit.notheadless.arg} @{test.args} -batch module" />
+        <sysproperty key="gwt.args" value="${junit.notheadless.arg} @{test.args}" />
         <sysproperty key="java.awt.headless" value="${junit.headless}" />
         <sysproperty key="gwt.devjar" value="${gwt.dev.staging.jar}" />
         <classpath>
diff --git a/user/test/com/google/gwt/xml/client/XMLTest.java b/user/test/com/google/gwt/xml/client/XMLTest.java
index d613b1e..180bad7 100644
--- a/user/test/com/google/gwt/xml/client/XMLTest.java
+++ b/user/test/com/google/gwt/xml/client/XMLTest.java
@@ -268,12 +268,10 @@
   public void testNavigation() {
     Document d = createTestDocument();
     Element documentElement = d.getDocumentElement();
-    // TODO (amitmanjhi): investigate why these tests are failing just in batch
-    // mode for both web and hosted mode tests.
-//    assertEquals("getPreviousSibling", documentElement.getPreviousSibling(),
-//        d.getChildNodes().item(0));
-//    assertEquals("getNextSibling", documentElement.getNextSibling(),
-//        d.getChildNodes().item(2));
+    assertEquals("getPreviousSibling", documentElement.getPreviousSibling(),
+        d.getChildNodes().item(0));
+    assertEquals("getNextSibling", documentElement.getNextSibling(),
+        d.getChildNodes().item(2));
     assertEquals("getDocumentElement", documentElement, d.getChildNodes().item(
         1));
     assertEquals("getTagName", documentElement.getTagName(), "doc");
@@ -310,9 +308,7 @@
     assertEquals(top.getChildNodes().getLength(), 1);
     Comment commentNode = ns.createComment("comment ccc");
     top.replaceChild(commentNode, yyy);
-    // TODO (amitmanjhi): investigate why this test is failing just in batch
-    // mode for both web and hosted mode tests.
-    // assertEquals(top.getFirstChild(), commentNode);
+    assertEquals(top.getFirstChild(), commentNode);
     assertEquals(top.getChildNodes().getLength(), 1);
   }
 
