You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ws...@apache.org on 2009/06/18 06:06:33 UTC

svn commit: r785892 - in /archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test: resources/ testng/config/ testng/org/apache/archiva/web/test/ testng/org/apache/archiva/web/test/parent/

Author: wsmoak
Date: Thu Jun 18 04:06:33 2009
New Revision: 785892

URL: http://svn.apache.org/viewvc?rev=785892&view=rev
Log:
[MRM-1164] Add Selenium tests for virtual repositories and capture screen shots of failing tests.
Submitted by: Marecor Baclay 

Added:
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/VirtualRepositoryTest.java
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractRepositoryTest.java
Modified:
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/resources/testng.properties
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/config/testng.xml
    archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/resources/testng.properties
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/resources/testng.properties?rev=785892&r1=785891&r2=785892&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/resources/testng.properties (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/resources/testng.properties Thu Jun 18 04:06:33 2009
@@ -76,5 +76,23 @@
 VERSION1=1.0
 PACKAGING1=jar
 ARTIFACTFILEPATH1=test
-# /home/cora/Documents/MAESTRO/installers/maestro-2.1.1/project-server/core/activation-1.1.jar
 REPOSITORYID1=internal
+
+# REPOSITORIES
+# Manage Repositories
+MANAGED_IDENTIFIER=testing1
+MANAGED_NAME=Testing Managed Repository
+MANAGED_DIRECTORY=
+MANAGED_INDEX_DIRECTORY=
+MANAGED_TYPE=
+MANAGED_CRON=
+MANAGED_REPOPURGE_DAYSOLDERTHAN=
+MANAGED_REPOPURGE_RETENTIONCOUNT=
+
+# Network Proxies
+NETWORKPROXY_IDENTIFIER=networkproxytest
+NETWORKPROXY_PROTOCOL=http
+NETWORKPROXY_HOSTNAME=
+NETWORKPROXY_PORT=8080
+NETWORKPROXY_USERNAME=admin
+NETWORKPROXY_PASSWORD=admin123

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/config/testng.xml
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/config/testng.xml?rev=785892&r1=785891&r2=785892&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/config/testng.xml (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/config/testng.xml Thu Jun 18 04:06:33 2009
@@ -39,6 +39,8 @@
 				<include name= "search" />
 				<include name= "browse" />
 				<include name= "reports" />
+				<include name= "virtualrepository" />
+				<include name= "proxyconnectors" />
 			</run>
 		</groups>
 		<packages>

Added: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/VirtualRepositoryTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/VirtualRepositoryTest.java?rev=785892&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/VirtualRepositoryTest.java (added)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/VirtualRepositoryTest.java Thu Jun 18 04:06:33 2009
@@ -0,0 +1,54 @@
+package org.apache.archiva.web.test;
+
+import org.apache.archiva.web.test.parent.AbstractRepositoryTest;
+import org.testng.annotations.Test;
+
+@Test( groups = { "virtualrepository" }, dependsOnMethods = { "testWithCorrectUsernamePassword" } )
+public class VirtualRepositoryTest 
+	extends AbstractRepositoryTest
+{
+	public void testAddRepositoryNullValue()
+	{
+		addRepositoryGroup( " " );
+		assertTextPresent( "Identifier field is required." );
+	}
+	
+	@Test(dependsOnMethods = { "testWithCorrectUsernamePassword" } )
+	public void testAddRepositoryValidValue()
+	{
+		addRepositoryGroup( "testing" );
+		//assertAddedRepositoryLink( "testing" );
+		assertTextPresent( "testing" );
+	}
+	
+	//@Test(dependsOnMethods = { "testAddRepositoryValidValue" } )
+	public void testAddRepositoryToRepositoryGroup()
+	{
+		addRepositoryToRepositoryGroup( "testing", "internal" );
+		assertTextPresent( "internal" );
+		//clickLinkWithXPath( "/html/body/div[4]/div/div/div[2]/div/div/p[2]/a" );
+		//getSelenium().goBack();
+	}
+	
+	@Test(dependsOnMethods = { "testAddRepositoryToRepositoryGroup" } )
+	public void testDeleteRepositoryOfRepositoryGroup()
+	{
+		deleteRepositoryInRepositoryGroups();
+		assertTextPresent( "Repository Groups" );
+		assertTextNotPresent( "No Repository Groups Defined." );
+	}
+	
+	@Test(dependsOnMethods = { "testDeleteRepositoryOfRepositoryGroup" } )
+	public void testDeleteRepositoryGroup()
+	{
+		deleteRepositoryGroup( "testing" );
+		assertTextPresent( "No Repository Groups Defined." );
+	}
+	
+	/*@Test(dependsOnMethods = { "testAddRepositoryToRepositoryGroup" } )
+	public void testCheckRepositoryGroup()
+	{
+		clickLinkWithXPath( "/html/body/div[4]/div/div/div[2]/div/div/p[2]/a" );
+		getSelenium().goBack();
+	}*/
+}

Added: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractRepositoryTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractRepositoryTest.java?rev=785892&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractRepositoryTest.java (added)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractRepositoryTest.java Thu Jun 18 04:06:33 2009
@@ -0,0 +1,318 @@
+package org.apache.archiva.web.test.parent;
+
+public abstract class AbstractRepositoryTest 
+	extends AbstractArchivaTest
+{
+	// Repository Groups
+	public void goToRepositoryGroupsPage()
+	{
+		clickLinkWithText( "Repository Groups" );
+		assertRepositoryGroupsPage();
+	}
+	
+	public void assertRepositoryGroupsPage()
+	{
+		assertPage( "Apache Archiva \\ Administration - Repository Groups" );
+		assertTextPresent( "Administration - Repository Groups" );
+		assertTextPresent( "Identifier*:" );
+		assertElementPresent( "repositoryGroup.id" );
+		assertButtonWithValuePresent( "Add Group" );
+		assertTextPresent( "Repository Groups" );
+	}
+	
+	public void assertAddedRepositoryLink( String repositoryGroupName)
+	{
+		assertPage( "Apache Archiva \\ Administration - Repository Groups" );
+		String repositoryGroupUrlValue = "repository/" + repositoryGroupName + "/";
+		String baseUrlValue = "archiva";
+		String repositoryGroupLink = baseUrl.replaceFirst( baseUrlValue, repositoryGroupUrlValue);
+		assertTextPresent( repositoryGroupLink );
+	}
+	
+	public void assertAddedRepositoryToRepositoryGroups( String repositoryName)
+	{
+		assertPage( "Apache Archiva \\ Administration - Repository Groups" );
+		assertTextPresent( repositoryName );
+		assertTextPresent( "Archiva Managed Internal Repository" );
+		assertAddedRepositoryLink( repositoryName );
+	}
+	
+	public void assertDeleteRepositoryGroupPage( String repositoryName)
+	{
+		assertPage( "Apache Archiva \\ Admin: Delete Repository Group" );
+		assertTextPresent( "WARNING: This operation can not be undone." );
+		assertTextPresent( "Are you sure you want to delete the following repository group?" );
+		assertTextPresent( "ID: " + repositoryName );
+		assertButtonWithValuePresent( "Confirm" );
+		assertButtonWithValuePresent( "Cancel" );
+	}
+	
+	public void addRepositoryGroup( String repoGroupName )
+	{
+		goToRepositoryGroupsPage();
+		setFieldValue( "repositoryGroup.id", repoGroupName );
+		clickButtonWithValue( "Add Group" );
+	}
+	
+	public void addRepositoryToRepositoryGroup( String repositoryGroupName, String repositoryName )
+	{
+		goToRepositoryGroupsPage();
+		String s = getSelenium().getBodyText();
+		if ( s.contains( "No Repository Groups Defined." ) )
+		{
+			setFieldValue( "repositoryGroup.id" , repositoryGroupName );
+			clickButtonWithValue( "Add Group" );
+			//assertAddedRepositoryLink( repositoryGroupName );
+			
+			selectValue( "addRepositoryToGroup_repoId" , repositoryName );
+			clickButtonWithValue( "Add Repository" );
+			assertAddedRepositoryToRepositoryGroups( repositoryName );
+		}
+		else
+		{
+			//assertAddedRepositoryLink( repositoryGroupName );
+			selectValue( "addRepositoryToGroup_repoId" , repositoryName );
+			clickButtonWithValue( "Add Repository" );
+		}
+	}
+	
+	public void deleteRepositoryInRepositoryGroups()
+	{
+		getSelenium().click( "xpath=//div[@id='contentArea']/div[2]/div/div[3]/div[1]/a/img" );
+	}
+	
+	public void deleteRepositoryGroup( String repositoryName )
+	{
+		//goToRepositoryGroupsPage();
+		getSelenium().click( "xpath=//div[@id='contentArea']/div[2]/div/div[1]/div/a/img" );
+		waitPage();
+		assertDeleteRepositoryGroupPage( repositoryName );
+		clickButtonWithValue( "Confirm" );
+	}
+	
+	///////////////////////////////
+	// proxy connectors
+	///////////////////////////////
+	public void goToProxyConnectorsPage()
+	{
+		clickLinkWithText( "Proxy Connectors" );
+		assertProxyConnectorsPage();
+	}
+	
+	public void assertProxyConnectorsPage()
+	{
+		assertPage( "Apache Archiva \\ Administration - Proxy Connectors" );
+		assertTextPresent( "Administration - Proxy Connectors" );
+		assertTextPresent( "Repository Proxy Connectors" );
+		assertTextPresent( "internal" );
+		assertTextPresent( "Archiva Managed Internal Repository" );
+		assertTextPresent( "Proxy Connector" );
+		assertTextPresent( "Central Repository" );
+		assertTextPresent( "Java.net Repository for Maven 2" );
+	}
+	
+	public void assertAddProxyConnectorPage()
+	{
+		assertPage( "Apache Archiva \\ Admin: Add Proxy Connector" );
+		assertTextPresent( "Admin: Add Proxy Connector" );
+		String proxy = "Network Proxy*:,Managed Repository*:,Remote Repository*:,Policies:,Return error when:,On remote error:,Releases:,Snapshots:,Checksum:,Cache failures:,Properties:,No properties have been set.,Black List:,No black list patterns have been set.,White List:,No white list patterns have been set.";
+		String[] arrayProxy = proxy.split( "," );
+		for ( String arrayproxy : arrayProxy )
+			assertTextPresent( arrayproxy );
+		/*String proxyElements = "addProxyConnector_connector_proxyId,addProxyConnector_connector_sourceRepoId,addProxyConnector_connector_targetRepoId,policy_propagate-errors-on-update,policy_propagate-errors,policy_releases,policy_snapshots,policy_checksum,policy_cache-failures,propertiesEntry,propertiesValue,blackListEntry,whiteListEntry";
+		String[] arrayProxyElements = proxyElements.split( "," );
+		for ( String arrayproxyelements : arrayProxyElements )
+			assertTextPresent( arrayproxyelements );*/
+		assertButtonWithValuePresent( "Add Property" );
+		assertButtonWithValuePresent( "Add Pattern" );
+		assertButtonWithValuePresent( "Add Proxy Connector" );
+	}
+	
+	// this only fills in the values of required fields in adding Proxy Connectors
+	public void addProxyConnector( String networkProxy, String managedRepo, String remoteRepo )
+	{
+		goToProxyConnectorsPage();
+		clickLinkWithText( "Add" );
+		assertAddProxyConnectorPage();
+		selectValue( "connector.proxyId" , networkProxy );
+		selectValue( "connector.sourceRepoId" , managedRepo );
+		selectValue( "connector.targetRepoId" , remoteRepo );
+	}
+	
+	public void deleteProxyConnector()
+	{
+		goToProxyConnectorsPage();
+		clickLinkWithXPath( "//div[@id='contentArea']/div[2]/div[1]/div[2]/div[1]/a[3]/img" );
+		assertPage( "Apache Archiva \\ Admin: Delete Proxy Connectors" );
+		clickButtonWithValue( "Delete" );
+		assertPage( "Apache Archiva \\ Administration - Proxy Connectors" );
+	}
+	
+	///////////////////////////////
+	// network proxies
+	///////////////////////////////
+	public void goToNetworkProxiesPage()
+	{
+		clickLinkWithText( "Network Proxies" );
+		assertNetworkProxiesPage();
+	}
+	
+	public void assertNetworkProxiesPage()
+	{
+		assertPage( "Apache Archiva \\ Administration - Network Proxies" );
+		assertTextPresent( "Administration - Network Proxies" );
+		assertTextPresent( "Network Proxies" );
+		assertLinkPresent( "Add Network Proxy" );
+	}
+	
+	public void assertAddNetworkProxy()
+	{
+		assertPage( "Apache Archiva \\ Admin: Add Network Proxy" );
+		assertTextPresent( "Admin: Add Network Proxy" );
+		assertTextPresent( "Add network proxy:" );
+		assertTextPresent( "Identifier*:" );
+		assertTextPresent( "Protocol*:" );
+		assertTextPresent( "Hostname*:" );
+		assertTextPresent( "Port*:" );
+		assertTextPresent( "Username:" );
+		assertTextPresent( "Password:" );
+		assertButtonWithValuePresent( "Save Network Proxy" );
+	}
+	
+	public void addNetworkProxyWithAccount( String identifier, String protocol, String hostname, String port, String username, String password )
+	{
+		goToNetworkProxiesPage();
+		clickLinkWithText( "Add Network Proxy" );
+		assertAddNetworkProxy();
+		setFieldValue( "proxy.id" , identifier );
+		setFieldValue( "proxy.protocol" , protocol );
+		setFieldValue( "proxy.host" , hostname );
+		setFieldValue( "proxy.port" , port );
+		setFieldValue( "proxy.username" , username );
+		setFieldValue( "proxy.password" , password );
+		clickButtonWithValue( "Save Network Proxy" );
+	}
+	
+	public void editNetworkProxies( String fieldName, String value)
+	{
+		goToNetworkProxiesPage();
+		clickLinkWithText( "Edit Network Proxy" );
+		setFieldValue( fieldName, value);
+		clickButtonWithValue( "Save Network Proxy" );
+	}
+	
+	public void deleteNetworkProxy()
+	{
+		goToNetworkProxiesPage();
+		clickLinkWithText( "Delete Network Proxy" );
+		assertPage( "Apache Archiva \\ Admin: Delete Network Proxy" );
+		clickButtonWithValue( "Delete" );
+	}
+	
+	///////////////////////////////
+	// repositories
+	///////////////////////////////
+	public void goToRepositoriesPage()
+	{
+		clickLinkWithText( "Repositories" );
+		assertRepositoriesPage();
+	}
+	
+	public void assertRepositoriesPage()
+	{
+		assertPage( "Apache Archiva \\ Administration - Repositories" );
+		assertTextPresent( "Administration - Repositories" );
+		assertTextPresent( "Managed Repositories" );
+		assertTextPresent( "Remote Repositories" );
+	}
+	
+	// remote repositories
+	public void assertAddRemoteRepository()
+	{
+		assertPage( "Apache Archiva \\ Admin: Add Remote Repository" );
+		String remote = "Identifier*:,Name*:,URL*:,Username:,Password:,Timeout in seconds:,Type:";
+		String[] arrayRemote = remote.split( "," );
+		for ( String arrayremote : arrayRemote )
+			assertTextPresent( arrayremote );
+		String remoteElements = "addRemoteRepository_repository_id,addRemoteRepository_repository_name,addRemoteRepository_repository_url,addRemoteRepository_repository_username,addRemoteRepository_repository_password,addRemoteRepository_repository_timeout,addRemoteRepository_repository_layout";
+		String[] arrayRemoteElements = remoteElements.split( "," );
+		for ( String arrayremotelement : arrayRemoteElements )
+			assertElementPresent( arrayremotelement );
+	}
+	
+	public void assertDeleteRemoteRepositoryPage()
+	{
+		assertPage( "Apache Archiva \\ Admin: Delete Remote Repository" );
+		assertTextPresent( "Admin: Delete Remote Repository" );
+		assertTextPresent( "WARNING: This operation can not be undone." );
+		assertTextPresent( "Are you sure you want to delete the following remote repository?" );
+		assertButtonWithValuePresent( "Confirm" );
+		assertButtonWithValuePresent( "Cancel" );
+	}
+	
+	public void addRemoteRepository( String identifier, String name, String url, String username, String password, String timeout, String type )
+	{
+			goToRepositoriesPage();
+			clickLinkWithXPath( "//div[@id='contentArea']/div/div[4]/a" );
+			assertAddRemoteRepository();
+			setFieldValue( "addRemoteRepository_repository_id" ,  identifier );
+			setFieldValue( "addRemoteRepository_repository_name" , name );
+			setFieldValue( "addRemoteRepository_repository_url" , url );
+			setFieldValue( "addRemoteRepository_repository_username" , username );
+			setFieldValue( "addRemoteRepository_repository_password" , password );
+			setFieldValue( "addRemoteRepository_repository_timeout" , timeout );
+			selectValue( "addRemoteRepository_repository_layout" , type );
+			clickButtonWithValue( "Add Repository" );
+	}
+	
+	public void deleteRemoteRepository()
+	{
+		goToRepositoriesPage();
+		clickLinkWithXPath( "//div[@id='contentArea']/div/div[8]/div[1]/a[2]" );
+		assertDeleteRemoteRepositoryPage();
+		clickButtonWithValue( "Confirm" );
+	}
+	
+	public void editRemoteRepository( String fieldName, String value)
+	{
+		goToRepositoriesPage();
+		clickLinkWithXPath( "//div[@id='contentArea']/div/div[8]/div[1]/a[1]" );
+		setFieldValue( fieldName, value );
+		clickButtonWithValue( "Update Repository" );
+	}
+	
+	// managed repositories
+	public void addManagedRepository( String identifier, String name, String directory, String indexDirectory, String type, String cron, String daysOlder, String retentionCount )
+	{
+		goToRepositoriesPage();
+		clickLinkWithText( "Add" );
+		setFieldValue( "repository.id" , identifier );
+		setFieldValue( "repository.name" , name );
+		setFieldValue( "repository.location" , directory );
+		setFieldValue( "repository.indexDir" , indexDirectory );
+		selectValue( "repository.layout", type );
+		setFieldValue( "repository.refreshCronExpression" , cron );
+		setFieldValue( "repository.daysOlder" , daysOlder );
+		setFieldValue( "repository.retentionCount" , retentionCount );
+		//TODO	
+		clickButtonWithValue( "Add Repository" );
+	}
+	
+	public void editManagedRepository( String fieldName, String value )
+	{
+		goToRepositoriesPage();
+		clickLinkWithXPath( "//div[@id='contentArea']/div/div[4]/div[1]/a[1]/img" );
+		assertPage( "Apache Archiva \\ Admin: Edit Managed Repository" );
+		setFieldValue(fieldName, value);
+		//TODO
+		clickButtonWithValue( "Update Repository" );
+	}
+	
+	public void deleteManagedRepository()
+	{
+		goToRepositoriesPage();
+		clickLinkWithXPath( "//div[@id='contentArea']/div/div[4]/div[1]/a[2]" );
+		assertPage( "Apache Archiva \\ Admin: Delete Managed Repository" );
+		clickButtonWithValue( "Delete Configuration Only" );
+	}	
+}
\ No newline at end of file

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java?rev=785892&r1=785891&r2=785892&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractSeleniumTest.java Thu Jun 18 04:06:33 2009
@@ -19,7 +19,9 @@
  * under the License.
  */
 
+import java.io.File;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -91,15 +93,43 @@
 	// Auxiliar methods. This method help us and simplify test.
 	// *******************************************************
 	
+	public void captureScreenshot()
+	{
+		Date t = new Date();
+		File f = new File( "" );
+		String baseDir = f.getAbsolutePath();
+		String time = t.toString();
+		getSelenium().windowMaximize();
+		getSelenium().windowFocus();
+		getSelenium().captureScreenshot( baseDir + "/target/screenshots/" + getClass() + "-" + time + ".png" );
+	}
+	    
 	public void assertFieldValue( String fieldValue, String fieldName )
 	{
-	    assertElementPresent( fieldName );
-	    Assert.assertEquals( fieldValue, getSelenium().getValue( fieldName ) );
+		try 
+		{
+			assertElementPresent( fieldName );
+			Assert.assertEquals( fieldValue, getSelenium().getValue( fieldName ) );
+		}
+		catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			assertElementPresent( fieldName );
+			Assert.assertEquals( fieldValue, getSelenium().getValue( fieldName ) );
+		}
 	}
 	
 	public void assertPage( String title )
 	{
-	    Assert.assertEquals( getSelenium().getTitle(), title );
+	    try 
+	    {
+			Assert.assertEquals( getSelenium().getTitle(), title );
+		} 
+	    catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			Assert.assertEquals( getSelenium().getTitle(), title );
+		}
 	}
 	
 	public String getTitle()
