diff --git a/src/test/java/pl/labno/bernard/htmlunified/ReRenderedJavaScriptTest.java b/src/test/java/pl/labno/bernard/htmlunified/ReRenderedJavaScriptTest.java
new file mode 100644
index 0000000..5b41565
--- /dev/null
+++ b/src/test/java/pl/labno/bernard/htmlunified/ReRenderedJavaScriptTest.java
@@ -0,0 +1,172 @@
+package pl.labno.bernard.htmlunified;
+
+import com.gargoylesoftware.htmlunit.BrowserVersion;
+import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
+import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import junit.framework.Assert;
+import junit.framework.AssertionFailedError;
+import org.junit.Test;
+
+import java.io.IOException;
+
+public class ReRenderedJavaScriptTest {
+
+ /**
+ * This test checks if results can be paginated properly.
+ * On first page there are 6 people and datascroller.
+ * After clicking page 2 the results should be re-rendered with
+ * response from ajax request. Datascroller should also be re-rendered.
+ * In order for datascroller to work the javascript that is rendered below it
+ * should be evaluated.
+ * This test fails cause HtmlUnit has problems with script elements from XHttpRequest
+ */
+ @Test(expected = AssertionFailureCaughtException.class)
+ public void testPagination() throws IOException {
+ final WebClient client = new WebClient(BrowserVersion.FIREFOX_3_6);
+ client.setAjaxController(new NicelyResynchronizingAjaxController());
+ HtmlPage page = client.getPage("http://mamywladze.pl/ludzie");
+ HtmlElement table = page.getElementById("filterForm:j_id101:j_id113_table");
+ Assert.assertNotNull(table);
+ DomNodeList cells = table.getElementsByTagName("td");
+ Assert.assertNotNull(cells);
+ Assert.assertEquals(5, cells.size());
+ /**
+ * Current page has rich-datascr-act style class.
+ */
+ String styleClass = cells.get(0).getAttribute("class");
+ Assert.assertNotNull(styleClass);
+ Assert.assertTrue("Page 1 is not the current page", styleClass.contains("rich-datascr-act"));
+ final HtmlElement cell2 = cells.get(1);
+ Assert.assertNotNull(cell2);
+ new RequestResponseLogger(client);
+ /**
+ * Now this click will trigger ajax request which response will be used to update results and datascroller.
+ */
+ cell2.click();
+ /**
+ * Notice that output of following line should contain this:
+ *
+ * Its cause HtmlScript contains 3 children in stead of 1 and HtmlScript class uses only first child
+ * Child 1:
+ * //
+ * Child 2:
+ * Event.observe('filterForm:j_id101:j_id113', 'rich:datascroller:onscroll', function(event){A4J.AJAX.Submit('_viewRoot','filterForm',event,{'ignoreDupResponses':true,'parameters':{'filterForm:j_id101:j_id113':event.memo.page} ,'eventsQueue':'filterForm:j_id101:j_id113','actionUrl':'/ludzie'} ); return false;});
+ *
+ * Child 3:
+ * //
+ *
+ * And actual part of Xhttp response was:
+ *
+ *
+ * It is fault of the parser that splits script's contents into 3 child nodes. It happends both in HtmlUnit and in FireFox. So i guess it is the nature
+ * of parser.
+ */
+ System.out.println(page.getElementById("filterForm:personList").asXml());
+ table = page.getElementById("filterForm:j_id101:j_id113_table");
+ Assert.assertNotNull(table);
+ cells = table.getElementsByTagName("td");
+ Assert.assertNotNull(cells);
+ Assert.assertEquals(6, cells.size());
+ styleClass = cells.get(2).getAttribute("class"); //If you wonder why 2 in stead of 1, it's cause there is extra cell that navigates to the start
+ Assert.assertNotNull(styleClass);
+ Assert.assertTrue("Page 2 is not the current page", styleClass.contains("rich-datascr-act"));
+
+ /**
+ * This click however will not trigger ajax request cause script that was binding appropriate event listeners was not executed.
+ * (it came from previous ajax request)
+ */
+ cells.get(1).click();
+
+ System.out.println(page.getElementById("filterForm:personList").asXml());
+ table = page.getElementById("filterForm:j_id101:j_id113_table");
+ Assert.assertNotNull(table);
+ cells = table.getElementsByTagName("td");
+ Assert.assertNotNull(cells);
+ /**
+ * This assertion should fail.
+ */
+ try {
+ Assert.assertEquals(5, cells.size());
+ } catch (AssertionFailedError e) {
+ throw new AssertionFailureCaughtException();
+ }
+ styleClass = cells.get(0).getAttribute("class");
+ Assert.assertNotNull(styleClass);
+ Assert.assertTrue("Page 2 is not the current page", styleClass.contains("rich-datascr-act"));
+ }
+
+ /**
+ * This test is the same as testPagination but should pass cause it uses my nice hack.
+ */
+ @Test
+ public void testPaginationSuccessfully() throws IOException {
+ final WebClient client = new WebClient(BrowserVersion.FIREFOX_3_6);
+ client.setAjaxController(new NicelyResynchronizingAjaxController());
+ HtmlPage page = client.getPage("http://mamywladze.pl/ludzie");
+ HtmlElement table = page.getElementById("filterForm:j_id101:j_id113_table");
+ Assert.assertNotNull(table);
+ DomNodeList cells = table.getElementsByTagName("td");
+ Assert.assertNotNull(cells);
+ Assert.assertEquals(5, cells.size());
+ /**
+ * Current page has rich-datascr-act style class.
+ */
+ String styleClass = cells.get(0).getAttribute("class");
+ Assert.assertNotNull(styleClass);
+ Assert.assertTrue("Page 1 is not the current page", styleClass.contains("rich-datascr-act"));
+ final HtmlElement cell2 = cells.get(1);
+ Assert.assertNotNull(cell2);
+ new RequestResponseLogger(client);
+ /**
+ * Now this click will trigger ajax request which response will be used to update results and datascroller.
+ */
+ cell2.click();
+
+ System.out.println(page.getElementById("filterForm:personList").asXml());
+ table = page.getElementById("filterForm:j_id101:j_id113_table");
+ Assert.assertNotNull(table);
+ cells = table.getElementsByTagName("td");
+ Assert.assertNotNull(cells);
+ Assert.assertEquals(6, cells.size());
+ styleClass = cells.get(2).getAttribute("class"); //If you wonder why 2 in stead of 1, it's cause there is extra cell that navigates to the start
+ Assert.assertNotNull(styleClass);
+ Assert.assertTrue("Page 2 is not the current page", styleClass.contains("rich-datascr-act"));
+
+ /**
+ * This click however will not trigger ajax request cause script that was binding appropriate event listeners was not executed.
+ * (it came from previous ajax request)
+ */
+ cells.get(1).click();
+
+ /**
+ * Here is the hack.
+ */
+ WebClientUtils.executeAjaxReRenderedScripts(page);
+
+ System.out.println(page.getElementById("filterForm:personList").asXml());
+ table = page.getElementById("filterForm:j_id101:j_id113_table");
+ Assert.assertNotNull(table);
+ cells = table.getElementsByTagName("td");
+ Assert.assertNotNull(cells);
+ /**
+ * This time the assertion should be ok
+ */
+ Assert.assertEquals(5, cells.size());
+ styleClass = cells.get(0).getAttribute("class");
+ Assert.assertNotNull(styleClass);
+ Assert.assertTrue("Page 2 is not the current page", styleClass.contains("rich-datascr-act"));
+ }
+
+ public class AssertionFailureCaughtException extends RuntimeException {
+ }
+}