blob: 6aa386c863ab3a480cbd642316a08a457b2c76ac [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.archiva</groupId>
<artifactId>archiva-web</artifactId>
<version>3.0.0-SNAPSHOT</version>
</parent>
<artifactId>archiva-webapp-test</artifactId>
<packaging>pom</packaging>
<name>Archiva Web :: Javascript Application Tests</name>
<properties>
<webappDirectory>${project.build.directory}/container/webapps/archiva</webappDirectory>
<container.propertiesPortFilePath>${project.build.directory}/container-port.properties
</container.propertiesPortFilePath>
<maxWaitTimeInMs>10000</maxWaitTimeInMs>
<selenium-server.version>3.4.0</selenium-server.version>
<fluentlenium.version>3.2.0</fluentlenium.version>
<fluentlenium.festassert.version>0.13.2</fluentlenium.festassert.version>
<browserPath/>
<site.staging.base>${project.parent.parent.basedir}</site.staging.base>
</properties>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>org.apache.archiva</groupId>
<artifactId>archiva-webapp</artifactId>
<type>war</type>
</dependency>
<!-- <dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-slf4j-logging</artifactId>
<exclusions>
<exclusion>
<artifactId>plexus-component-api</artifactId>
<groupId>org.codehaus.plexus</groupId>
</exclusion>
</exclusions>
</dependency>-->
<!--
jcr-oak currently needs guava 15.0 and selenium webdriver needs 22.0
This is a rather poor workaround here better would be a way to use
the higher version for all scopes.
TODO: Check what's necessary to get jcr oak running with 22.0
-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>22.0</version>
</dependency>
<!-- Selenium dependencies -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<scope>test</scope>
<version>${selenium-server.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-common</artifactId>
</exclusion>
<exclusion>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>neko-htmlunit</artifactId>
</exclusion>
<exclusion>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit-core-js</artifactId>
</exclusion>
<exclusion>
<groupId>net.sourceforge.cssparser</groupId>
<artifactId>cssparser</artifactId>
</exclusion>
<exclusion>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>htmlunit-driver</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-leg-rc</artifactId>
<scope>test</scope>
<version>${selenium-server.version}</version>
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-common</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<scope>test</scope>
<version>${selenium-server.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-common</artifactId>
</exclusion>
<exclusion>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>neko-htmlunit</artifactId>
</exclusion>
<exclusion>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit-core-js</artifactId>
</exclusion>
<exclusion>
<groupId>net.sourceforge.cssparser</groupId>
<artifactId>cssparser</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.fluentlenium</groupId>
<artifactId>fluentlenium-core</artifactId>
<version>${fluentlenium.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.fluentlenium</groupId>
<artifactId>fluentlenium-festassert</artifactId>
<version>${fluentlenium.festassert.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.fluentlenium</groupId>
<artifactId>fluentlenium-junit</artifactId>
<version>${fluentlenium.version}</version>
<scope>test</scope>
</dependency>
<!-- End of Selenium dependencies -->
<!-- Dependency for MavenConnectionTest -->
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
</dependency>
<!-- Dependencies below are provided by the appserver -->
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
<version>${jetty.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-api</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-client</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>htmlunit-driver</artifactId>
<version>${htmlUnitVersion}</version>
</dependency>
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>${htmlUnitVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-slf4j-logging</artifactId>
</dependency>
</dependencies>
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*</include>
</includes>
</testResource>
</testResources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<configuration>
<excludes>
<exclude>src/test/resources/appserver-base/**</exclude>
<exclude>src/test/resources/repository/**</exclude>
<exclude>src/test/resources/local-repo/**</exclude>
<exclude>src/test/resources/projects/**</exclude>
<exclude>src/test/resources/snapshots/**</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<configuration>
<portNames>
<portName>container.http.port</portName>
<portName>container.stop.port</portName>
</portNames>
<fileSet/>
<name/>
<regex/>
<source/>
<value/>
</configuration>
<executions>
<execution>
<id>reserve-port</id>
<phase>pre-integration-test</phase>
<goals>
<goal>reserve-network-port</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>testResources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.20</version>
<configuration>
<redirectTestOutputToFile>false</redirectTestOutputToFile>
<runOrder>alphabetical</runOrder>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
<executions>
<execution>
<id>integration-tests</id>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<systemPropertyVariables>
<browser>${selenium.browser}</browser>
<selenium.browser>${selenium.browser}</selenium.browser>
<baseUrl>${baseUrl}</baseUrl>
<maxWaitTimeInMs>${maxWaitTimeInMs}</maxWaitTimeInMs>
<seleniumHost>${seleniumHost}</seleniumHost>
<seleniumPort>${seleniumPort}</seleniumPort>
<seleniumRemote>${seleniumRemote}</seleniumRemote>
<container.propertiesPortFilePath>${container.propertiesPortFilePath}</container.propertiesPortFilePath>
<container.http.port>${container.http.port}</container.http.port>
<org.sonatype.inject.debug>true</org.sonatype.inject.debug>
</systemPropertyVariables>
</configuration>
</execution>
<execution>
<id>verify</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>create-container</id>
<activation>
<property>
<name>!container</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unzip-archiva-webapp</id>
<phase>compile</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>archiva-webapp</artifactId>
<version>${project.version}</version>
<type>war</type>
</artifactItem>
</artifactItems>
<outputDirectory>${webappDirectory}</outputDirectory>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<copy overwrite="true" todir="${webappDirectory}/WEB-INF/classes">
<fileset dir="src/test/resources/logging"/>
</copy>
<copy todir="${project.build.directory}/appserver-base">
<fileset dir="src/test/resources/appserver-base"/>
</copy>
<copy todir="${project.build.directory}/repository">
<fileset dir="src/test/resources/repository"/>
</copy>
<copy todir="${project.build.directory}/index">
<fileset dir="src/test/resources/index"/>
</copy>
<copy todir="${project.build.directory}/snapshots">
<fileset dir="src/test/resources/snapshots"/>
</copy>
<copy todir="${project.build.directory}/projects">
<fileset dir="src/test/resources/projects"/>
</copy>
<copy todir="${project.build.directory}/local-repo">
<fileset dir="src/test/resources/local-repo"/>
</copy>
<copy todir="${project.build.directory}/errorshtmlsnap/css">
<fileset dir="${webappDirectory}/css"/>
</copy>
<copy todir="${project.build.directory}/errorshtmlsnap/js">
<fileset dir="${webappDirectory}/js"/>
</copy>
<copy todir="${project.build.directory}/errorshtmlsnap/img">
<fileset dir="${webappDirectory}/img"/>
</copy>
<copy todir="${project.build.directory}/errorshtmlsnap/images">
<fileset dir="${webappDirectory}/images"/>
</copy>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
<configuration>
<stopKey>archivastop</stopKey>
<stopPort>${container.stop.port}</stopPort>
<stopWait>30</stopWait>
<httpConnector>
<port>${container.http.port}</port>
</httpConnector>
<supportedPackagings>
<supportedPackaging>pom</supportedPackaging>
</supportedPackagings>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>${derbyVersion}</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>${javaxMailVersion}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>22.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>jetty-run</id>
<goals>
<goal>deploy-war</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<daemon>true</daemon>
<webApp>
<contextPath>/archiva</contextPath>
<jettyEnvXml>${project.build.testOutputDirectory}/jetty/jetty-env.xml</jettyEnvXml>
</webApp>
<war>${webappDirectory}</war>
<systemProperties>
<systemProperty>
<name>appserver.base</name>
<value>${project.build.directory}/appserver-base</value>
</systemProperty>
<systemProperty>
<name>appserver.home</name>
<value>${project.build.directory}/appserver-base</value>
</systemProperty>
<systemProperty>
<name>derby.system.home</name>
<value>${project.build.directory}</value>
</systemProperty>
<systemProperty>
<name>archiva.devMode</name>
<value>true</value>
</systemProperty>
<systemProperty>
<name>openjpa.Log</name>
<value>${openjpa.Log}</value>
</systemProperty>
<systemProperty>
<name>org.apache.jackrabbit.core.state.validatehierarchy</name>
<value>true</value>
</systemProperty>
<systemProperty>
<name>org.apache.logging.log4j.simplelog.StatusLogger.level</name>
<value>TRACE</value>
</systemProperty>
<systemProperty>
<name>log4j.configurationFile</name>
<value>${project.build.directory}/test-classes/log4j2-test.xml</value>
</systemProperty>
<systemProperty>
<name>org.sonatype.inject.debug</name>
<value>true</value>
</systemProperty>
</systemProperties>
</configuration>
</execution>
<execution>
<id>jetty-shutdown</id>
<goals>
<goal>stop</goal>
</goals>
<phase>post-integration-test</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>existing-container</id>
<activation>
<property>
<name>!baseUrl</name>
</property>
</activation>
<properties>
<baseUrl>http://localhost:${container.http.port}/archiva</baseUrl>
</properties>
</profile>
<profile>
<id>seleniumHost</id>
<activation>
<property>
<name>!seleniumHost</name>
</property>
</activation>
<properties>
<seleniumHost>localhost</seleniumHost>
</properties>
</profile>
<profile>
<id>seleniumPort</id>
<activation>
<property>
<name>!seleniumPort</name>
</property>
</activation>
<properties>
<seleniumPort/>
</properties>
</profile>
<profile>
<id>seleniumRemote</id>
<activation>
<property>
<name>!seleniumRemote</name>
</property>
</activation>
<properties>
<seleniumRemote>false</seleniumRemote>
</properties>
</profile>
<profile>
<id>htmlunit</id>
<activation>
<property>
<name>!browser</name>
</property>
</activation>
<properties>
<selenium.browser>*htmlunit</selenium.browser>
<excluded.groups/>
</properties>
</profile>
<profile>
<id>firefox</id>
<activation>
<property>
<name>browser</name>
<value>firefox</value>
</property>
</activation>
<properties>
<selenium.browser>*firefox</selenium.browser>
<excluded.groups/>
</properties>
</profile>
<profile>
<id>chrome</id>
<activation>
<property>
<name>browser</name>
<value>chrome</value>
</property>
</activation>
<properties>
<selenium.browser>*googlechrome</selenium.browser>
<excluded.groups>requiresUpload</excluded.groups>
</properties>
</profile>
<profile>
<id>iexplore</id>
<activation>
<property>
<name>browser</name>
<value>iexplore</value>
</property>
</activation>
<properties>
<selenium.browser>*iexplore</selenium.browser>
<excluded.groups>requiresUpload</excluded.groups>
</properties>
</profile>
<profile>
<id>safari</id>
<activation>
<property>
<name>browser</name>
<value>safari</value>
</property>
</activation>
<properties>
<selenium.browser>*safari</selenium.browser>
<excluded.groups>requiresUpload</excluded.groups>
</properties>
</profile>
<profile>
<id>otherbrowser</id>
<activation>
<property>
<name>browser</name>
<value>other</value>
</property>
</activation>
<properties>
<selenium.browser>*custom ${browserPath}</selenium.browser>
<excluded.groups>requiresUpload</excluded.groups>
</properties>
</profile>
<profile>
<id>headless</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>selenium-maven-plugin</artifactId>
<executions>
<execution>
<id>xvfb</id>
<phase>validate</phase>
<goals>
<goal>xvfb</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>ci-server</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>cleanup-files</id>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<failOnError>false</failOnError>
<target>
<delete file="${user.home}/.m2/archiva.xml"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>