@@ -114,37 +144,93 @@
 	
 	public void assertTextPresent( String text )
 	{
-	    Assert.assertTrue( getSelenium().isTextPresent( text ), "'" + text + "' isn't present." );
+		try
+		{
+			Assert.assertTrue( getSelenium().isTextPresent( text ), "'" + text + "' isn't present." );
+		}
+		catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			Assert.assertTrue( getSelenium().isTextPresent( text ), "'" + text + "' isn't present." );
+		}
 	}
 	
 	public void assertTextNotPresent( String text )
 	{
-	    Assert.assertFalse( getSelenium().isTextPresent( text ), "'" + text + "' is present." );
+		try 
+	    {
+			Assert.assertFalse( getSelenium().isTextPresent( text ), "'" + text + "' is present." );
+		} 
+	    catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			Assert.assertFalse( getSelenium().isTextPresent( text ), "'" + text + "' is present." );
+		}
 	}
 	
 	public void assertElementPresent( String elementLocator )
 	{
-	    Assert.assertTrue( isElementPresent( elementLocator ), "'" + elementLocator + "' isn't present." );
+	    try 
+	    {
+			Assert.assertTrue( isElementPresent( elementLocator ), "'" + elementLocator + "' isn't present." );
+		} 
+	    catch ( java.lang.AssertionError e)
+	    {
+	    	captureScreenshot();
+	    	Assert.assertTrue( isElementPresent( elementLocator ), "'" + elementLocator + "' isn't present." );
+		}
 	}
 	
 	public void assertElementNotPresent( String elementLocator )
 	{
-	    Assert.assertFalse( isElementPresent( elementLocator ), "'" + elementLocator + "' is present." );
+	    try 
+	    {
+			Assert.assertFalse( isElementPresent( elementLocator ), "'" + elementLocator + "' is present." );
+		} 
+	    catch ( java.lang.AssertionError e) 
+	    {
+	    	captureScreenshot();
+	    	Assert.assertFalse( isElementPresent( elementLocator ), "'" + elementLocator + "' is present." );
+		}
 	}
 	
 	public void assertLinkPresent( String text )
 	{
-		Assert.assertTrue( isElementPresent( "link=" + text ), "The link '" + text + "' isî't present." );
+		try 
+		{
+			Assert.assertTrue( isElementPresent( "link=" + text ), "The link '" + text + "' isî't present." );
+		} 
+		catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			Assert.assertTrue( isElementPresent( "link=" + text ), "The link '" + text + "' isî't present." );
+		}
 	}
 	
 	public void assertLinkNotPresent( String text )
 	{
-		Assert.assertFalse( isElementPresent( "link=" + text ), "The link('" + text + "' is present." );
+		try 
+		{
+			Assert.assertFalse( isElementPresent( "link=" + text ), "The link('" + text + "' is present." );
+		} 
+		catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			Assert.assertFalse( isElementPresent( "link=" + text ), "The link('" + text + "' is present." );
+		}
 	}
 	
 	public void assertImgWithAlt( String alt )
 	{
-	    assertElementPresent( "/¯img[@alt='" + alt + "']" );
+	    try 
+	    {
+			assertElementPresent( "/¯img[@alt='" + alt + "']" );
+		} 
+	    catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			assertElementPresent( "/¯img[@alt='" + alt + "']" );
+		}
 	}
 	
 	public void assertImgWithAltAtRowCol( boolean isALink, String alt, int row, int column )
