<?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">
	<parent>
		<relativePath>../pom.xml</relativePath>
		<groupId>org.apache.portals.pluto</groupId>
		<artifactId>pluto</artifactId>
		<version>3.1.1-SNAPSHOT</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>
	<groupId>javax.portlet</groupId>
	<artifactId>demo-integration-tests</artifactId>
	<description>Integration Tests for the Pluto Demos</description>
	<packaging>jar</packaging>
	<licenses>
		<license>
			<name>apache_v2</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
		</license>
	</licenses>
	<scm>
		<connection>scm:git:https://git-wip-us.apache.org/repos/asf/portals-pluto.git</connection>
		<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/portals-pluto.git</developerConnection>
		<url>https://github.com/apache/portals-pluto</url>
		<tag>HEAD</tag>
	</scm>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<test.portal.name>Pluto</test.portal.name>
		<!-- test.context.base context string used when addressing test pages. Used by module stylesheet -->
		<test.context.base>pluto/portal/</test.context.base>
		<test.dependency.portlet.default.jquery.version>1.12.3</test.dependency.portlet.default.jquery.version>
		<!-- This variable is used by the test driver to determine how test
      page links are to be found. Values: generateURLs the driver generates URLs
      based on config information. followLinks the driver looks for links containing
      the page name and clicks them in order to access the test pages. In this
      case, the portal must produce navigation links to each of the test pages.
      If configured to generate URLs, the driver generates URLs of the form: http://<test.server.host>:<test.server.port>/<test.context.base><test.page.name>
      where <test.page.name> is the name of the test page generated by the individual
      modules -->
		<test.url.strategy>followLinks</test.url.strategy>
		<!-- Configuration of portlet container under test for generated URLs -->
		<!-- (only needed if test.url.strategy=generateURLs) -->
		<test.server.host>localhost</test.server.host>
		<test.server.port>8080</test.server.port>
		<!-- Configuration of URL to login page -->
		<test.server.login.url>http://${test.server.host}:${test.server.port}/pluto/portal/About Apache Pluto</test.server.login.url>
		<!-- HTML field IDs and values for username & password to enable automatic  login -->
		<!-- User specified must be in 'tckuser' role. Please configure 'tckuser' role for the specified user in tomcat-users.xml -->
		<test.server.username.id>j_username</test.server.username.id>
		<test.server.username>pluto</test.server.username>
		<test.server.password.id>j_password</test.server.password.id>
		<test.server.password>pluto</test.server.password>
		<!-- Specifies the browser to be used by selenium WebDriver for running the tests. -->
		<!-- Can be used with firefox or HTMLUnit without setting the test.browser.webDriver property. -->
		<!-- Use of Chrome or IE requires the webDriver to be downloaded and available. Set the -->
		<!-- test.browser.webDriver property to point to the appropriate WebDriver server. -->
		<test.browser>firefox</test.browser>
		<test.browser>HTMLUnit</test.browser>
		<!-- Lines commented out below illustrate how the chromedriver web driver can be configured -->
		<test.browser>chrome</test.browser>
		<test.browser.webDriver>c:/ntutil/chromedriver.exe</test.browser.webDriver>
		<!-- commented outline below shows configuration for the Internet Explorer driver -->
		<!-- test.browser.webDriver>C:\ntutil\IEDriverServer_x64_2.42.0\IEDriverServer.exe</test.browser.webDriver -->
		<!-- Configuration for phantomJS driver -->
		<!-- To use phantomJS, remove the comment marks around the following two lines.
      <test.browser>phantomjs</test.browser>
      <test.browser.webDriver>${phantomjs.binary}</test.browser.webDriver>
      -->
		<!-- Specify timeout in seconds for the driver to wait for page load. must be an integer. -->
		<test.timeout>3</test.timeout>
	</properties>
	<dependencies>
		<!-- For creating and executing tests -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.portals.pluto</groupId>
			<artifactId>test-base</artifactId>
			<version>${project.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>htmlunit-driver</artifactId>
		</dependency>
		<dependency>
			<groupId>com.codeborne</groupId>
			<artifactId>phantomjsdriver</artifactId>
		</dependency>
	</dependencies>
	<build>
		<finalName>${project.artifactId}</finalName>
		<plugins>
			<!-- skip legal file checking for now -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>ianal-maven-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>verify-legal-files</goal>
						</goals>
						<configuration>
							<skip>true</skip>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<skipIfEmpty>true</skipIfEmpty>
				</configuration>
			</plugin>
			<!-- Don't attach source or javadoc archive (for release plugin)-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<configuration>
					<attach>false</attach>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-gpg-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-install-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-release-plugin</artifactId>
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>
		</plugins>
	</build>
	<reporting>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-report-plugin</artifactId>
				<version>2.17</version>
				<configuration>
					<aggregate>true</aggregate>
					<reportsDirectories>
						<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
						<reportsDirectory>${project.build.directory}/jasmine</reportsDirectory>
					</reportsDirectories>
				</configuration>
			</plugin>
		</plugins>
	</reporting>
	<!-- To build the tests, use "mvn clean install" from the parent directory. -->
	<!-- To run all of the tests, use "mvn verify -Prun-demo-tests" from the demo-integration-tests directory. -->
	<!-- To run a subset of the tests, use "mvn verify -Prun-demo-tests -Dit.test=\*<match string>\*" from the -->
	<!-- demo-integration-tests directory. The driver will then execute all tests whose test case name contains the -->
	<!-- specified string. -->
	<!-- Example: "mvn verify -Prun-demo-tests -Dit.test=\*PortleHubDemo\*" will execute all PortletHubDemo tests. -->
	<profiles>
		<profile>
			<id>liferay</id>
			<properties>
				<test.portal.name>Liferay</test.portal.name>
				<test.server.login.url>http://${test.server.host}:${test.server.port}/group/pluto-demos</test.server.login.url>
				<test.context.base>web/guest/</test.context.base>
			</properties>
		</profile>
		<profile>
			<id>run-demo-tests</id>
			<build>
				<plugins>
					<!-- For running the tests. -->
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-failsafe-plugin</artifactId>
						<version>2.22.0</version>
						<executions>
							<execution>
								<goals>
									<goal>integration-test</goal>
								</goals>
								<configuration>
									<useFile>true</useFile>
									<argLine>-Xms512m -Xmx512m</argLine>
									<trimStackTrace>false</trimStackTrace>
									<systemProperties>
										<property>
											<name>test.portal.name</name>
											<value>${test.portal.name}</value>
										</property>
										<property>
											<name>test.server.login.url</name>
											<value>${test.server.login.url}</value>
										</property>
										<property>
											<name>test.context.base</name>
											<value>${test.context.base}</value>
										</property>
										<property>
											<name>test.url.strategy</name>
											<value>${test.url.strategy}</value>
										</property>
										<property>
											<name>test.server.host</name>
											<value>${test.server.host}</value>
										</property>
										<property>
											<name>test.server.port</name>
											<value>${test.server.port}</value>
										</property>
										<property>
											<name>test.server.username.id</name>
											<value>${test.server.username.id}</value>
										</property>
										<property>
											<name>test.server.username</name>
											<value>${test.server.username}</value>
										</property>
										<property>
											<name>test.server.password.id</name>
											<value>${test.server.password.id}</value>
										</property>
										<property>
											<name>test.server.password</name>
											<value>${test.server.password}</value>
										</property>
										<property>
											<name>test.browser</name>
											<value>${test.browser}</value>
										</property>
										<property>
											<name>test.browser.webDriver</name>
											<value>${test.browser.webDriver}</value>
										</property>
										<property>
											<name>test.browser.binary</name>
											<value>${test.browser.binary}</value>
										</property>
										<property>
											<name>test.browser.headless</name>
											<value>${test.browser.headless}</value>
										</property>
										<property>
											<name>test.browser.maximized</name>
											<value>true</value>
										</property>
										<property>
											<name>test.module</name>
											<value>${test.module}</value>
										</property>
										<property>
											<name>test.debug</name>
											<value>false</value>
										</property>
										<property>
											<name>test.timeout</name>
											<value>${test.timeout}</value>
										</property>
										<property>
											<name>test.dependency.portlet.default.jquery.version</name>
											<value>${test.dependency.portlet.default.jquery.version}</value>
										</property>
									</systemProperties>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
