[seam-commits] Seam SVN: r11928 - in branches/enterprise/JBPAPP_5_0/src/test/ftest: examples and 5 other directories.
seam-commits at lists.jboss.org
seam-commits at lists.jboss.org
Thu Jan 7 08:00:29 EST 2010
Author: mgencur at redhat.com
Date: 2010-01-07 08:00:28 -0500 (Thu, 07 Jan 2010)
New Revision: 11928
Added:
branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/booking/jboss5cluster.xml
branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/
branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/
branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/FailoverTest.java
Modified:
branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml
branches/enterprise/JBPAPP_5_0/src/test/ftest/readme.txt
branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java
Log:
JBPAPP-3348 created automated test for booking example in cluster environment
Added: branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/booking/jboss5cluster.xml
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/booking/jboss5cluster.xml (rev 0)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/booking/jboss5cluster.xml 2010-01-07 13:00:28 UTC (rev 11928)
@@ -0,0 +1,26 @@
+<!--
+ JBoss, Home of Professional Open Source Copyright 2008, Red Hat
+ Middleware LLC, and individual contributors by the @authors tag. See
+ the copyright.txt in the distribution for a full listing of individual
+ contributors. This is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version. This software is
+ distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details. You should have received a copy of the GNU
+ Lesser General Public License along with this software; if not, write
+ to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+-->
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Booking example" verbose="2" parallel="false">
+ <test name="booking_jboss5_cluster">
+ <parameter name="PROPERTY_FILE"
+ value="/org/jboss/seam/example/booking/test/selenium/booking.properties" />
+ <classes>
+ <class name="org.jboss.seam.example.common.test.booking.cluster.selenium.FailoverTest" />
+ </classes>
+ </test>
+</suite>
Modified: branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml 2010-01-07 11:35:55 UTC (rev 11927)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/examples/build.xml 2010-01-07 13:00:28 UTC (rev 11928)
@@ -41,6 +41,8 @@
<!-- default deployment targets -->
<property name="jboss5.deploy.target" value="deploy" />
<property name="jboss5.undeploy.target" value="undeploy" />
+ <property name="jboss5.farm.target" value="farm" />
+ <property name="jboss5.unfarm.target" value="unfarm" />
<!-- default context paths -->
<property name="jboss5.context.path" value="/seam-${example.name}" />
@@ -97,10 +99,18 @@
<target name="selenium.test" depends="build, container.properties" description="Run Tests">
<taskdef resource="testngtasks" classpathref="classpath.test" />
<mkdir dir="${test.output.dir}" />
-
+
+ <condition property="clusterxml" value="cluster">
+ <equals arg1="${cluster}" arg2="true"/>
+ </condition>
+ <condition property="clusterxml" value="">
+ <not>
+ <equals arg1="${cluster}" arg2="true"/>
+ </not>
+ </condition>
<!-- execute testng tests -->
<testng haltonfailure="false" outputdir="${test.output.dir}" classpathref="classpath.test" listener="${functional.listener}">
- <xmlfileset file="${container}.xml" />
+ <xmlfileset file="${container}${clusterxml}.xml" />
<sysproperty key="selenium.server.port" value="${selenium.server.port}" />
<sysproperty key="selenium.host" value="${selenium.host}" />
<sysproperty key="selenium.browser" value="${selenium.browser}" />
@@ -111,13 +121,14 @@
<sysproperty key="openid.account" value="${openid.account}" />
<sysproperty key="openid.password" value="${openid.password}" />
<sysproperty key="seam.dir" value="${seam.dir}" />
+ <sysproperty key="jboss.home" value="${jboss.home}" />
</testng>
</target>
- <target name="test" depends="build, container.properties" description="Run Tests">
+ <target name="simpletest" depends="build, container.properties" description="Run Tests" unless="cluster">
<!-- TODO all of these jboss commands must be optional with checks -->
<!-- TODO go get JBoss and extract -->
-
+ <echo message="executing..."/>
<!-- TODO start JBoss -->
<!-- clean example -->
<ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="clean" inheritall="false" dir="${seam.dir}/examples/${example.name}" />
@@ -136,6 +147,16 @@
<!-- TODO remove jboss -->
</target>
+ <target name="clustertest" depends="build, container.properties" description="Run Tests in a cluster environment" if="cluster">
+ <echo message="executing..."/>
+ <ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="clean" inheritall="false" dir="${seam.dir}/examples/${example.name}" />
+ <antcall target="farm.example" />
+ <antcall target="selenium.test" />
+ <antcall target="unfarm.example" />
+ </target>
+
+ <target name="test" depends="simpletest, clustertest"/>
+
<!-- TODO get this to next level too - how to combine into one report -->
<target name="testreport" depends="test" description="generate html report">
<mkdir dir="${test.report.dir}" />
@@ -166,6 +187,26 @@
</and>
</waitfor>
</target>
+
+ <target name="farm.example" depends="container.properties">
+ <property name="absolute.wait.url" value="${selenium.browser.url.cluster}${wait.url}" />
+ <echo>Deploying ${example.name} example to farm directory of ${container} using ${farm.target} target</echo>
+ <ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="${farm.target}" inheritall="false" dir="${seam.dir}/examples/${example.name}">
+ <property name="jboss.home" value="${container.home}" />
+ <property name="session.replication" value="true" />
+ <property name="distributable" value="true" />
+ <propertyset refid="deploy.properties" />
+ </ant>
+ <!-- wait for the application to be active -->
+ <!-- TODO is there a better way? -->
+ <echo>Waiting ${wait.time} seconds for ${absolute.wait.url}</echo>
+ <waitfor maxwait="${wait.time}" maxwaitunit="second">
+ <and>
+ <!-- wait for the application to not throw 404 -->
+ <http url="${absolute.wait.url}" errorsBeginAt="404" />
+ </and>
+ </waitfor>
+ </target>
<target name="undeploy.example" depends="container.properties">
<echo>Undeploying example ${example.name} from ${container} using ${undeploy.target} target</echo>
@@ -173,6 +214,13 @@
<property name="jboss.home" value="${container.home}" />
</ant>
</target>
+
+ <target name="unfarm.example" depends="container.properties">
+ <echo>Undeploying example ${example.name} from farm directory of ${container} using ${unfarm.target} target</echo>
+ <ant antfile="${seam.dir}/examples/${example.name}/build.xml" target="${unfarm.target}" inheritall="false" dir="${seam.dir}/examples/${example.name}">
+ <property name="jboss.home" value="${container.home}" />
+ </ant>
+ </target>
<target name="container.properties" depends="set.deploy.properties" unless="container.home">
<set.container.properties container="${container}" />
@@ -187,6 +235,8 @@
<property name="container.jvm.arguments" value="${@{container}.jvm.arguments}" />
<property name="deploy.target" value="${@{container}.deploy.target}" />
<property name="undeploy.target" value="${@{container}.undeploy.target}" />
+ <property name="farm.target" value="${@{container}.farm.target}" />
+ <property name="unfarm.target" value="${@{container}.unfarm.target}" />
<property name="context.path" value="${@{container}.context.path}" />
<property name="wait.url" value="${context.path}" />
<property name="wait.time" value="${@{container}.deploy.waittime}" />
Modified: branches/enterprise/JBPAPP_5_0/src/test/ftest/readme.txt
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/readme.txt 2010-01-07 11:35:55 UTC (rev 11927)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/readme.txt 2010-01-07 13:00:28 UTC (rev 11928)
@@ -37,6 +37,27 @@
To run functional tests for single example run:
* "ant test -Dtest=example_name" for JBoss AS 5
+How To Test Cluster Environment:
+--------------------------------
+* Currently there is one test for cluster environment - booking. The main goal of this test is
+* to simulate recovery from breakdown. Two instances of JBoss AS are being used. First part of
+* the test is executed at first (master) instance. Then the first instance is killed and a second (slave)
+* instance takes over executing of the application.
+* This test should be executed autonomously (not as a part of test bundle).
+
+* Prior to executing of this test it is needed to start both JBoss AS instances manually.
+* For example (assuming you have created second "all" configuration ("all2")):
+* JBOSS_HOME/bin/run.sh -c all -g DocsPartition -u 239.255.101.101 -b localhost -Djboss.messaging.ServerPeerID=1
+* -Djboss.service.binding.set=ports-default
+* JBOSS_HOME/bin/run.sh -c all2 -g DocsPartition -u 239.255.101.101 -b localhost -Djboss.messaging.ServerPeerID=2
+* -Djboss.service.binding.set=ports-01
+* The configuration "all" is considered to be master jboss instance (related to
+* jboss.service.binding.set=ports-default) and the application is deployed to server/all/farm
+* directory at "jboss5.home" location specified in ftest.properties
+
+To run cluster test for booking example:
+ant test -Dtest=booking -Dcluster=true
+
Known Limitations:
---------------------
* Only tested on Firefox and IE
Added: branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/FailoverTest.java
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/FailoverTest.java (rev 0)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/FailoverTest.java 2010-01-07 13:00:28 UTC (rev 11928)
@@ -0,0 +1,303 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.seam.example.common.test.booking.cluster.selenium;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import static org.testng.AssertJUnit.*;
+
+import org.jboss.seam.example.common.test.selenium.SeamSelenium;
+import org.jboss.seam.example.common.test.selenium.SeamSeleniumTest;
+
+import com.thoughtworks.selenium.Wait;
+
+/**
+ * This class tests booking functionality of the example. Two instances of JBoss AS are
+ * being used. First part of test is executed at first (master) instance. Then the first
+ * instance is killed and a second (slave) instance takes over executing of the application.
+ * This behaviour simulates recovery from breakdown.
+ *
+ * Prior to executing this test it is needed to start both JBoss AS instances manually.
+ * For example (assuming you have created second "all" configuration ("all2")):
+ * ./run.sh -c all -g DocsPartition -u 239.255.101.101 -b localhost -Djboss.messaging.ServerPeerID=1
+ * -Djboss.service.binding.set=ports-default
+ * ./run.sh -c all2 -g DocsPartition -u 239.255.101.101 -b localhost -Djboss.messaging.ServerPeerID=2
+ * -Djboss.service.binding.set=ports-01
+ * The configuration all is considered to be master jboss instance (related to
+ * jboss.service.binding.set=ports-default) and the application is deployed to server/all/farm directory
+ * at "jboss5.home" location specified in ftest.properties
+ *
+ *
+ * @author mgencur
+ * @author jharting
+ *
+ */
+public class FailoverTest extends SeamSeleniumTest
+{
+ private final String HOTEL_NAME = "W Hotel";
+ private final String DEFAULT_USERNAME = "demo";
+ private final String DEFAULT_PASSWORD = "demo";
+ private final String EXPECTED_NAME = "Demo User";
+ private final String CREDIT_CARD = "0123456789012345";
+ private final String CREDIT_CARD_NAME = "visa";
+ private final long JBOSS_SHUTDOWN_TIMEOUT = 20000;
+ private final int SECOND_BROWSER_PORT = 8180;
+ private final String SECOND_INSTANCE_BROWSER_URL = "http://localhost:" + SECOND_BROWSER_PORT;
+
+ private SeamSelenium browser2;
+
+ @Override
+ @BeforeMethod
+ public void setUp()
+ {
+ super.setUp();
+ deleteCookies(browser);
+ browser2 = startSecondBrowser();
+ deleteCookies(browser2);
+ assertTrue("Login failed.", login(browser));
+ }
+
+ @Override
+ @AfterMethod
+ public void tearDown()
+ {
+ logout(browser2);
+ super.tearDown();
+ stopSecondBrowser();
+ }
+
+
+
+ /**
+ * Simply books hotel with failover during booking.
+ */
+ @Test
+ public void simpleBookingWithFailoverTest()
+ {
+ preFailurePart(browser);
+
+ String newAddress = getAddressForSecondInstance(browser);
+
+ shutdownMasterJBossInstance();
+
+ postFailurePart(browser2, newAddress);
+
+ // main page
+ String message = browser2.getText(getProperty("HOTEL_MESSAGE"));
+ assertTrue("Booking failed. Confirmation message does not match.", message.matches(
+ MessageFormat.format(getProperty("BOOKING_CONFIRMATION_MESSAGE"), EXPECTED_NAME, HOTEL_NAME)));
+ }
+
+
+
+ public void shutdownMasterJBossInstance()
+ {
+ String command = JBOSS_HOME + "/bin/shutdown.sh -s localhost:1099 -S";
+ //System.out.println("Command:" + command);
+ try
+ {
+ Process process = Runtime.getRuntime().exec(command);
+ process.waitFor();
+ Thread.sleep(JBOSS_SHUTDOWN_TIMEOUT);
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException(e.getCause());
+ }
+ catch (InterruptedException e)
+ {
+ }
+ }
+
+ public void preFailurePart(SeamSelenium browser)
+ {
+ if (!isLoggedIn(browser))
+ fail();
+ if (!browser.isElementPresent(getProperty("SEARCH_SUBMIT"))) {
+ browser.open(CONTEXT_PATH + getProperty("MAIN_PAGE"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+ enterSearchQueryUsingAJAX(browser, HOTEL_NAME);
+ browser.click(getProperty("SEARCH_RESULT_TABLE_FIRST_ROW_LINK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ // go to booking page
+ browser.click(getProperty("BOOKING_BOOK"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+
+ public void postFailurePart(SeamSelenium browser, String newAddress)
+ {
+ browser2.open(newAddress);
+
+ //booking page
+ populateBookingFields(browser);
+
+ //a jsessionid cookie has to be deleted because at this moment there already exists one
+ deleteCookies(browser);
+
+ browser.click(getProperty("HOTEL_PROCEED"));
+ browser.waitForPageToLoad(TIMEOUT);
+
+ deleteCookies(browser);
+
+ // confirm page
+ browser.click(getProperty("HOTEL_CONFIRM"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+
+ public SeamSelenium startSecondBrowser()
+ {
+ BROWSER_URL = SECOND_INSTANCE_BROWSER_URL;
+ //System.out.println("host: " + HOST + ", port: " + PORT + ", browser_url: " + BROWSER_URL);
+ return super.startBrowser();
+ }
+
+ public void stopSecondBrowser()
+ {
+ browser2.stop();
+ }
+
+ public String getAddressForSecondInstance(SeamSelenium browser)
+ {
+ String[] parsedStrings = browser.getLocation().split("/");
+ StringBuilder sb = new StringBuilder();
+ for (int i = 3; i != parsedStrings.length; i++){
+ sb.append("/").append(parsedStrings[i]);
+ }
+ String sid = browser.getCookieByName("JSESSIONID");
+ String newAddress = sb.toString();
+ String firstPart = newAddress.substring(0, newAddress.indexOf("?"));
+ String secondPart = newAddress.substring(newAddress.indexOf("?") , newAddress.length());
+
+ newAddress = firstPart + ";jsessionid=" + sid + secondPart;
+
+ return newAddress;
+ }
+
+ protected void populateBookingFields(SeamSelenium browser)
+ {
+ populateBookingFields(browser, 2, 0, CREDIT_CARD, CREDIT_CARD_NAME);
+ }
+
+ protected void populateBookingFields(SeamSelenium browser, int bed, int smoking, String creditCard, String creditCardName)
+ {
+ browser.select(getProperty("HOTEL_BED_FIELD"),
+ getProperty("HOTEL_BED_FIELD_SELECT_CRITERIA") + bed);
+ if (smoking == 1) {
+ browser.check(getProperty("HOTEL_SMOKING_1"));
+ } else {
+ browser.check(getProperty("HOTEL_SMOKING_2"));
+ }
+ browser.type(getProperty("HOTEL_CREDIT_CARD"), creditCard);
+ browser.type(getProperty("HOTEL_CREDIT_CARD_NAME"), creditCardName);
+ }
+
+ private void deleteCookies(SeamSelenium browser)
+ {
+ browser.deleteCookie("JSESSIONID", "path=" + CONTEXT_PATH + ", domain=localhost, recurse=true");
+ }
+
+ public boolean login(SeamSelenium browser)
+ {
+ return login(browser, DEFAULT_USERNAME, DEFAULT_PASSWORD);
+ }
+
+ public boolean login(SeamSelenium browser, String username, String password)
+ {
+ if (isLoggedIn(browser))
+ {
+ fail("User already logged in.");
+ }
+
+ browser.open(CONTEXT_PATH + getProperty("HOME_PAGE"));
+ browser.waitForPageToLoad(TIMEOUT);
+
+ if (!browser.getTitle().equals(getProperty("PAGE_TITLE")))
+ {
+ return false;
+ }
+
+ browser.type(getProperty("LOGIN_USERNAME_FIELD"), username);
+ browser.type(getProperty("LOGIN_PASSWORD_FIELD"), password);
+ browser.click(getProperty("LOGIN_SUBMIT"));
+ browser.waitForPageToLoad(TIMEOUT);
+
+ return isLoggedIn(browser);
+ }
+
+ public void logout(SeamSelenium browser)
+ {
+ if (isLoggedIn(browser))
+ {
+ browser.click(getProperty("LOGOUT"));
+ browser.waitForPageToLoad(TIMEOUT);
+ }
+ }
+
+ public boolean isLoggedIn(SeamSelenium browser)
+ {
+ return browser.isElementPresent(getProperty("LOGOUT"));
+ }
+
+ public void enterSearchQueryUsingAJAX(final SeamSelenium browser, String query)
+ {
+ browser.type(getProperty("SEARCH_STRING_FIELD"), "");
+ browser.type(getProperty("SEARCH_STRING_FIELD"), query.substring(0, query.length() - 1));
+ browser.typeKeys(getProperty("SEARCH_STRING_FIELD"), query.substring(query.length() - 1));
+
+ browser.click(getProperty("SEARCH_SUBMIT"));
+
+ // wait for javascript to show spinner
+ try
+ {
+ Thread.sleep(1000);
+ }
+ catch (InterruptedException e)
+ {
+ }
+
+ // wait for page to get updated
+ new Wait()
+ {
+ @Override
+ public boolean until()
+ {
+ return !browser.isVisible(getProperty("SPINNER"));
+ }
+ }.wait("Spinner hasn't come out.");
+
+ new Wait()
+ {
+ @Override
+ public boolean until()
+ {
+ return (browser.isElementPresent(getProperty("SEARCH_RESULT_TABLE")) ||
+ browser.isElementPresent(getProperty("NO_HOTELS_FOUND")));
+ }
+ }.wait("Search results not found.");
+ }
+}
Property changes on: branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/booking/cluster/selenium/FailoverTest.java
___________________________________________________________________
Name: svn:executable
+ *
Modified: branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java
===================================================================
--- branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java 2010-01-07 11:35:55 UTC (rev 11927)
+++ branches/enterprise/JBPAPP_5_0/src/test/ftest/src/main/org/jboss/seam/example/common/test/selenium/SeamSeleniumTest.java 2010-01-07 13:00:28 UTC (rev 11928)
@@ -40,11 +40,11 @@
*/
public abstract class SeamSeleniumTest {
- private static String HOST;
- private static int PORT;
- private static String BROWSER;
- private static String BROWSER_URL;
- private static String SPEED;
+ protected static String HOST;
+ protected static int PORT;
+ protected static String BROWSER;
+ protected static String BROWSER_URL;
+ protected static String SPEED;
public static String TIMEOUT;
private static String PROPERTY_FILE;
protected String CONTEXT_PATH = "";
@@ -54,16 +54,18 @@
protected static String SEAM_DIR;
protected static String APP_NAME;
protected static String OUTPUT_DIR;
+ protected static String JBOSS_HOME;
+
//protected SeamSelenium
public static SeamSelenium browser;
@BeforeClass
@Parameters( { "selenium.host", "selenium.server.port", "selenium.browser",
"selenium.browser.url", "selenium.speed", "selenium.timeout",
- "PROPERTY_FILE", "example.context.path", "seam.dir" })
+ "PROPERTY_FILE", "example.context.path", "seam.dir", "jboss.home" })
public void setParameters(String host, String port, String browser,
- String browserUrl, String speed, String timeout, String propertyFile, @Optional("") String contextPath, String seamDir) {
+ String browserUrl, String speed, String timeout, String propertyFile, @Optional("") String contextPath, String seamDir, String jbossHome) {
HOST = host;
PORT = Integer.parseInt(port);
BROWSER = browser;
@@ -74,6 +76,7 @@
CONTEXT_PATH = APP_NAME = contextPath;
SEAM_DIR = seamDir;
OUTPUT_DIR = SEAM_DIR + "/test-output/functional-framework";
+ JBOSS_HOME = jbossHome;
}
@BeforeMethod
@@ -96,14 +99,12 @@
return newBrowser;
}
-
- public void stopBrowser()
- {
- if (browser != null)
- {
- browser.stop();
- }
- }
+ public void stopBrowser() {
+ if (browser != null)
+ {
+ browser.stop();
+ }
+ }
public String getProperty(String key) {
if (!propertiesLoaded) {
More information about the seam-commits
mailing list