Author: tchemit Date: 2012-06-12 11:08:23 +0200 (Tue, 12 Jun 2012) New Revision: 3449 Url: http://chorem.org/repositories/revision/pollen/3449 Log: refs #606: Add some ITs to prevent regression Added: trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/PollenBaseWebDriverIT.java trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/WebDriverResource.java trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/security/ trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/security/LoginSIT.java trunk/pollen-ui-struts2/src/test/resources/ trunk/pollen-ui-struts2/src/test/resources/log4j.properties trunk/pollen-ui-struts2/src/test/resources/pollen-fake.properties trunk/pollen-ui-struts2/src/test/resources/pollendb.h2.db Modified: trunk/pollen-ui-struts2/pom.xml trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/PollenApplicationListener.java trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/decorators/layout-default.jsp trunk/pom.xml Modified: trunk/pollen-ui-struts2/pom.xml =================================================================== --- trunk/pollen-ui-struts2/pom.xml 2012-06-12 09:02:54 UTC (rev 3448) +++ trunk/pollen-ui-struts2/pom.xml 2012-06-12 09:08:23 UTC (rev 3449) @@ -186,6 +186,39 @@ <artifactId>junit</artifactId> </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-java</artifactId> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-api</artifactId> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-support</artifactId> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-chrome-driver</artifactId> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-firefox-driver</artifactId> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-htmlunit-driver</artifactId> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-ie-driver</artifactId> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-safari-driver</artifactId> + </dependency> + </dependencies> <!-- ************************************************************* --> @@ -217,7 +250,23 @@ <!-- call result war : pollen-xxx.war --> <finalName>pollen-${project.version}</finalName> - <!-- Add main class into war to make it executable --> + <testResources> + <testResource> + <directory>src/test/resources</directory> + <filtering>true</filtering> + <includes> + <include>**/*.properties</include> + </includes> + </testResource> + <testResource> + <directory>src/test/resources</directory> + <filtering>false</filtering> + <excludes> + <exclude>**/*.properties</exclude> + </excludes> + </testResource> + </testResources> + <plugins> <plugin> @@ -323,6 +372,7 @@ </execution> </executions> </plugin> + <!-- Compile jsp for embedded war --> <plugin> @@ -485,6 +535,74 @@ </profile> + <profile> + <id>selenium</id> + <activation> + <property> + <name>selenium</name> + <value>true</value> + </property> + </activation> + + <build> + <defaultGoal>integration-test</defaultGoal> + <plugins> + + <plugin> + <groupId>org.apache.tomcat.maven</groupId> + <artifactId>tomcat7-maven-plugin</artifactId> + <executions> + <execution> + <phase>pre-integration-test</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <fork>true</fork> + <path>/pollen</path> + <useTestClasspath>true</useTestClasspath> + <systemProperties> + <pollenConfigurationFile> + ${basedir}/target/test-classes/pollen-fake.properties + </pollenConfigurationFile> + <generateDataDirectory> + ${basedir}/target/pollen-dataDirectory + </generateDataDirectory> + <incomingDatabase>${basedir}/target/test-classes/pollendb.h2.db</incomingDatabase> + </systemProperties> + <uriEncoding>UTF-8</uriEncoding> + </configuration> + </execution> + </executions> + </plugin> + + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <!-- Skip the normal tests, we'll run them in the integration-test phase --> + <skip>true</skip> + </configuration> + <executions> + + <execution> + <phase>integration-test</phase> + <goals> + <goal>test</goal> + </goals> + <configuration> + <skip>false</skip> + <includes> + <include>**/*SIT.java</include> + </includes> + </configuration> + </execution> + </executions> + </plugin> + + </plugins> + </build> + </profile> + </profiles> </project> Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/PollenApplicationListener.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/PollenApplicationListener.java 2012-06-12 09:02:54 UTC (rev 3448) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/PollenApplicationListener.java 2012-06-12 09:08:23 UTC (rev 3449) @@ -25,10 +25,12 @@ import com.google.common.collect.Maps; import com.opensymphony.xwork2.ActionContext; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.pollen.PollenApplicationContext; import org.chorem.pollen.PollenConfiguration; +import org.chorem.pollen.PollenConfigurationOption; import org.chorem.pollen.PollenTechnicalException; import org.chorem.pollen.PollenTopiaRootContextFactory; import org.chorem.pollen.entities.PollenDAOHelper; @@ -52,6 +54,7 @@ import java.util.Date; import java.util.Locale; import java.util.Map; +import java.util.Properties; /** * To listen start or end of the application. @@ -93,7 +96,51 @@ applicationContext); // initialize configuration - PollenConfiguration configuration = new PollenConfiguration(); + PollenConfiguration configuration; + String pollenConfigurationFile = System.getProperty("pollenConfigurationFile"); + if (StringUtils.isNotBlank(pollenConfigurationFile)) { + if (log.isInfoEnabled()) { + log.info("Used custom configuration file " + + pollenConfigurationFile); + } + String generateDataDirectory = System.getProperty("generateDataDirectory"); + + Properties defaultOptions = new Properties(); + if (StringUtils.isNotBlank(generateDataDirectory)) { + + File dataDirectory = new File( + generateDataDirectory + + File.separator + System.nanoTime()); + if (log.isInfoEnabled()) { + log.info("Use data directory " + dataDirectory); + } + defaultOptions.put(PollenConfigurationOption.DATA_DIR.getKey(), + dataDirectory.getAbsolutePath()); + + String incomingDb = System.getProperty("incomingDatabase"); + + if (StringUtils.isNotBlank(incomingDb)) { + + // copy db to correct path + File dbDirectory = new File(dataDirectory, "db"); + + try { + FileUtils.copyFileToDirectory(new File(incomingDb), dbDirectory); + } catch (IOException e) { + throw new IllegalStateException( + "Could not copy db to "+dbDirectory); + } + } + } + + + configuration = new PollenConfiguration(pollenConfigurationFile, + defaultOptions); + + } else { + + configuration = new PollenConfiguration(); + } applicationContext.setConfiguration(configuration); File temporaryDirectory = configuration.getTemporaryDirectory(); Modified: trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/decorators/layout-default.jsp =================================================================== --- trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/decorators/layout-default.jsp 2012-06-12 09:02:54 UTC (rev 3448) +++ trunk/pollen-ui-struts2/src/main/webapp/WEB-INF/decorators/layout-default.jsp 2012-06-12 09:08:23 UTC (rev 3449) @@ -124,7 +124,7 @@ </span> </s:if> <s:else> - <span onClick="$('#login_menu').toggle()"> + <span id='tologin' onClick="$('#login_menu').toggle()"> <s:text name="pollen.menu.login"/> </span> Added: trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/PollenBaseWebDriverIT.java =================================================================== --- trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/PollenBaseWebDriverIT.java (rev 0) +++ trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/PollenBaseWebDriverIT.java 2012-06-12 09:08:23 UTC (rev 3449) @@ -0,0 +1,63 @@ +/* + * #%L + * T3 :: Web + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2010 - 2011 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package org.chorem.pollen.ui; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Rule; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.openqa.selenium.WebDriver; + +import java.util.Collection; + +/** + * Test base class for ui tests. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.4 + */ +@RunWith(value = Parameterized.class) +public abstract class PollenBaseWebDriverIT { + + /** Logger. */ + protected final Log log = LogFactory.getLog(getClass()); + + @Parameterized.Parameters + public static Collection<Object[]> driverTypes() { + return WebDriverResource.driverTypes(); + } + + @Rule + public WebDriverResource seleniumServer; + + protected PollenBaseWebDriverIT(Class<? extends WebDriver> driverType) { + seleniumServer = new WebDriverResource(getClass(), driverType); + } + + public WebDriver getDriver() { + return seleniumServer.getDriver(); + } + +} Property changes on: trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/PollenBaseWebDriverIT.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/WebDriverResource.java =================================================================== --- trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/WebDriverResource.java (rev 0) +++ trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/WebDriverResource.java 2012-06-12 09:08:23 UTC (rev 3449) @@ -0,0 +1,154 @@ +/* + * #%L + * T3 :: Web + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2010 - 2011 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package org.chorem.pollen.ui; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.rules.ExternalResource; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeDriverService; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.htmlunit.HtmlUnitDriver; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteWebDriver; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +/** + * Web driver resource. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.4 + */ +public class WebDriverResource extends ExternalResource { + + /** Logger. */ + private static final Log log = LogFactory.getLog(WebDriverResource.class); + + private static ChromeDriverService service; + + protected static final Class<? extends WebDriver>[] allDrivers = new Class[]{ +// ChromeDriver.class, +// InternetExplorerDriver.class, +// SafariDriver.class, + FirefoxDriver.class, + HtmlUnitDriver.class + }; + + protected static Collection<Object[]> safeDrivers; + + public static Collection<Object[]> driverTypes() { + if (safeDrivers == null) { + + //System.setProperty("webdriver.chrome.driver", "/usr/bin/google-chrome"); + List<Class<?>> checkedDrivers = new ArrayList<Class<?>>(); + for (Class<? extends WebDriver> driver : allDrivers) { + boolean ok = checkDriver(driver); + if (ok) { + checkedDrivers.add(driver); + } + } + //{{ChromeDriver.class}, {FirefoxDriver.class}, {HtmlUnitDriver.class}} + Object[][] data = new Object[checkedDrivers.size()][1]; + int i = 0; + for (Class<?> checkedDriver : checkedDrivers) { + data[i++][0] = checkedDriver; + } + safeDrivers = Arrays.asList(data); + } + + return safeDrivers; + } + + private static boolean checkDriver(Class<? extends WebDriver> driverType) { + + WebDriver driver = null; + boolean result = false; + try { + driver = driverType.getConstructor().newInstance(); + result = true; + } catch (Exception e) { + + // can not use this driver + if (log.isInfoEnabled()) { + log.info("Can not use driver " + driverType.getName(), e); + } + } finally { + if (driver != null) { + driver.quit(); + } + } + + return result; + } + + private final Class<?> testClass; + + private final Class<? extends WebDriver> driverType; + + protected WebDriver driver; + + public WebDriverResource(Class<?> testClass, + Class<? extends WebDriver> driverType) { + this.testClass = testClass; + this.driverType = driverType; + } + + public WebDriver getDriver() { + return driver; + } + + @Override + protected void before() throws Throwable { + if (log.isInfoEnabled()) { + log.info("Start test [" + testClass.getName() + "] with driver of type " + driverType.getName()); + } + if (ChromeDriver.class == driverType) { + + service = new ChromeDriverService.Builder() + .usingChromeDriverExecutable(new File("/usr/bin/chromium-browser")) + .usingAnyFreePort() + .build(); + service.start(); + + driver = new RemoteWebDriver(service.getUrl(), DesiredCapabilities.chrome()); + + } else { + driver = driverType.getConstructor().newInstance(); + } + } + + @Override + protected void after() { + if (ChromeDriver.class == driverType) { + service.stop(); + } + driver.quit(); + } +} Property changes on: trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/WebDriverResource.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/security/LoginSIT.java =================================================================== --- trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/security/LoginSIT.java (rev 0) +++ trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/security/LoginSIT.java 2012-06-12 09:08:23 UTC (rev 3449) @@ -0,0 +1,153 @@ +/* + * #%L + * T3 :: Web + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2010 - 2011 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * #L% + */ +package org.chorem.pollen.ui.security; + +import junit.framework.Assert; +import org.chorem.pollen.ui.PollenBaseWebDriverIT; +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +import java.util.List; + +/** + * Test the login action. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.4 + */ +public class LoginSIT extends PollenBaseWebDriverIT { + + public LoginSIT(Class<? extends WebDriver> driverType) { + super(driverType); + } + + @Test + public void loginAdmin() throws Exception { + + WebDriver driver = getDriver(); + + driver.get("http://localhost:8080/pollen/home"); + + if (log.isInfoEnabled()) { + log.info("Login url : " + driver.getCurrentUrl()); + } + + // click on tologin element (display the login form) + WebElement loginClick = driver.findElement(By.id("tologin")); + loginClick.click(); + + // Find the text input element by its name + WebElement login = driver.findElement(By.name("login")); + Assert.assertEquals("input", login.getTagName()); + Assert.assertTrue(login.isDisplayed()); + login.sendKeys("admin"); + + WebElement password = driver.findElement(By.name("password")); + Assert.assertTrue(password.isDisplayed()); + Assert.assertEquals("input", password.getTagName()); + password.sendKeys("admin"); + + WebElement submit = driver.findElement(By.name("action:login")); + Assert.assertNotNull(submit); + submit.click(); + + // check info_success is on + driver.findElement(By.className("info_success")); + + // check there is a admin menu (so 4 menus) + List<WebElement> menus = driver.findElements(By.className("menu_elt")); + Assert.assertEquals(4, menus.size()); + } + + @Test + public void loginUser() throws Exception { + + WebDriver driver = getDriver(); + + driver.get("http://localhost:8080/pollen/home"); + + if (log.isInfoEnabled()) { + log.info("Login url : " + driver.getCurrentUrl()); + } + + // click on tologin element (display the login form) + WebElement loginClick = driver.findElement(By.id("tologin")); + Assert.assertNotNull(loginClick); + loginClick.click(); + + // Find the text input element by its name + WebElement login = driver.findElement(By.name("login")); + Assert.assertEquals("input", login.getTagName()); + Assert.assertTrue(login.isDisplayed()); + login.sendKeys("user"); + + WebElement password = driver.findElement(By.name("password")); + Assert.assertTrue(password.isDisplayed()); + Assert.assertEquals("input", password.getTagName()); + password.sendKeys("user"); + + WebElement submit = driver.findElement(By.name("action:login")); + submit.click(); + + // check info_success is on + driver.findElement(By.className("info_success")); + + // check there is not a admin menu (so 2 menus) + List<WebElement> menus = driver.findElements(By.className("menu_elt")); + Assert.assertEquals(3, menus.size()); + } + + @Test + public void badLogin() throws Exception { + + WebDriver driver = getDriver(); + + driver.get("http://localhost:8080/pollen/home"); + + if (log.isInfoEnabled()) { + log.info("Login url : " + driver.getCurrentUrl()); + } + + // click on tologin element (display the login form) + WebElement loginClick = driver.findElement(By.id("tologin")); + Assert.assertNotNull(loginClick); + loginClick.click(); + + // Find the text input element by its name + WebElement login = driver.findElement(By.name("login")); + Assert.assertTrue(login.isDisplayed()); + login.sendKeys("admin"); + + WebElement password = driver.findElement(By.name("password")); + Assert.assertTrue(password.isDisplayed()); + password.sendKeys("admin" + System.currentTimeMillis()); + + WebElement submit = driver.findElement(By.name("action:login")); + submit.click(); + + driver.findElement(By.className("info_error")); + } +} Property changes on: trunk/pollen-ui-struts2/src/test/java/org/chorem/pollen/ui/security/LoginSIT.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/pollen-ui-struts2/src/test/resources/log4j.properties (from rev 3441, trunk/pollen-ui-struts2/src/main/resources/log4j.properties) =================================================================== --- trunk/pollen-ui-struts2/src/test/resources/log4j.properties (rev 0) +++ trunk/pollen-ui-struts2/src/test/resources/log4j.properties 2012-06-12 09:08:23 UTC (rev 3449) @@ -0,0 +1,32 @@ +### +# #%L +# Pollen :: UI (struts2) +# $Id$ +# $HeadURL$ +# %% +# Copyright (C) 2009 - 2012 CodeLutin, Tony Chemit +# %% +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# #L% +### +log4j.rootCategory=ERROR, console + +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=%d [%p] %c %m%n + +log4j.logger.org.chorem=INFO +log4j.logger.org.chorem.pollen.ui.PollenShiroIsAdministratorFilter=DEBUG +log4j.logger.org.nuiton=INFO + Added: trunk/pollen-ui-struts2/src/test/resources/pollen-fake.properties =================================================================== --- trunk/pollen-ui-struts2/src/test/resources/pollen-fake.properties (rev 0) +++ trunk/pollen-ui-struts2/src/test/resources/pollen-fake.properties 2012-06-12 09:08:23 UTC (rev 3449) @@ -0,0 +1,39 @@ +### +# #%L +# Pollen :: UI (struts2) +# $Id$ +# $HeadURL$ +# %% +# Copyright (C) 2009 - 2012 CodeLutin +# %% +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# #L% +### + +# Db configuration +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.connection.username=sa +hibernate.connection.password=sa +hibernate.connection.driver_class=org.h2.Driver +hibernate.show_sql=false +hibernate.hbm2ddl.auto=update + +# Database migration configuration +topia.service.migration=org.nuiton.topia.migration.TopiaMigrationEngine +topia.service.migration.callback=org.chorem.pollen.entities.migration.PollenMigrationCallback +topia.service.migration.showSql=false + +# Version de l'application +pollen.version=${project.version} +siteUrl=http://localhost:8080/pollen \ No newline at end of file Property changes on: trunk/pollen-ui-struts2/src/test/resources/pollen-fake.properties ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/pollen-ui-struts2/src/test/resources/pollendb.h2.db =================================================================== (Binary files differ) Property changes on: trunk/pollen-ui-struts2/src/test/resources/pollendb.h2.db ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2012-06-12 09:02:54 UTC (rev 3448) +++ trunk/pom.xml 2012-06-12 09:08:23 UTC (rev 3449) @@ -192,6 +192,7 @@ <slf4jVersion>1.6.5</slf4jVersion> <jettyVersion>${jettyPluginVersion}</jettyVersion> <hibernateVersion>3.6.10.Final</hibernateVersion> + <seleniumVersion>2.21.0</seleniumVersion> <pollenI18nBundle>pollen-i18n</pollenI18nBundle> <!-- license to use --> @@ -418,6 +419,56 @@ <version>1.1.3</version> </dependency> + <!-- Selenium --> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-api</artifactId> + <version>${seleniumVersion}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-support</artifactId> + <version>${seleniumVersion}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-chrome-driver</artifactId> + <version>${seleniumVersion}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-ie-driver</artifactId> + <version>${seleniumVersion}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-safari-driver</artifactId> + <version>${seleniumVersion}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-firefox-driver</artifactId> + <version>${seleniumVersion}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-htmlunit-driver</artifactId> + <version>${seleniumVersion}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.seleniumhq.selenium</groupId> + <artifactId>selenium-java</artifactId> + <version>${seleniumVersion}</version> + <scope>test</scope> + </dependency> + </dependencies> </dependencyManagement>