You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/03/02 19:38:16 UTC

svn commit: r1296372 - in /archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test: ./ parent/ tools/

Author: olamy
Date: Fri Mar  2 18:38:16 2012
New Revision: 1296372

URL: http://svn.apache.org/viewvc?rev=1296372&view=rev
Log:
use a rule to execute test and being able to capture screenshots

Added:
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ScreenshotCaptureRule.java   (with props)
Modified:
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/LoginTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractArchivaTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ArchivaSeleniumRunner.java

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/LoginTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/LoginTest.java?rev=1296372&r1=1296371&r2=1296372&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/LoginTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/LoginTest.java Fri Mar  2 18:38:16 2012
@@ -40,7 +40,7 @@ public class LoginTest
         goToLoginPage();
         setFieldValue( "user-login-form-username", "badUsername" );
         clickLinkWithLocator( "modal-login-ok", true );
-        assertTextPresent( "This field is required." );
+        assertTextPresent( "This field is required.f" );
 
     }
 

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractArchivaTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractArchivaTest.java?rev=1296372&r1=1296371&r2=1296372&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractArchivaTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractArchivaTest.java Fri Mar  2 18:38:16 2012
@@ -1,8 +1,9 @@
 package org.apache.archiva.web.test.parent;
 
-import org.apache.archiva.web.test.tools.ArchivaSeleniumRunner;
-import org.junit.Before;
+import org.apache.archiva.web.test.tools.ScreenshotCaptureRule;
+import org.junit.Rule;
 import org.junit.runner.RunWith;
+import org.junit.runners.BlockJUnit4ClassRunner;
 
 import java.io.File;
 import java.io.IOException;
@@ -26,10 +27,11 @@ import java.io.IOException;
  * under the License.
  */
 
-@RunWith( ArchivaSeleniumRunner.class )
+@RunWith( BlockJUnit4ClassRunner.class )
 public abstract class AbstractArchivaTest
     extends AbstractSeleniumTest
 {
+
     protected String username;
 
     protected String fullname;

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java?rev=1296372&r1=1296371&r2=1296372&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java Fri Mar  2 18:38:16 2012
@@ -22,9 +22,9 @@ package org.apache.archiva.web.test.pare
 import com.thoughtworks.selenium.DefaultSelenium;
 import com.thoughtworks.selenium.Selenium;
 import org.apache.archiva.web.test.tools.AfterSeleniumFailure;
-import org.junit.After;
+import org.apache.archiva.web.test.tools.ScreenshotCaptureRule;
 import org.junit.Assert;
-import org.junit.Before;
+import org.junit.Rule;
 
 import java.io.File;
 import java.text.SimpleDateFormat;
@@ -43,6 +43,10 @@ import java.util.Properties;
 
 public abstract class AbstractSeleniumTest
 {
+
+    @Rule
+    public ScreenshotCaptureRule screenshotCaptureRule = new ScreenshotCaptureRule();
+
     public String browser = System.getProperty( "browser" );
 
     public String baseUrl = System.getProperty( "baseUrl" );
@@ -57,22 +61,20 @@ public abstract class AbstractSeleniumTe
 
     public Properties p;
 
-    @Before
     public void open()
         throws Exception
     {
         p = new Properties();
         p.load( this.getClass().getClassLoader().getResourceAsStream( "test.properties" ) );
         open( baseUrl, browser, seleniumHost, seleniumPort, maxWaitTimeInMs );
+        screenshotCaptureRule.selenium = selenium;
         assertAdminCreated();
     }
 
     /**
      * Close selenium session.
      */
-    @After
     public void close()
-        throws Exception
     {
         if ( getSelenium() != null )
         {
@@ -645,27 +647,23 @@ public abstract class AbstractSeleniumTe
     }
 
     @AfterSeleniumFailure
-    public void captureScreenShotOnFailure( Throwable failure )
+    public void captureScreenShotOnFailure( Throwable failure, String methodName, String className )
     {
         SimpleDateFormat sdf = new SimpleDateFormat( "yyyy.MM.dd-HH_mm_ss" );
         String time = sdf.format( new Date() );
         File targetPath = new File( "target", "screenshots" );
-        String cName = this.getClass().getName();
 
-        String methodName = "";
         int lineNumber = 0;
 
         for ( StackTraceElement stackTrace : failure.getStackTrace() )
         {
             if ( stackTrace.getClassName().equals( this.getClass().getName() ) )
             {
-                methodName = stackTrace.getMethodName();
                 lineNumber = stackTrace.getLineNumber();
                 break;
             }
         }
 
-        String className = cName.substring( cName.lastIndexOf( '.' ) + 1 );
         targetPath.mkdirs();
         Selenium selenium = getSelenium();
         String fileBaseName = methodName + "_" + className + ".java_" + lineNumber + "-" + time;

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ArchivaSeleniumRunner.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ArchivaSeleniumRunner.java?rev=1296372&r1=1296371&r2=1296372&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ArchivaSeleniumRunner.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ArchivaSeleniumRunner.java Fri Mar  2 18:38:16 2012
@@ -42,9 +42,11 @@ public class ArchivaSeleniumRunner
         super( clazz );
     }
 
+
+
     /*
-     * FIXME move that to a Rule.
-     */
+    * FIXME move that to a Rule.
+    */
     @Override
     protected Statement withAfters( FrameworkMethod method, Object target, Statement statement )
     {

Added: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ScreenshotCaptureRule.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ScreenshotCaptureRule.java?rev=1296372&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ScreenshotCaptureRule.java (added)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ScreenshotCaptureRule.java Fri Mar  2 18:38:16 2012
@@ -0,0 +1,68 @@
+package org.apache.archiva.web.test.tools;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import com.thoughtworks.selenium.Selenium;
+import org.apache.archiva.web.test.parent.AbstractSeleniumTest;
+import org.junit.rules.MethodRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.FrameworkMethod;
+import org.junit.runners.model.Statement;
+
+/**
+ * @author Olivier Lamy
+ */
+public class ScreenshotCaptureRule
+    implements MethodRule //TestRule
+{
+
+    public Selenium selenium;
+
+    public Statement apply( Statement base, FrameworkMethod method, Object target )
+    {
+        try
+        {
+            ( (AbstractSeleniumTest) target ).open();
+            method.getMethod().invoke( target );
+        }
+        catch ( Throwable e )
+        {
+            ( (AbstractSeleniumTest) target ).captureScreenShotOnFailure( e, method.getMethod().getName(),
+                                                                          target.getClass().getName() );
+        }
+        finally
+        {
+            ( (AbstractSeleniumTest) target ).close();
+        }
+        return new Statement()
+        {
+            @Override
+            public void evaluate()
+                throws Throwable
+            {
+                // no op
+            }
+        };
+    }
+
+    public Statement apply( Statement base, Description description )
+    {
+        return base;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+}

Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ScreenshotCaptureRule.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ScreenshotCaptureRule.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision