Change-Id: I576fb145cd34f98ffa90657e20f5a7c1854f470ctags/7.1.14
@@ -114,7 +114,7 @@ | |||
<property name="server.report.dir" location="${report.dir}/integration-test-tb3/${server-name}" /> | |||
<!-- The junit task does not create the report dir... --> | |||
<mkdir dir="${server.report.dir}" /> | |||
<junit showoutput="no" printsummary="no" fork="yes"> | |||
<formatter type="xml" /> | |||
<classpath refid="classpath.tb3" /> | |||
@@ -123,6 +123,7 @@ | |||
<jvmarg value="-Ddeployment.url=${deployment.url}" /> | |||
<jvmarg value="-Dserver-name=${server-name}" /> | |||
<jvmarg value="-Djava.awt.headless=true" /> | |||
<jvmarg value="-Ddemo.war=${demo.war}" /> | |||
<test name="${junit.test.suite}" todir="${server.report.dir}" /> | |||
</junit> | |||
</target> | |||
@@ -343,6 +344,20 @@ | |||
</antcall> | |||
</target> | |||
<target name="integration-test-websphereportal8"> | |||
<concat>##teamcity[testStarted name='websphereportal8' flowId='websphereportal8']</concat> | |||
<antcall target="run-tb3-test" inheritall="true"> | |||
<param name="junit.test.suite" value="com.vaadin.tests.integration.WebSpherePortalIntegrationTest" /> | |||
<param name="server-name" value="websphereportal8" /> | |||
<!-- Fill out dummy values for params required by run-tb3-test target --> | |||
<param name="test.integration.server" value="" /> | |||
<param name="test.integration.user" value="" /> | |||
<param name="test.integration.antfile" value="" /> | |||
</antcall> | |||
<concat>##teamcity[testFinished name='websphereportal8' flowId='websphereportal8']"</concat> | |||
</target> | |||
<target name="integration-test-weblogic10"> | |||
<antcall target="run-generic-integration-test"> | |||
<param name="startDelay" value="600" /> | |||
@@ -375,7 +390,7 @@ | |||
<antcall target="integration-test-test-GAE" /> | |||
</target> | |||
<!-- Upload demo, clean error screenshots and test deployment on all | |||
<!-- Upload demo, clean error screenshots and test deployment on all | |||
servers --> | |||
<target name="integration-test-all" unless="tests.integration.skip"> | |||
<property name="passphrase" value="${passphrase}" /> | |||
@@ -387,7 +402,7 @@ | |||
<parallel> | |||
<antcontrib:trycatch property="tried"> | |||
<try> | |||
<!-- Still running GAE test from the old server which | |||
<!-- Still running GAE test from the old server which | |||
requires its own lock --> | |||
<echo message="Getting lock" /> | |||
@@ -439,6 +454,7 @@ | |||
<antcall target="integration-test-tomcat8" /> | |||
<antcall target="integration-test-tomcat7apacheproxy" /> | |||
<antcall target="integration-test-websphere8" /> | |||
<antcall target="integration-test-websphereportal8" /> | |||
</parallel> | |||
</target> | |||
@@ -468,11 +484,11 @@ | |||
</fileset> | |||
</scp> | |||
<!-- trycatch probably not needed any more as it just fails with | |||
<!-- trycatch probably not needed any more as it just fails with | |||
the original message and doesn't do anything in the finally block --> | |||
<antcontrib:trycatch property="error_message"> | |||
<try> | |||
<!-- timeout in one hour (remote end should timeout in 55 | |||
<!-- timeout in one hour (remote end should timeout in 55 | |||
minutes) --> | |||
<sshexec host="${target-host}" outputproperty="lock-output" timeout="3600000" username="${user}" keyfile="${sshkey.file}" trust="yes" command="chmod +x *.sh; ant -f deploy.xml get-lock" /> | |||
<antcall target="echo-prefix"> | |||
@@ -515,7 +531,7 @@ | |||
</antcontrib:else> | |||
</antcontrib:if> | |||
<!-- Run theme tests in all browsers if there's a property | |||
<!-- Run theme tests in all browsers if there's a property | |||
with the test files --> | |||
<antcontrib:if> | |||
<isset property="testfiles-theme" /> | |||
@@ -565,7 +581,7 @@ | |||
<target name="teamcity-escape"> | |||
<property name="returnTo" value="return" /> | |||
<!-- Should also perform other escaping (\u0085, \u2028 and \u2029) | |||
<!-- Should also perform other escaping (\u0085, \u2028 and \u2029) | |||
- see http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity --> | |||
<!-- Immutable properties -> needs to create a new one every time --> | |||
<antcontrib:propertyregex property="details-escaped1" input="${message}" regexp="['|\[\]]" replace="|\0" global="true" defaultValue="${message}" /> |
@@ -57,7 +57,9 @@ | |||
<!-- For compiling TestingWidgetSet --> | |||
<dependency org="com.vaadin" name="vaadin-client-compiler" | |||
rev="${vaadin.version}" conf="build-provided-> build"></dependency> | |||
rev="${vaadin.version}" conf="build-provided-> build"> | |||
<exclude type="pom" /> | |||
</dependency> | |||
<!-- Servlet 3.0 API --> | |||
<dependency org="javax.servlet" name="javax.servlet-api" |
@@ -0,0 +1,163 @@ | |||
/* | |||
* Copyright 2000-2013 Vaadin Ltd. | |||
* | |||
* Licensed 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. | |||
*/ | |||
package com.vaadin.tests.integration; | |||
import static org.hamcrest.CoreMatchers.is; | |||
import static org.hamcrest.MatcherAssert.assertThat; | |||
import java.io.BufferedReader; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.io.InputStreamReader; | |||
import org.junit.AfterClass; | |||
import org.junit.BeforeClass; | |||
import org.junit.Test; | |||
import org.openqa.selenium.By; | |||
import org.openqa.selenium.support.ui.ExpectedConditions; | |||
import org.openqa.selenium.support.ui.WebDriverWait; | |||
import com.jcraft.jsch.ChannelExec; | |||
import com.jcraft.jsch.ChannelSftp; | |||
import com.jcraft.jsch.JSch; | |||
import com.jcraft.jsch.JSchException; | |||
import com.jcraft.jsch.Session; | |||
import com.jcraft.jsch.SftpException; | |||
import com.vaadin.tests.tb3.PrivateTB3Configuration; | |||
public class WebSpherePortalIntegrationTest extends PrivateTB3Configuration { | |||
@BeforeClass | |||
public static void deployPortlet() throws JSchException, SftpException { | |||
Session session = openSession(); | |||
uploadDemoApplication(session); | |||
sendCommand(session, "ant -f deploy.xml get-lock startup-and-deploy"); | |||
session.disconnect(); | |||
} | |||
private static void uploadDemoApplication(Session session) | |||
throws JSchException, SftpException { | |||
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp"); | |||
sftpChannel.connect(); | |||
String applicationPath = System.getProperty("demo.war"); | |||
if (new File(applicationPath).exists()) { | |||
sftpChannel.put(applicationPath, "demo.war"); | |||
sftpChannel.disconnect(); | |||
} else { | |||
sftpChannel.disconnect(); | |||
throw new AssertionError("Demo application not found at " | |||
+ applicationPath); | |||
} | |||
} | |||
private static void sendCommand(Session session, String command) | |||
throws JSchException { | |||
ChannelExec channel = (ChannelExec) session.openChannel("exec"); | |||
channel.setCommand(command); | |||
BufferedReader in; | |||
try { | |||
in = new BufferedReader(new InputStreamReader( | |||
channel.getInputStream())); | |||
channel.connect(); | |||
String msg = null; | |||
while ((msg = in.readLine()) != null) { | |||
System.out.println(msg); | |||
} | |||
} catch (IOException e) { | |||
e.printStackTrace(); | |||
} | |||
channel.disconnect(); | |||
} | |||
private static Session openSession() throws JSchException { | |||
JSch jsch = new JSch(); | |||
Session session = jsch.getSession("integration", | |||
"websphereportal8.devnet.vaadin.com", 22); | |||
jsch.addIdentity("~/.ssh/id_dsa"); | |||
session.setConfig("StrictHostKeyChecking", "no"); | |||
session.connect(); | |||
return session; | |||
} | |||
@AfterClass | |||
public static void teardown() throws JSchException { | |||
Session session = openSession(); | |||
sendCommand(session, "ant -f deploy.xml release-lock"); | |||
session.disconnect(); | |||
} | |||
@Override | |||
protected java.lang.String getTestUrl() { | |||
return "http://websphereportal8.devnet.vaadin.com:10039/wps/portal"; | |||
} | |||
@Override | |||
public void setup() throws Exception { | |||
super.setup(); | |||
openTestURL(); | |||
if (!isLoggedIn()) { | |||
login(); | |||
} | |||
waitUntilPortletIsLoaded(); | |||
} | |||
private void waitUntilPortletIsLoaded() { | |||
WebDriverWait wait = new WebDriverWait(driver, 15); | |||
wait.until(ExpectedConditions.visibilityOfElementLocated(By | |||
.className("v-app"))); | |||
} | |||
private boolean isLoggedIn() { | |||
return driver.findElements(By.linkText("Log Out")).size() == 1; | |||
} | |||
private void login() { | |||
driver.findElement(By.linkText("Log In")).click(); | |||
driver.findElement(By.id("userID")).sendKeys("test"); | |||
driver.findElement(By.id("password")).sendKeys("testtest"); | |||
hitButton("login.button.login"); | |||
} | |||
@Test | |||
public void portletHasExpectedLayout() throws IOException { | |||
compareScreen("initial"); | |||
} | |||
@Test | |||
public void viewModeIsSetToEdit() throws IOException { | |||
driver.findElement(By.linkText("Edit")).click(); | |||
assertThat(driver.findElement(By.tagName("input")).isEnabled(), | |||
is(true)); | |||
} | |||
} |