]> source.dussan.org Git - vaadin-framework.git/commitdiff
Allow running tests locally by overriding runLocally() (#12786)
authorArtur Signell <artur@vaadin.com>
Mon, 14 Oct 2013 19:05:40 +0000 (22:05 +0300)
committerArtur Signell <artur@vaadin.com>
Tue, 15 Oct 2013 14:11:16 +0000 (17:11 +0300)
Uses Firefox either from path or from the location given using firefox.path in /work/run-eclipse-run-selected-test.properties

Change-Id: I29faa94cac4c978792a8fab9db338048553d166a

uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java
uitest/src/com/vaadin/tests/tb3/PrivateTB3Configuration.java
uitest/src/com/vaadin/tests/tb3/TB3Runner.java

index e831a4f15f7bf5a2255b8bc2135579400a1e20d9..7584f36e2818ce0a207cce595e6e9fb8a4c55bff 100644 (file)
@@ -104,6 +104,10 @@ public abstract class AbstractTB3Test extends TestBenchTestCase {
      *             If something goes wrong
      */
     protected void setupDriver() throws Exception {
+        if (runLocally()) {
+            setupLocalDriver();
+            return;
+        }
         DesiredCapabilities capabilities = getDesiredCapabilities();
 
         WebDriver dr = TestBench.createDriver(new RemoteWebDriver(new URL(
@@ -126,6 +130,23 @@ public abstract class AbstractTB3Test extends TestBenchTestCase {
 
     }
 
+    /**
+     * Override and return true to run the test locally. This method is only to
+     * be used for developing tests.
+     * 
+     * @return true to run the test on a local browser, false to use the hub
+     */
+    public boolean runLocally() {
+        return false;
+    }
+
+    /**
+     * Creates a {@link WebDriver} instance used for running the test locally
+     * for debug purposes. Used only when {@link #runLocally()} is overridden to
+     * return true;
+     */
+    protected abstract void setupLocalDriver();
+
     /**
      * Opens the given test (defined by {@link #getTestUrl(boolean, boolean)},
      * optionally with debug window and/or push
@@ -792,4 +813,5 @@ public abstract class AbstractTB3Test extends TestBenchTestCase {
         // Do nothing by default
 
     }
+
 }
index 09615f0b2e416baee6036dd9e2ac2d73b4bcd8cb..a2922af28f5856d42f77aad8a93c71ae0c25d0e0 100644 (file)
@@ -25,6 +25,12 @@ import java.net.SocketException;
 import java.util.Enumeration;
 import java.util.Properties;
 
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.firefox.FirefoxBinary;
+import org.openqa.selenium.firefox.FirefoxDriver;
+
+import com.vaadin.testbench.TestBench;
+
 /**
  * Provides values for parameters which depend on where the test is run.
  * Parameters should be configured in work/eclipse-run-selected-test.properties.
@@ -132,4 +138,23 @@ public abstract class PrivateTB3Configuration extends ScreenshotTB3Test {
                 "No compatible (192.168.*) ip address found.");
     }
 
+    /*
+     * (non-Javadoc)
+     * 
+     * @see com.vaadin.tests.tb3.AbstractTB3Test#setupLocalDriver()
+     */
+    @Override
+    protected void setupLocalDriver() {
+        String firefoxPath = getProperty("firefox.path");
+        WebDriver driver;
+        if (firefoxPath != null) {
+            driver = new FirefoxDriver(
+                    new FirefoxBinary(new File(firefoxPath)), null);
+        } else {
+            driver = new FirefoxDriver();
+        }
+        setDriver(TestBench.createDriver(driver));
+        setDesiredCapabilities(BrowserUtil
+                .firefox(MultiBrowserTest.TESTED_FIREFOX_VERSION));
+    }
 }
index b612b17caa01d62fe73089db9bbe72442cceeb3a..4e084ab0ed09c397c70bc82f3b97d2e99b3a0171 100644 (file)
@@ -17,6 +17,8 @@
 package com.vaadin.tests.tb3;
 
 import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
@@ -72,8 +74,14 @@ public class TB3Runner extends BlockJUnit4ClassRunner {
         try {
             AbstractTB3Test testClassInstance = (AbstractTB3Test) getTestClass()
                     .getOnlyConstructor().newInstance();
-            for (DesiredCapabilities capabilities : testClassInstance
-                    .getBrowsersToTest()) {
+            Collection<DesiredCapabilities> desiredCapabilites = testClassInstance
+                    .getBrowsersToTest();
+            if (testClassInstance.runLocally()) {
+                desiredCapabilites = new ArrayList<DesiredCapabilities>();
+                desiredCapabilites.add(BrowserUtil
+                        .firefox(MultiBrowserTest.TESTED_FIREFOX_VERSION));
+            }
+            for (DesiredCapabilities capabilities : desiredCapabilites) {
 
                 // Find any methods marked with @Test.
                 for (FrameworkMethod m : getTestClass().getAnnotatedMethods(