aboutsummaryrefslogtreecommitdiffstats
path: root/archiva-modules/archiva-web/archiva-webapp-test-js
diff options
context:
space:
mode:
authorOlivier Lamy <olamy@apache.org>2012-03-02 18:38:16 +0000
committerOlivier Lamy <olamy@apache.org>2012-03-02 18:38:16 +0000
commit6d7eb19f39bf764421d0ef0521dfd2996e97d6ee (patch)
tree56aded397d6957c619d4e8954f9df02a66fd203c /archiva-modules/archiva-web/archiva-webapp-test-js
parentc0296ed73911210d4d3c6200d5459cf0eca37971 (diff)
downloadarchiva-6d7eb19f39bf764421d0ef0521dfd2996e97d6ee.tar.gz
archiva-6d7eb19f39bf764421d0ef0521dfd2996e97d6ee.zip
use a rule to execute test and being able to capture screenshots
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1296372 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'archiva-modules/archiva-web/archiva-webapp-test-js')
-rw-r--r--archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/LoginTest.java2
-rw-r--r--archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractArchivaTest.java8
-rw-r--r--archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java18
-rw-r--r--archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ArchivaSeleniumRunner.java6
-rw-r--r--archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ScreenshotCaptureRule.java68
5 files changed, 86 insertions, 16 deletions
diff --git a/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/LoginTest.java b/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/LoginTest.java
index 0c888e03c..33b9223c1 100644
--- a/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/LoginTest.java
+++ b/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/LoginTest.java
@@ -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" );
}
diff --git a/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractArchivaTest.java b/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractArchivaTest.java
index 27b051466..b06bcb256 100644
--- a/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractArchivaTest.java
+++ b/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractArchivaTest.java
@@ -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;
diff --git a/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java b/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java
index eabe6e879..d4811606d 100644
--- a/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java
+++ b/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java
@@ -22,9 +22,9 @@ package org.apache.archiva.web.test.parent;
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 AbstractSeleniumTest
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 AbstractSeleniumTest
}
@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;
diff --git a/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ArchivaSeleniumRunner.java b/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ArchivaSeleniumRunner.java
index e3d81bbe6..a11b2d8ad 100644
--- a/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ArchivaSeleniumRunner.java
+++ b/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ArchivaSeleniumRunner.java
@@ -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 )
{
diff --git a/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ScreenshotCaptureRule.java b/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ScreenshotCaptureRule.java
new file mode 100644
index 000000000..c96bc2ca8
--- /dev/null
+++ b/archiva-modules/archiva-web/archiva-webapp-test-js/src/test/java/org/apache/archiva/web/test/tools/ScreenshotCaptureRule.java
@@ -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.
+ }
+}