diff options
author | Sauli Tähkäpää <sauli@vaadin.com> | 2014-04-02 08:51:27 +0300 |
---|---|---|
committer | Jonatan Kronqvist <jonatan@vaadin.com> | 2014-04-09 05:08:12 +0000 |
commit | 5057c59a02b6570f6a314dee3379688f0a48981b (patch) | |
tree | 28d2df7c8d84afb2698adf7f6856a3dafab26e3d /uitest | |
parent | 08b0589d05e69da58b58c42b96a69c9331fdce25 (diff) | |
download | vaadin-framework-5057c59a02b6570f6a314dee3379688f0a48981b.tar.gz vaadin-framework-5057c59a02b6570f6a314dee3379688f0a48981b.zip |
Added integration test for WebSphere Portal. (#13309)
Change-Id: I576fb145cd34f98ffa90657e20f5a7c1854f470c
Diffstat (limited to 'uitest')
-rw-r--r-- | uitest/integration_tests.xml | 30 | ||||
-rw-r--r-- | uitest/ivy.xml | 4 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/integration/WebSpherePortalIntegrationTest.java | 163 |
3 files changed, 189 insertions, 8 deletions
diff --git a/uitest/integration_tests.xml b/uitest/integration_tests.xml index 77c5a94e26..c0d73580bb 100644 --- a/uitest/integration_tests.xml +++ b/uitest/integration_tests.xml @@ -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}" /> diff --git a/uitest/ivy.xml b/uitest/ivy.xml index 3ed5609319..add29985f1 100644 --- a/uitest/ivy.xml +++ b/uitest/ivy.xml @@ -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" diff --git a/uitest/src/com/vaadin/tests/integration/WebSpherePortalIntegrationTest.java b/uitest/src/com/vaadin/tests/integration/WebSpherePortalIntegrationTest.java new file mode 100644 index 0000000000..16c4d80b6e --- /dev/null +++ b/uitest/src/com/vaadin/tests/integration/WebSpherePortalIntegrationTest.java @@ -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)); + + } + +} |