keycloak-aplcache

Details

diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/page/AbstractPage.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/page/AbstractPage.java
index 7af2375..2e5836e 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/page/AbstractPage.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/page/AbstractPage.java
@@ -36,7 +36,7 @@ import org.openqa.selenium.WebDriver;
 public abstract class AbstractPage {
 
     protected final Logger log = Logger.getLogger(this.getClass());
-
+    
     private final Map<String, Object> uriParameters = new HashMap<>();
 
     @Drone
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java
index 9a1225e..22714b9 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java
@@ -59,6 +59,7 @@ import org.keycloak.testsuite.auth.page.login.OIDCLogin;
 import org.keycloak.testsuite.auth.page.login.UpdatePassword;
 import org.keycloak.testsuite.util.WaitUtils;
 import static org.keycloak.testsuite.admin.Users.setPasswordFor;
+import org.keycloak.testsuite.util.TestEventsLogger;
 
 /**
  *
@@ -119,6 +120,8 @@ public abstract class AbstractKeycloakTest {
         setDefaultPageUriParameters();
 
         driverSettings();
+        
+        TestEventsLogger.setDriver(driver);
 
         if (!suiteContext.isAdminPasswordUpdated()) {
             log.debug("updating admin password");
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/TestEventsLogger.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/TestEventsLogger.java
index aa51790..23a8138 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/TestEventsLogger.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/util/TestEventsLogger.java
@@ -14,13 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.keycloak.testsuite.util;
 
+import java.io.File;
+import java.io.IOException;
+import org.apache.commons.io.FileUtils;
 import org.jboss.logging.Logger;
 import org.junit.runner.Description;
 import org.junit.runner.notification.Failure;
 import org.junit.runner.notification.RunListener;
+import org.openqa.selenium.WebDriver;
 
 /**
  *
@@ -29,6 +32,13 @@ import org.junit.runner.notification.RunListener;
  */
 public class TestEventsLogger extends RunListener {
 
+    
+    private static WebDriver driver;
+    
+    public static void setDriver(WebDriver driver) {
+        TestEventsLogger.driver = driver;
+    }
+    
     private Logger log(Description d) {
         return Logger.getLogger(d.getClassName());
     }
@@ -45,6 +55,7 @@ public class TestEventsLogger extends RunListener {
     @Override
     public void testFailure(Failure f) throws Exception {
         Description d = f.getDescription();
+        createPageSrcFile(d);
         log(d).error(getMessage(d, "FAILED"));
     }
 
@@ -58,4 +69,11 @@ public class TestEventsLogger extends RunListener {
         log(d).info(getMessage(d, "FINISHED\n\n"));
     }
 
+    private void createPageSrcFile(Description d) throws IOException {
+        if (driver != null && driver.getPageSource() != null) {
+            String pageSourceLocation = System.getProperty("page.source.location", "target/failed-tests/page-source/");
+            FileUtils.writeStringToFile(new File(pageSourceLocation + d.getTestClass().getSimpleName() + "/" + d.getMethodName() + ".html"), 
+                    driver.getPageSource());
+        }
+    }
 }