@@ -153,12 +239,28 @@
 	    locator += isALink ? "a/" : "";
 	    locator += "img[@alt='" + alt + "']";
 	
-	    assertElementPresent( locator );
+	    try 
+	    {
+			assertElementPresent( locator );
+		} 
+	    catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			assertElementPresent( locator );
+		}
 	}
 	
 	public void assertCellValueFromTable( String expected, String tableElement, int row, int column )
 	{
-	    Assert.assertEquals( expected, getCellValueFromTable( tableElement, row, column ) );
+	    try 
+	    {
+			Assert.assertEquals( expected, getCellValueFromTable( tableElement, row, column ) );
+		} 
+	    catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			Assert.assertEquals( expected, getCellValueFromTable( tableElement, row, column ) );
+		}
 	}
 	
 	public boolean isTextPresent( String text )
@@ -219,17 +321,41 @@
 	
 	public void assertButtonWithValuePresent( String text )
 	{
-	    Assert.assertTrue( isButtonWithValuePresent( text ), "'" + text + "' button isn't present" );
+	    try 
+	    {
+			Assert.assertTrue( isButtonWithValuePresent( text ), "'" + text + "' button isn't present" );
+		} 
+	    catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			Assert.assertTrue( isButtonWithValuePresent( text ), "'" + text + "' button isn't present" );
+		}
 	}
 	
 	public void assertButtonWithIdPresent( String id )
 	{
-	    Assert.assertTrue( isButtonWithIdPresent( id ), "'Button with id =" + id + "' isn't present" );
+	    try 
+	    {
+			Assert.assertTrue( isButtonWithIdPresent( id ), "'Button with id =" + id + "' isn't present" );
+		} 
+	    catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			Assert.assertTrue( isButtonWithIdPresent( id ), "'Button with id =" + id + "' isn't present" );
+		}
 	}
 	
 	public void assertButtonWithValueNotPresent( String text )
 	{
-	    Assert.assertFalse( isButtonWithValuePresent( text ), "'" + text + "' button is present" );
+	    try 
+	    {
+			Assert.assertFalse( isButtonWithValuePresent( text ), "'" + text + "' button is present" );
+		} 
+	    catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			Assert.assertFalse( isButtonWithValuePresent( text ), "'" + text + "' button is present" );
+		}
 	}
 	
 	public boolean isButtonWithValuePresent( String text )
@@ -346,12 +472,28 @@
 	
 	public void assertIsChecked( String locator )
 	{
-	    Assert.assertTrue( getSelenium().isChecked( locator ) );
+	    try 
+	    {
+			Assert.assertTrue( getSelenium().isChecked( locator ) );
+		} 
+	    catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			Assert.assertTrue( getSelenium().isChecked( locator ) );
+		}
 	}
 	
 	public void assertIsNotChecked( String locator )
 	{
-	    Assert.assertFalse( getSelenium().isChecked( locator ) );
+	    try 
+	    {
+			Assert.assertFalse( getSelenium().isChecked( locator ) );
+		} 
+	    catch ( java.lang.AssertionError e) 
+		{
+			captureScreenshot();
+			Assert.assertFalse( getSelenium().isChecked( locator ) );
+		}
 	}
 	    
 }
\ No newline at end of file