Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/ImmediateModeTests.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/ImmediateModeTests.java?rev=1087494&r1=1087493&r2=1087494&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/ImmediateModeTests.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/ImmediateModeTests.java
 Thu Mar 31 23:16:01 2011
@@ -1,4 +1,4 @@
-// Copyright 2008 The Apache Software Foundation
+// Copyright 2008, 2011 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -27,7 +27,7 @@ public class ImmediateModeTests extends 
     @Test
     public void action_link()
     {
-        clickThru("here");
+        openLinks("here");
 
         assertTextSeries("//dd[%d]", 1, "onActivate() invoked", "automatic 
value");
 

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app6/CutomAppPackageIntegrationTests.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app6/CutomAppPackageIntegrationTests.java?rev=1087494&r1=1087493&r2=1087494&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app6/CutomAppPackageIntegrationTests.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app6/CutomAppPackageIntegrationTests.java
 Thu Mar 31 23:16:01 2011
@@ -1,10 +1,10 @@
-// Copyright 2009 The Apache Software Foundation
+// Copyright 2009, 2011 The Apache Software Foundation
 //
 // Licensed 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
+// 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,
@@ -23,14 +23,13 @@ import org.testng.annotations.Test;
 public class CutomAppPackageIntegrationTests extends TapestryCoreTestCase
 {
 
-
     /** TAP5-815 */
     @Test
     public void asset_protection()
     {
-       clickThru("Asset Protection Demo");
-       clickAndWait("link=Show CSS");
-       assertTextPresent("//Some CSS");       
+        openLinks("Asset Protection Demo");
+        clickAndWait("link=Show CSS");
+        assertTextPresent("//Some CSS");
     }
 
 }

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/LinkTransformerIntegrationTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/LinkTransformerIntegrationTest.java?rev=1087494&r1=1087493&r2=1087494&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/LinkTransformerIntegrationTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/LinkTransformerIntegrationTest.java
 Thu Mar 31 23:16:01 2011
@@ -1,4 +1,4 @@
-// Copyright 2010 The Apache Software Foundation
+// Copyright 2010, 2011 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -22,9 +22,7 @@ public class LinkTransformerIntegrationT
     @Test
     public void page_render_links()
     {
-        open(getBaseURL());
-
-        clickAndWait("link=View Toys");
+        openLinks("View Toys");
 
         assertText("content", "toys");
         assertText("count", "0");
@@ -38,9 +36,7 @@ public class LinkTransformerIntegrationT
     @Test
     public void component_event_links()
     {
-        open(getBaseURL());
-        
-        clickAndWait("link=en");
+        openLinks("en");
         
         assertText("currentLocale", "en");
         

Modified: 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java?rev=1087494&r1=1087493&r2=1087494&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java
 Thu Mar 31 23:16:01 2011
@@ -1,10 +1,10 @@
-// Copyright 2009, 2010 The Apache Software Foundation
+// Copyright 2009, 2010, 2011 The Apache Software Foundation
 //
 // Licensed 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
+// 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,
@@ -30,13 +30,13 @@ public class Jetty7Runner implements Ser
     private final String description;
 
     private final int port;
-    
+
     private final int sslPort;
 
     public Jetty7Runner(String webappFolder, String contextPath, int port, int 
sslPort) throws Exception
     {
         this.port = port;
-        
+
         this.sslPort = sslPort;
 
         String expandedPath = expand(webappFolder);
@@ -110,9 +110,9 @@ public class Jetty7Runner implements Ser
         File path = new File(moduleLocalPath);
 
         // Don't expand if the path provided already exists.
-        if(path.isAbsolute() && path.isDirectory())
+        if (path.isAbsolute() && path.isDirectory())
             return moduleLocalPath;
-        
+
         return new File(TapestryTestConstants.MODULE_BASE_DIR, 
moduleLocalPath).getPath();
     }
 }

Modified: 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumTestCase.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumTestCase.java?rev=1087494&r1=1087493&r2=1087494&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumTestCase.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumTestCase.java
 Thu Mar 31 23:16:01 2011
@@ -41,16 +41,34 @@ import com.thoughtworks.selenium.Seleniu
  * 
  * @since 5.2.0
  */
-public class SeleniumTestCase extends Assert implements Selenium
+public abstract class SeleniumTestCase extends Assert implements Selenium
 {
     /**
      * 15 seconds
      */
     public static final String PAGE_LOAD_TIMEOUT = "15000";
+
     public static final String TOMCAT_6 = "tomcat6";
+
     public static final String JETTY_7 = "jetty7";
 
-    private Selenium delegate;
+    /**
+     * An XPath expression for locating a submit element (very commonly used
+     * with {@link #clickAndWait(String)}.
+     * 
+     * @since 5.3.0
+     */
+    public static final String SUBMIT = "//input[@type='submit']";
+
+    /**
+     * The underlying {@link Selenium} instance that all the methods of this 
class delegate to;
+     * this can be useful when attempting to use SeleniumTestCase with a newer 
version of Selenium which
+     * has added some methods to the interface. This field will not be set 
until the test case instance
+     * has gone through its full initialization.
+     * 
+     * @since 5.3.0
+     */
+    protected Selenium selenium;
 
     private String baseURL;
 
@@ -159,12 +177,13 @@ public class SeleniumTestCase extends As
 
         String baseURL = String.format("http://localhost:%d%s/";, port, 
contextPath);
 
-        CommandProcessor httpCommandProcessor = new 
HttpCommandProcessor("localhost", RemoteControlConfiguration.DEFAULT_PORT,
-                browserStartCommand, baseURL);
+        CommandProcessor httpCommandProcessor = new 
HttpCommandProcessor("localhost",
+                RemoteControlConfiguration.DEFAULT_PORT, browserStartCommand, 
baseURL);
 
         ErrorReporter errorReporter = new 
ErrorReporterImpl(httpCommandProcessor, testContext);
 
-        ErrorReportingCommandProcessor commandProcessor = new 
ErrorReportingCommandProcessor(httpCommandProcessor, errorReporter);
+        ErrorReportingCommandProcessor commandProcessor = new 
ErrorReportingCommandProcessor(httpCommandProcessor,
+                errorReporter);
 
         final Selenium selenium = new DefaultSelenium(commandProcessor);
 
@@ -187,7 +206,6 @@ public class SeleniumTestCase extends As
                 }
                 finally
                 {
-
                     
testContext.removeAttribute(TapestryTestConstants.BASE_URL_ATTRIBUTE);
                     
testContext.removeAttribute(TapestryTestConstants.SELENIUM_ATTRIBUTE);
                     
testContext.removeAttribute(TapestryTestConstants.ERROR_REPORTER_ATTRIBUTE);
@@ -245,12 +263,13 @@ public class SeleniumTestCase extends As
         return launchWebServer(TOMCAT_6, webAppFolder, contextPath, port, 
sslPort);
     }
 
-    protected Runnable launchWebServer(String container, String webAppFolder, 
String contextPath, int port, int sslPort) throws Exception
+    protected Runnable launchWebServer(String container, String webAppFolder, 
String contextPath, int port, int sslPort)
+            throws Exception
     {
         final ServletContainerRunner runner;
-        if ( TOMCAT_6.equals(container) )
+        if (TOMCAT_6.equals(container))
             runner = new Tomcat6Runner(webAppFolder, contextPath, port, 
sslPort);
-        else if (JETTY_7.equals(container) )
+        else if (JETTY_7.equals(container))
             runner = new Jetty7Runner(webAppFolder, contextPath, port, 
sslPort);
         else
             throw new RuntimeException("Unknown servlet container: " + 
container);
@@ -269,7 +288,7 @@ public class SeleniumTestCase extends As
     {
         this.testContext = context;
 
-        delegate = (Selenium) 
context.getAttribute(TapestryTestConstants.SELENIUM_ATTRIBUTE);
+        selenium = (Selenium) 
context.getAttribute(TapestryTestConstants.SELENIUM_ATTRIBUTE);
         baseURL = (String) 
context.getAttribute(TapestryTestConstants.BASE_URL_ATTRIBUTE);
         errorReporter = (ErrorReporter) 
context.getAttribute(TapestryTestConstants.ERROR_REPORTER_ATTRIBUTE);
     }
@@ -277,7 +296,7 @@ public class SeleniumTestCase extends As
     @AfterClass
     public void cleanup()
     {
-        delegate = null;
+        selenium = null;
         baseURL = null;
         errorReporter = null;
         testContext = null;
@@ -295,6 +314,8 @@ public class SeleniumTestCase extends As
     /**
      * Returns the base URL for the application. This is of the typically 
<code>http://localhost:9999/</code> (i.e., it
      * includes a trailing slash).
+     * <p>
+     * Generally, you should use {@link #openLinks(String...)} to start from 
your application's home page.
      */
     public String getBaseURL()
     {
@@ -309,7 +330,7 @@ public class SeleniumTestCase extends As
         String className = testMethod.getDeclaringClass().getSimpleName();
         String testName = testMethod.getName().replace("_", " ");
 
-        delegate.setContext(className + ": " + testName);
+        selenium.setContext(className + ": " + testName);
     }
 
     @AfterMethod
@@ -328,772 +349,772 @@ public class SeleniumTestCase extends As
 
     public void addCustomRequestHeader(String key, String value)
     {
-        delegate.addCustomRequestHeader(key, value);
+        selenium.addCustomRequestHeader(key, value);
     }
 
     public void addLocationStrategy(String strategyName, String 
functionDefinition)
     {
-        delegate.addLocationStrategy(strategyName, functionDefinition);
+        selenium.addLocationStrategy(strategyName, functionDefinition);
     }
 
     public void addScript(String scriptContent, String scriptTagId)
     {
-        delegate.addScript(scriptContent, scriptTagId);
+        selenium.addScript(scriptContent, scriptTagId);
     }
 
     public void addSelection(String locator, String optionLocator)
     {
-        delegate.addSelection(locator, optionLocator);
+        selenium.addSelection(locator, optionLocator);
     }
 
     public void allowNativeXpath(String allow)
     {
-        delegate.allowNativeXpath(allow);
+        selenium.allowNativeXpath(allow);
     }
 
     public void altKeyDown()
     {
-        delegate.altKeyDown();
+        selenium.altKeyDown();
     }
 
     public void altKeyUp()
     {
-        delegate.altKeyUp();
+        selenium.altKeyUp();
     }
 
     public void answerOnNextPrompt(String answer)
     {
-        delegate.answerOnNextPrompt(answer);
+        selenium.answerOnNextPrompt(answer);
     }
 
     public void assignId(String locator, String identifier)
     {
-        delegate.assignId(locator, identifier);
+        selenium.assignId(locator, identifier);
     }
 
     public void attachFile(String fieldLocator, String fileLocator)
     {
-        delegate.attachFile(fieldLocator, fileLocator);
+        selenium.attachFile(fieldLocator, fileLocator);
     }
 
     public void captureEntirePageScreenshot(String filename, String kwargs)
     {
-        delegate.captureEntirePageScreenshot(filename, kwargs);
+        selenium.captureEntirePageScreenshot(filename, kwargs);
     }
 
     public String captureEntirePageScreenshotToString(String kwargs)
     {
-        return delegate.captureEntirePageScreenshotToString(kwargs);
+        return selenium.captureEntirePageScreenshotToString(kwargs);
     }
 
     public String captureNetworkTraffic(String type)
     {
-        return delegate.captureNetworkTraffic(type);
+        return selenium.captureNetworkTraffic(type);
     }
 
     public void captureScreenshot(String filename)
     {
-        delegate.captureScreenshot(filename);
+        selenium.captureScreenshot(filename);
     }
 
     public String captureScreenshotToString()
     {
-        return delegate.captureScreenshotToString();
+        return selenium.captureScreenshotToString();
     }
 
     public void check(String locator)
     {
-        delegate.check(locator);
+        selenium.check(locator);
     }
 
     public void chooseCancelOnNextConfirmation()
     {
-        delegate.chooseCancelOnNextConfirmation();
+        selenium.chooseCancelOnNextConfirmation();
     }
 
     public void chooseOkOnNextConfirmation()
     {
-        delegate.chooseOkOnNextConfirmation();
+        selenium.chooseOkOnNextConfirmation();
     }
 
     public void click(String locator)
     {
-        delegate.click(locator);
+        selenium.click(locator);
     }
 
     public void clickAt(String locator, String coordString)
     {
-        delegate.clickAt(locator, coordString);
+        selenium.clickAt(locator, coordString);
     }
 
     public void close()
     {
-        delegate.close();
+        selenium.close();
     }
 
     public void contextMenu(String locator)
     {
-        delegate.contextMenu(locator);
+        selenium.contextMenu(locator);
     }
 
     public void contextMenuAt(String locator, String coordString)
     {
-        delegate.contextMenuAt(locator, coordString);
+        selenium.contextMenuAt(locator, coordString);
     }
 
     public void controlKeyDown()
     {
-        delegate.controlKeyDown();
+        selenium.controlKeyDown();
     }
 
     public void controlKeyUp()
     {
-        delegate.controlKeyUp();
+        selenium.controlKeyUp();
     }
 
     public void createCookie(String nameValuePair, String optionsString)
     {
-        delegate.createCookie(nameValuePair, optionsString);
+        selenium.createCookie(nameValuePair, optionsString);
     }
 
     public void deleteAllVisibleCookies()
     {
-        delegate.deleteAllVisibleCookies();
+        selenium.deleteAllVisibleCookies();
     }
 
     public void deleteCookie(String name, String optionsString)
     {
-        delegate.deleteCookie(name, optionsString);
+        selenium.deleteCookie(name, optionsString);
     }
 
     public void deselectPopUp()
     {
-        delegate.deselectPopUp();
+        selenium.deselectPopUp();
     }
 
     public void doubleClick(String locator)
     {
-        delegate.doubleClick(locator);
+        selenium.doubleClick(locator);
     }
 
     public void doubleClickAt(String locator, String coordString)
     {
-        delegate.doubleClickAt(locator, coordString);
+        selenium.doubleClickAt(locator, coordString);
     }
 
     public void dragAndDrop(String locator, String movementsString)
     {
-        delegate.dragAndDrop(locator, movementsString);
+        selenium.dragAndDrop(locator, movementsString);
     }
 
     public void dragAndDropToObject(String locatorOfObjectToBeDragged, String 
locatorOfDragDestinationObject)
     {
-        delegate.dragAndDropToObject(locatorOfObjectToBeDragged, 
locatorOfDragDestinationObject);
+        selenium.dragAndDropToObject(locatorOfObjectToBeDragged, 
locatorOfDragDestinationObject);
     }
 
     public void dragdrop(String locator, String movementsString)
     {
-        delegate.dragdrop(locator, movementsString);
+        selenium.dragdrop(locator, movementsString);
     }
 
     public void fireEvent(String locator, String eventName)
     {
-        delegate.fireEvent(locator, eventName);
+        selenium.fireEvent(locator, eventName);
     }
 
     public void focus(String locator)
     {
-        delegate.focus(locator);
+        selenium.focus(locator);
     }
 
     public String getAlert()
     {
-        return delegate.getAlert();
+        return selenium.getAlert();
     }
 
     public String[] getAllButtons()
     {
-        return delegate.getAllButtons();
+        return selenium.getAllButtons();
     }
 
     public String[] getAllFields()
     {
-        return delegate.getAllFields();
+        return selenium.getAllFields();
     }
 
     public String[] getAllLinks()
     {
-        return delegate.getAllLinks();
+        return selenium.getAllLinks();
     }
 
     public String[] getAllWindowIds()
     {
-        return delegate.getAllWindowIds();
+        return selenium.getAllWindowIds();
     }
 
     public String[] getAllWindowNames()
     {
-        return delegate.getAllWindowNames();
+        return selenium.getAllWindowNames();
     }
 
     public String[] getAllWindowTitles()
     {
-        return delegate.getAllWindowTitles();
+        return selenium.getAllWindowTitles();
     }
 
     public String getAttribute(String attributeLocator)
     {
-        return delegate.getAttribute(attributeLocator);
+        return selenium.getAttribute(attributeLocator);
     }
 
     public String[] getAttributeFromAllWindows(String attributeName)
     {
-        return delegate.getAttributeFromAllWindows(attributeName);
+        return selenium.getAttributeFromAllWindows(attributeName);
     }
 
     public String getBodyText()
     {
-        return delegate.getBodyText();
+        return selenium.getBodyText();
     }
 
     public String getConfirmation()
     {
-        return delegate.getConfirmation();
+        return selenium.getConfirmation();
     }
 
     public String getCookie()
     {
-        return delegate.getCookie();
+        return selenium.getCookie();
     }
 
     public String getCookieByName(String name)
     {
-        return delegate.getCookieByName(name);
+        return selenium.getCookieByName(name);
     }
 
     public Number getCursorPosition(String locator)
     {
-        return delegate.getCursorPosition(locator);
+        return selenium.getCursorPosition(locator);
     }
 
     public Number getElementHeight(String locator)
     {
-        return delegate.getElementHeight(locator);
+        return selenium.getElementHeight(locator);
     }
 
     public Number getElementIndex(String locator)
     {
-        return delegate.getElementIndex(locator);
+        return selenium.getElementIndex(locator);
     }
 
     public Number getElementPositionLeft(String locator)
     {
-        return delegate.getElementPositionLeft(locator);
+        return selenium.getElementPositionLeft(locator);
     }
 
     public Number getElementPositionTop(String locator)
     {
-        return delegate.getElementPositionTop(locator);
+        return selenium.getElementPositionTop(locator);
     }
 
     public Number getElementWidth(String locator)
     {
-        return delegate.getElementWidth(locator);
+        return selenium.getElementWidth(locator);
     }
 
     public String getEval(String script)
     {
-        return delegate.getEval(script);
+        return selenium.getEval(script);
     }
 
     public String getExpression(String expression)
     {
-        return delegate.getExpression(expression);
+        return selenium.getExpression(expression);
     }
 
     public String getHtmlSource()
     {
-        return delegate.getHtmlSource();
+        return selenium.getHtmlSource();
     }
 
     public String getLocation()
     {
-        return delegate.getLocation();
+        return selenium.getLocation();
     }
 
     public String getLog()
     {
-        return delegate.getLog();
+        return selenium.getLog();
     }
 
     public Number getMouseSpeed()
     {
-        return delegate.getMouseSpeed();
+        return selenium.getMouseSpeed();
     }
 
     public String getPrompt()
     {
-        return delegate.getPrompt();
+        return selenium.getPrompt();
     }
 
     public String getSelectedId(String selectLocator)
     {
-        return delegate.getSelectedId(selectLocator);
+        return selenium.getSelectedId(selectLocator);
     }
 
     public String[] getSelectedIds(String selectLocator)
     {
-        return delegate.getSelectedIds(selectLocator);
+        return selenium.getSelectedIds(selectLocator);
     }
 
     public String getSelectedIndex(String selectLocator)
     {
-        return delegate.getSelectedIndex(selectLocator);
+        return selenium.getSelectedIndex(selectLocator);
     }
 
     public String[] getSelectedIndexes(String selectLocator)
     {
-        return delegate.getSelectedIndexes(selectLocator);
+        return selenium.getSelectedIndexes(selectLocator);
     }
 
     public String getSelectedLabel(String selectLocator)
     {
-        return delegate.getSelectedLabel(selectLocator);
+        return selenium.getSelectedLabel(selectLocator);
     }
 
     public String[] getSelectedLabels(String selectLocator)
     {
-        return delegate.getSelectedLabels(selectLocator);
+        return selenium.getSelectedLabels(selectLocator);
     }
 
     public String getSelectedValue(String selectLocator)
     {
-        return delegate.getSelectedValue(selectLocator);
+        return selenium.getSelectedValue(selectLocator);
     }
 
     public String[] getSelectedValues(String selectLocator)
     {
-        return delegate.getSelectedValues(selectLocator);
+        return selenium.getSelectedValues(selectLocator);
     }
 
     public String[] getSelectOptions(String selectLocator)
     {
-        return delegate.getSelectOptions(selectLocator);
+        return selenium.getSelectOptions(selectLocator);
     }
 
     public String getSpeed()
     {
-        return delegate.getSpeed();
+        return selenium.getSpeed();
     }
 
     public String getTable(String tableCellAddress)
     {
-        return delegate.getTable(tableCellAddress);
+        return selenium.getTable(tableCellAddress);
     }
 
     public String getText(String locator)
     {
-        return delegate.getText(locator);
+        return selenium.getText(locator);
     }
 
     public String getTitle()
     {
-        return delegate.getTitle();
+        return selenium.getTitle();
     }
 
     public String getValue(String locator)
     {
-        return delegate.getValue(locator);
+        return selenium.getValue(locator);
     }
 
     public boolean getWhetherThisFrameMatchFrameExpression(String 
currentFrameString, String target)
     {
-        return 
delegate.getWhetherThisFrameMatchFrameExpression(currentFrameString, target);
+        return 
selenium.getWhetherThisFrameMatchFrameExpression(currentFrameString, target);
     }
 
     public boolean getWhetherThisWindowMatchWindowExpression(String 
currentWindowString, String target)
     {
-        return 
delegate.getWhetherThisWindowMatchWindowExpression(currentWindowString, target);
+        return 
selenium.getWhetherThisWindowMatchWindowExpression(currentWindowString, target);
     }
 
     public Number getXpathCount(String xpath)
     {
-        return delegate.getXpathCount(xpath);
+        return selenium.getXpathCount(xpath);
     }
 
     public void goBack()
     {
-        delegate.goBack();
+        selenium.goBack();
     }
 
     public void highlight(String locator)
     {
-        delegate.highlight(locator);
+        selenium.highlight(locator);
     }
 
     public void ignoreAttributesWithoutValue(String ignore)
     {
-        delegate.ignoreAttributesWithoutValue(ignore);
+        selenium.ignoreAttributesWithoutValue(ignore);
     }
 
     public boolean isAlertPresent()
     {
-        return delegate.isAlertPresent();
+        return selenium.isAlertPresent();
     }
 
     public boolean isChecked(String locator)
     {
-        return delegate.isChecked(locator);
+        return selenium.isChecked(locator);
     }
 
     public boolean isConfirmationPresent()
     {
-        return delegate.isConfirmationPresent();
+        return selenium.isConfirmationPresent();
     }
 
     public boolean isCookiePresent(String name)
     {
-        return delegate.isCookiePresent(name);
+        return selenium.isCookiePresent(name);
     }
 
     public boolean isEditable(String locator)
     {
-        return delegate.isEditable(locator);
+        return selenium.isEditable(locator);
     }
 
     public boolean isElementPresent(String locator)
     {
-        return delegate.isElementPresent(locator);
+        return selenium.isElementPresent(locator);
     }
 
     public boolean isOrdered(String locator1, String locator2)
     {
-        return delegate.isOrdered(locator1, locator2);
+        return selenium.isOrdered(locator1, locator2);
     }
 
     public boolean isPromptPresent()
     {
-        return delegate.isPromptPresent();
+        return selenium.isPromptPresent();
     }
 
     public boolean isSomethingSelected(String selectLocator)
     {
-        return delegate.isSomethingSelected(selectLocator);
+        return selenium.isSomethingSelected(selectLocator);
     }
 
     public boolean isTextPresent(String pattern)
     {
-        return delegate.isTextPresent(pattern);
+        return selenium.isTextPresent(pattern);
     }
 
     public boolean isVisible(String locator)
     {
-        return delegate.isVisible(locator);
+        return selenium.isVisible(locator);
     }
 
     public void keyDown(String locator, String keySequence)
     {
-        delegate.keyDown(locator, keySequence);
+        selenium.keyDown(locator, keySequence);
     }
 
     public void keyDownNative(String keycode)
     {
-        delegate.keyDownNative(keycode);
+        selenium.keyDownNative(keycode);
     }
 
     public void keyPress(String locator, String keySequence)
     {
-        delegate.keyPress(locator, keySequence);
+        selenium.keyPress(locator, keySequence);
     }
 
     public void keyPressNative(String keycode)
     {
-        delegate.keyPressNative(keycode);
+        selenium.keyPressNative(keycode);
     }
 
     public void keyUp(String locator, String keySequence)
     {
-        delegate.keyUp(locator, keySequence);
+        selenium.keyUp(locator, keySequence);
     }
 
     public void keyUpNative(String keycode)
     {
-        delegate.keyUpNative(keycode);
+        selenium.keyUpNative(keycode);
     }
 
     public void metaKeyDown()
     {
-        delegate.metaKeyDown();
+        selenium.metaKeyDown();
     }
 
     public void metaKeyUp()
     {
-        delegate.metaKeyUp();
+        selenium.metaKeyUp();
     }
 
     public void mouseDown(String locator)
     {
-        delegate.mouseDown(locator);
+        selenium.mouseDown(locator);
     }
 
     public void mouseDownAt(String locator, String coordString)
     {
-        delegate.mouseDownAt(locator, coordString);
+        selenium.mouseDownAt(locator, coordString);
     }
 
     public void mouseDownRight(String locator)
     {
-        delegate.mouseDownRight(locator);
+        selenium.mouseDownRight(locator);
     }
 
     public void mouseDownRightAt(String locator, String coordString)
     {
-        delegate.mouseDownRightAt(locator, coordString);
+        selenium.mouseDownRightAt(locator, coordString);
     }
 
     public void mouseMove(String locator)
     {
-        delegate.mouseMove(locator);
+        selenium.mouseMove(locator);
     }
 
     public void mouseMoveAt(String locator, String coordString)
     {
-        delegate.mouseMoveAt(locator, coordString);
+        selenium.mouseMoveAt(locator, coordString);
     }
 
     public void mouseOut(String locator)
     {
-        delegate.mouseOut(locator);
+        selenium.mouseOut(locator);
     }
 
     public void mouseOver(String locator)
     {
-        delegate.mouseOver(locator);
+        selenium.mouseOver(locator);
     }
 
     public void mouseUp(String locator)
     {
-        delegate.mouseUp(locator);
+        selenium.mouseUp(locator);
     }
 
     public void mouseUpAt(String locator, String coordString)
     {
-        delegate.mouseUpAt(locator, coordString);
+        selenium.mouseUpAt(locator, coordString);
     }
 
     public void mouseUpRight(String locator)
     {
-        delegate.mouseUpRight(locator);
+        selenium.mouseUpRight(locator);
     }
 
     public void mouseUpRightAt(String locator, String coordString)
     {
-        delegate.mouseUpRightAt(locator, coordString);
+        selenium.mouseUpRightAt(locator, coordString);
     }
 
     public void open(String url)
     {
-        delegate.open(url);
+        selenium.open(url);
     }
 
     public void open(String url, String ignoreResponseCode)
     {
-        delegate.open(url, ignoreResponseCode);
+        selenium.open(url, ignoreResponseCode);
     }
 
     public void openWindow(String url, String windowID)
     {
-        delegate.openWindow(url, windowID);
+        selenium.openWindow(url, windowID);
     }
 
     public void refresh()
     {
-        delegate.refresh();
+        selenium.refresh();
     }
 
     public void removeAllSelections(String locator)
     {
-        delegate.removeAllSelections(locator);
+        selenium.removeAllSelections(locator);
     }
 
     public void removeScript(String scriptTagId)
     {
-        delegate.removeScript(scriptTagId);
+        selenium.removeScript(scriptTagId);
     }
 
     public void removeSelection(String locator, String optionLocator)
     {
-        delegate.removeSelection(locator, optionLocator);
+        selenium.removeSelection(locator, optionLocator);
     }
 
     public String retrieveLastRemoteControlLogs()
     {
-        return delegate.retrieveLastRemoteControlLogs();
+        return selenium.retrieveLastRemoteControlLogs();
     }
 
     public void rollup(String rollupName, String kwargs)
     {
-        delegate.rollup(rollupName, kwargs);
+        selenium.rollup(rollupName, kwargs);
     }
 
     public void runScript(String script)
     {
-        delegate.runScript(script);
+        selenium.runScript(script);
     }
 
     public void select(String selectLocator, String optionLocator)
     {
-        delegate.select(selectLocator, optionLocator);
+        selenium.select(selectLocator, optionLocator);
     }
 
     public void selectFrame(String locator)
     {
-        delegate.selectFrame(locator);
+        selenium.selectFrame(locator);
     }
 
     public void selectPopUp(String windowID)
     {
-        delegate.selectPopUp(windowID);
+        selenium.selectPopUp(windowID);
     }
 
     public void selectWindow(String windowID)
     {
-        delegate.selectWindow(windowID);
+        selenium.selectWindow(windowID);
     }
 
     public void setBrowserLogLevel(String logLevel)
     {
-        delegate.setBrowserLogLevel(logLevel);
+        selenium.setBrowserLogLevel(logLevel);
     }
 
     public void setContext(String context)
     {
-        delegate.setContext(context);
+        selenium.setContext(context);
     }
 
     public void setCursorPosition(String locator, String position)
     {
-        delegate.setCursorPosition(locator, position);
+        selenium.setCursorPosition(locator, position);
     }
 
     public void setExtensionJs(String extensionJs)
     {
-        delegate.setExtensionJs(extensionJs);
+        selenium.setExtensionJs(extensionJs);
     }
 
     public void setMouseSpeed(String pixels)
     {
-        delegate.setMouseSpeed(pixels);
+        selenium.setMouseSpeed(pixels);
     }
 
     public void setSpeed(String value)
     {
-        delegate.setSpeed(value);
+        selenium.setSpeed(value);
     }
 
     public void setTimeout(String timeout)
     {
-        delegate.setTimeout(timeout);
+        selenium.setTimeout(timeout);
     }
 
     public void shiftKeyDown()
     {
-        delegate.shiftKeyDown();
+        selenium.shiftKeyDown();
     }
 
     public void shiftKeyUp()
     {
-        delegate.shiftKeyUp();
+        selenium.shiftKeyUp();
     }
 
     public void showContextualBanner()
     {
-        delegate.showContextualBanner();
+        selenium.showContextualBanner();
     }
 
     public void showContextualBanner(String className, String methodName)
     {
-        delegate.showContextualBanner(className, methodName);
+        selenium.showContextualBanner(className, methodName);
     }
 
     public void shutDownSeleniumServer()
     {
-        delegate.shutDownSeleniumServer();
+        selenium.shutDownSeleniumServer();
     }
 
     public void start()
     {
-        delegate.start();
+        selenium.start();
     }
 
     public void start(Object optionsObject)
     {
-        delegate.start(optionsObject);
+        selenium.start(optionsObject);
     }
 
     public void start(String optionsString)
     {
-        delegate.start(optionsString);
+        selenium.start(optionsString);
     }
 
     public void stop()
     {
-        delegate.stop();
+        selenium.stop();
     }
 
     public void submit(String formLocator)
     {
-        delegate.submit(formLocator);
+        selenium.submit(formLocator);
     }
 
     public void type(String locator, String value)
     {
-        delegate.type(locator, value);
+        selenium.type(locator, value);
     }
 
     public void typeKeys(String locator, String value)
     {
-        delegate.typeKeys(locator, value);
+        selenium.typeKeys(locator, value);
     }
 
     public void uncheck(String locator)
     {
-        delegate.uncheck(locator);
+        selenium.uncheck(locator);
     }
 
     public void useXpathLibrary(String libraryName)
     {
-        delegate.useXpathLibrary(libraryName);
+        selenium.useXpathLibrary(libraryName);
     }
 
     public void waitForCondition(String script, String timeout)
     {
-        delegate.waitForCondition(script, timeout);
+        selenium.waitForCondition(script, timeout);
     }
 
     public void waitForFrameToLoad(String frameAddress, String timeout)
     {
-        delegate.waitForFrameToLoad(frameAddress, timeout);
+        selenium.waitForFrameToLoad(frameAddress, timeout);
     }
 
     public void waitForPageToLoad(String timeout)
     {
-        delegate.waitForPageToLoad(timeout);
+        selenium.waitForPageToLoad(timeout);
     }
 
     public void waitForPopUp(String windowID, String timeout)
     {
-        delegate.waitForPopUp(windowID, timeout);
+        selenium.waitForPopUp(windowID, timeout);
     }
 
     public void windowFocus()
     {
-        delegate.windowFocus();
+        selenium.windowFocus();
     }
 
     public void windowMaximize()
     {
-        delegate.windowMaximize();
+        selenium.windowMaximize();
     }
 
     // ---------------------------------------------------------------------
@@ -1107,9 +1128,12 @@ public class SeleniumTestCase extends As
         throw new AssertionError("This statement should not be reachable.");
     }
 
+    /** Open the {@linkplain #getBaseURL()}, and waits for the page to load. */
     protected final void openBaseURL()
     {
         open(baseURL);
+
+        waitForPageToLoad();
     }
 
     /**
@@ -1233,6 +1257,15 @@ public class SeleniumTestCase extends As
         throw new AssertionError(String.format("%s was '%s' not '%s'", 
locator, actual, expected));
     }
 
+    /**
+     * Assets that the value in the field matches the expectation
+     * 
+     * @param locator
+     *            identifies the field
+     * @param expected
+     *            expected value for the field
+     * @since 5.3.0
+     */
     protected final void assertFieldValue(String locator, String expected)
     {
         try
@@ -1246,4 +1279,82 @@ public class SeleniumTestCase extends As
             throw ex;
         }
     }
+
+    /**
+     * Opens the base URL, then clicks through a series of links to get to a 
desired application
+     * state.
+     * 
+     * @since 5.3.0
+     */
+    protected final void openLinks(String... linkText)
+    {
+        openBaseURL();
+
+        for (String text : linkText)
+        {
+            clickAndWait("link=" + text);
+        }
+    }
+
+    /**
+     * Sleeps for the indicated number of seconds.
+     * 
+     * @since 5.3.0
+     */
+    protected final void sleep(long millis)
+    {
+        try
+        {
+            Thread.sleep(millis);
+        }
+        catch (InterruptedException ex)
+        {
+            // Ignore.
+        }
+    }
+
+    /**
+     * Waits, up to the page load limit for an element (identified by a CSS 
rule) to exist
+     * (it is not assured that the element will be visible).
+     * 
+     * @param cssRule
+     *            used to locate the element
+     * @since 5.3.0
+     */
+    protected void waitForCSSSelectedElementToAppear(String cssRule)
+    {
+        String condition = String.format("window.$$(\"%s\").size() > 0", 
cssRule);
+
+        waitForCondition(condition, PAGE_LOAD_TIMEOUT);
+    }
+
+    /**
+     * Waits for the element with the given client-side id to be present in 
the DOM (
+     * does not assure that the element is visible).
+     * 
+     * @param elementId
+     *            identifies the element
+     * @since 5.3.0
+     */
+    protected final void waitForElementToAppear(String elementId)
+    {
+
+        String condition = String.format("window.$(\"%s\")", elementId);
+
+        waitForCondition(condition, PAGE_LOAD_TIMEOUT);
+    }
+
+    /**
+     * Waits for the element to be removed from the DOM.
+     * 
+     * @param elementId
+     *            client-side id of element
+     * @since 5.3.0
+     */
+    protected final void waitForElementToDisappear(String elementId)
+    {
+        String condition = String.format("window.$(\"%s\").hide()", elementId);
+
+        waitForCondition(condition, PAGE_LOAD_TIMEOUT);
+    }
 }

Modified: 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/ServletContainerRunner.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/ServletContainerRunner.java?rev=1087494&r1=1087493&r2=1087494&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/ServletContainerRunner.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/ServletContainerRunner.java
 Thu Mar 31 23:16:01 2011
@@ -1,5 +1,25 @@
+// Copyright 2011 The Apache Software Foundation
+//
+// Licensed 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.
+
 package org.apache.tapestry5.test;
 
+/**
+ * Used as a wrapper around code that runs a web server as part of a {@link 
SeleniumTestCase}, so that
+ * the server may be shut down at the end of the test.
+ * 
+ * @since 5.3.0
+ */
 public interface ServletContainerRunner
 {
     /**

Modified: 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Tomcat6Runner.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Tomcat6Runner.java?rev=1087494&r1=1087493&r2=1087494&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Tomcat6Runner.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Tomcat6Runner.java
 Thu Mar 31 23:16:01 2011
@@ -1,10 +1,10 @@
-// Copyright 2009, 2010 The Apache Software Foundation
+// Copyright 2011 The Apache Software Foundation
 //
 // Licensed 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
+// 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,
@@ -27,6 +27,7 @@ import java.io.File;
 
 /**
  * Launches an instance of Tomcat 6.
+ * 
  * @since 5.3.0
  */
 public class Tomcat6Runner implements ServletContainerRunner
@@ -51,7 +52,8 @@ public class Tomcat6Runner implements Se
         // Tomcat creates a folder, try to put it in an OS agnostic tmp dir
         String tmpDir = System.getProperty("java.io.tmpdir");
         String fileSeparator = System.getProperty("file.separator");
-        if (!tmpDir.endsWith(fileSeparator)) tmpDir = tmpDir + fileSeparator;
+        if (!tmpDir.endsWith(fileSeparator))
+            tmpDir = tmpDir + fileSeparator;
         tomcatServer.setCatalinaHome(tmpDir + "tomcat");
 
         final Engine engine = tomcatServer.createEngine();
@@ -69,10 +71,10 @@ public class Tomcat6Runner implements Se
         wrapper.setServletClass(DefaultServlet.class.getName());
         context.addChild(wrapper);
         context.addServletMapping("/", name);
-        
+
         File contextConfigFile = new File(webappFolder, 
"META-INF/context.xml");
-        
-        if(contextConfigFile.exists())
+
+        if (contextConfigFile.exists())
             context.setConfigFile(contextConfigFile.getAbsolutePath());
 
         context.setLoader(new WebappLoader(this.getClass().getClassLoader()));
@@ -110,7 +112,8 @@ public class Tomcat6Runner implements Se
         {
             // Stop immediately and not gracefully.
             tomcatServer.stop();
-        } catch (Exception ex)
+        }
+        catch (Exception ex)
         {
             throw new RuntimeException("Error stopping Tomcat6 instance: " + 
ex.toString(), ex);
         }
@@ -128,7 +131,7 @@ public class Tomcat6Runner implements Se
      * Needed inside Maven multi-projects to expand a path relative to the 
module to a complete
      * path. If the path already is absolute and points to an existing 
directory, it will be used
      * unchanged.
-     *
+     * 
      * @param moduleLocalPath
      * @return expanded path
      * @see TapestryTestConstants#MODULE_BASE_DIR
@@ -144,5 +147,4 @@ public class Tomcat6Runner implements Se
         return new File(TapestryTestConstants.MODULE_BASE_DIR, 
moduleLocalPath).getPath();
     }
 
-
 }


Reply via email to