summaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2013-03-21 08:59:51 +0200
committerArtur Signell <artur@vaadin.com>2013-03-21 08:59:51 +0200
commitbd3bb24a36a0ad02ffb9cee2e46afc445a354191 (patch)
tree00d9248c84f8b7b60768552c822279c9cf151f45 /uitest
parent320b4e3776976e5dad822f01542f338cf76140bb (diff)
parente4c9eda51082a443822b66864df2fe14be7dc6d7 (diff)
downloadvaadin-framework-bd3bb24a36a0ad02ffb9cee2e46afc445a354191.tar.gz
vaadin-framework-bd3bb24a36a0ad02ffb9cee2e46afc445a354191.zip
Merge commit 'e4c9eda51082a443822b66864df2fe14be7dc6d7'
Conflicts: uitest/test.xml Change-Id: I2c82fa7117b21bddad313abdd2f3f43143317c12
Diffstat (limited to 'uitest')
-rw-r--r--uitest/integration-testscripts/GateIn-3/integration-test-GateIn-3.1.0-portlet2.html148
-rw-r--r--uitest/integration-testscripts/Liferay-6/integration-test-liferay-6.0.5.html27
-rw-r--r--uitest/integration_base_files/base.xml14
-rw-r--r--uitest/src/com/vaadin/tests/components/AbstractTestUIWithLog.java36
-rw-r--r--uitest/src/com/vaadin/tests/components/TestBase.java6
-rw-r--r--uitest/src/com/vaadin/tests/components/checkbox/CheckBoxRevertValueChange.html82
-rw-r--r--uitest/src/com/vaadin/tests/components/checkbox/CheckBoxRevertValueChange.java65
-rw-r--r--uitest/src/com/vaadin/tests/components/media/AudioTest.html66
-rw-r--r--uitest/src/com/vaadin/tests/components/media/AudioTest.java86
-rw-r--r--uitest/src/com/vaadin/tests/components/media/bip.mp3bin0 -> 13837 bytes
-rw-r--r--uitest/src/com/vaadin/tests/components/media/bip.oggbin0 -> 15137 bytes
-rw-r--r--uitest/src/com/vaadin/tests/components/media/toyphone_dialling.mp3bin0 -> 80083 bytes
-rw-r--r--uitest/src/com/vaadin/tests/components/media/toyphone_dialling.oggbin0 -> 77861 bytes
-rw-r--r--uitest/src/com/vaadin/tests/components/table/TableColumnWidthsAndExpandRatios.html83
-rw-r--r--uitest/src/com/vaadin/tests/components/table/TableColumnWidthsAndExpandRatios.java57
-rw-r--r--uitest/src/com/vaadin/tests/components/textarea/ScrollCursor.html169
-rw-r--r--uitest/src/com/vaadin/tests/components/textarea/ScrollCursor.java89
-rw-r--r--uitest/src/com/vaadin/tests/components/ui/UITabIndex.html57
-rw-r--r--uitest/src/com/vaadin/tests/components/ui/UITabIndex.java51
-rw-r--r--uitest/test.xml2
20 files changed, 972 insertions, 66 deletions
diff --git a/uitest/integration-testscripts/GateIn-3/integration-test-GateIn-3.1.0-portlet2.html b/uitest/integration-testscripts/GateIn-3/integration-test-GateIn-3.1.0-portlet2.html
index 4bc3e6a2cf..5d2d4c3445 100644
--- a/uitest/integration-testscripts/GateIn-3/integration-test-GateIn-3.1.0-portlet2.html
+++ b/uitest/integration-testscripts/GateIn-3/integration-test-GateIn-3.1.0-portlet2.html
@@ -17,11 +17,6 @@
<td></td>
</tr>
<tr>
- <td>setSpeed</td>
- <td>100</td>
- <td>100</td>
-</tr>
-<tr>
<td>mouseClickAndWait</td>
<td>link=Administrator</td>
<td>27,7</td>
@@ -32,24 +27,94 @@
<td>93,13</td>
</tr>
<tr>
- <td>expectDialog</td>
- <td>//div[2]/div[2]/div[1]/div[1]/div[2]</td>
- <td>73,18</td>
+ <td>mouseClick</td>
+ <td>link=Portlet</td>
+ <td>33,11</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Vaadin Portlet 2.0 Test</td>
+ <td>59,9</td>
</tr>
<tr>
- <td>assertConfirmation</td>
- <td>This action will automatically create categories and import all the gadgets and portlets on it.</td>
+ <td>mouseClick</td>
+ <td>link=Vaadin Portlet 2.0 Test</td>
+ <td>59,9</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Click here to add into categories</td>
<td></td>
</tr>
<tr>
+ <td>mouseClick</td>
+ <td>link=Click here to add into categories</td>
+ <td>48,3</td>
+</tr>
+<tr>
<td>waitForElementPresent</td>
- <td>link=demo</td>
+ <td>name=category_Gadgets</td>
<td></td>
</tr>
<tr>
- <td>mouseClickAndWait</td>
- <td>link=Home</td>
- <td>65,18</td>
+ <td>mouseClick</td>
+ <td>name=category_Gadgets</td>
+ <td>10,16</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td></td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>link=Save</td>
+ <td>4,6</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Vaadin Liferay Theme</td>
+ <td></td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>link=Vaadin Liferay Theme</td>
+ <td>64,13</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Click here to add into categories</td>
+ <td></td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>link=Click here to add into categories</td>
+ <td>96,9</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>name=category_Gadgets</td>
+ <td>7,12</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>name=category_Gadgets</td>
+ <td>7,12</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Save</td>
+ <td>4,6</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>link=Save</td>
+ <td>4,6</td>
+</tr>
+<tr>
+ <td>waitForElementPresent</td>
+ <td>link=Add New Page</td>
+ <td>55,11</td>
</tr>
<tr>
<td>mouseClick</td>
@@ -86,24 +151,15 @@
<td>//div[@id='UIPageCreationWizard']/div/div[3]/div/div/div/div[2]/div/table/tbody/tr/td/div[2]/div/div/div</td>
<td>21,13</td>
</tr>
+<!--Drag JSR286 test portlet to page-->
<tr>
<td>waitForElementPresent</td>
- <td>//div[@id='UIPageEditor']/div[1]/div/div/div/div[2]</td>
- <td></td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>//div[@onclick=&quot;javascript:ajaxGet('/portal/private/classic/home?portal:componentId=UIApplicationList&amp;portal:action=SelectCategory&amp;objectId=demo&amp;ajaxRequest=true')&quot;]</td>
- <td>51,11</td>
-</tr>
-<tr>
- <td>pause</td>
- <td>300</td>
+ <td>//div[@id='Gadgets/JSR286TestPortlet']/div/div/div/div</td>
<td></td>
</tr>
<tr>
<td>drag</td>
- <td>//div[@id='demo/JSR286TestPortlet']/div/div/div[1]/div[2]</td>
+ <td>//div[@id='Gadgets/JSR286TestPortlet']/div/div/div/div</td>
<td></td>
</tr>
<tr>
@@ -112,49 +168,25 @@
<td>113,9</td>
</tr>
<tr>
- <td>mouseClickAndWait</td>
- <td>//a[@onclick='eXo.core.DOMUtil.disableOnClick(this);']</td>
- <td>13,5</td>
-</tr>
-<tr>
- <td>mouseClickAndWait</td>
- <td>//div[@id='UIPage']/div/div/div[2]/div/div/div/div/div/div/div[2]/div[5]/div/a</td>
- <td>10,10</td>
-</tr>
-<tr>
- <td>closeNotification</td>
- <td>//body/div[2]</td>
- <td>0,0</td>
-</tr>
-<tr>
- <td>pause</td>
- <td>500</td>
+ <td>waitForTextPresent</td>
+ <td>Vaadin Portlet 2.0 Test</td>
<td></td>
</tr>
-<tr>
- <td>screenCapture</td>
- <td></td>
- <td>Edit_mode</td>
-</tr>
+<!--Switch to view mode-->
<tr>
<td>mouseClickAndWait</td>
- <td>//div[@id='UIPage']/div/div/div[2]/div/div/div/div/div/div/div[2]/div[5]/div/a</td>
- <td>15,8</td>
-</tr>
-<tr>
- <td>closeNotification</td>
- <td>//body/div[2]</td>
- <td>0,0</td>
+ <td>//a[@onclick='eXo.core.DOMUtil.disableOnClick(this);']</td>
+ <td>13,5</td>
</tr>
<tr>
- <td>pause</td>
- <td>500</td>
+ <td>waitForElementPresent</td>
+ <td>//div[2]/div/div[2]/img</td>
<td></td>
</tr>
<tr>
<td>screenCapture</td>
<td></td>
- <td>done</td>
+ <td>view</td>
</tr>
</tbody></table>
</body>
diff --git a/uitest/integration-testscripts/Liferay-6/integration-test-liferay-6.0.5.html b/uitest/integration-testscripts/Liferay-6/integration-test-liferay-6.0.5.html
index 88cac6cd74..037ce23865 100644
--- a/uitest/integration-testscripts/Liferay-6/integration-test-liferay-6.0.5.html
+++ b/uitest/integration-testscripts/Liferay-6/integration-test-liferay-6.0.5.html
@@ -36,8 +36,6 @@
<td>//input[@value='Sign In']</td>
<td>43,18</td>
</tr>
-
-<!-- -->
<tr>
<td>mouseClickAndWait</td>
<td>//input[@type='submit']</td>
@@ -144,19 +142,34 @@
<td>10,10</td>
</tr>
<tr>
- <td>pause</td>
- <td>5000</td>
+ <td>waitForTextPresent</td>
+ <td>Normal Label</td>
<td></td>
</tr>
<tr>
- <td>waitForVaadin</td>
+ <td>screenCapture</td>
+ <td></td>
+ <td>theme</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//td[3]/div/div/div</td>
+ <td>22,7</td>
+</tr>
+<tr>
+ <td>assertTextPresent</td>
+ <td>Normal TextField</td>
<td></td>
+</tr>
+<tr>
+ <td>assertTextPresent</td>
+ <td>Normal TextArea</td>
<td></td>
</tr>
<tr>
- <td>screenCapture</td>
+ <td>assertTextNotPresent</td>
+ <td>Normal Label</td>
<td></td>
- <td>theme</td>
</tr>
</tbody></table>
</body>
diff --git a/uitest/integration_base_files/base.xml b/uitest/integration_base_files/base.xml
index f9c2ff3d6b..5196aecfa9 100644
--- a/uitest/integration_base_files/base.xml
+++ b/uitest/integration_base_files/base.xml
@@ -28,6 +28,20 @@
</target>
<target name="deployStatic">
+ <unzip src="${war}" dest="${staticDeployDir}/tmp-unpack-jar/">
+ <patternset>
+ <include name="WEB-INF/lib/*.jar" />
+ </patternset>
+ </unzip>
+ <unzip dest="${staticDeployDir}">
+ <fileset dir="${staticDeployDir}/tmp-unpack-jar/WEB-INF/lib" includes="*.jar" />
+
+ <patternset>
+ <include name="VAADIN/**" />
+ </patternset>
+ </unzip>
+ <delete dir="${staticDeployDir}/tmp-unpack-jar/" />
+
<unzip src="${war}" dest="${staticDeployDir}">
<patternset>
<include name="VAADIN/**" />
diff --git a/uitest/src/com/vaadin/tests/components/AbstractTestUIWithLog.java b/uitest/src/com/vaadin/tests/components/AbstractTestUIWithLog.java
new file mode 100644
index 0000000000..cace7c3404
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/AbstractTestUIWithLog.java
@@ -0,0 +1,36 @@
+/*
+ * 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.components;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.util.Log;
+import com.vaadin.ui.VerticalLayout;
+
+public abstract class AbstractTestUIWithLog extends AbstractTestUI {
+
+ protected Log log = new Log(5);
+
+ @Override
+ public void init(VaadinRequest request) {
+ super.init(request);
+ ((VerticalLayout) getContent()).addComponent(log, 0);
+ }
+
+ protected void log(String message) {
+ log.log(message);
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/TestBase.java b/uitest/src/com/vaadin/tests/components/TestBase.java
index d267d80669..15f39f6e5d 100644
--- a/uitest/src/com/vaadin/tests/components/TestBase.java
+++ b/uitest/src/com/vaadin/tests/components/TestBase.java
@@ -6,6 +6,12 @@ import com.vaadin.ui.Label;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.VerticalLayout;
+/**
+ *
+ * @deprecated Use {@link AbstractTestUI} or {@link AbstractTestUIWithLog}
+ * instead. TestBase is a LegacyApplication
+ */
+@Deprecated
public abstract class TestBase extends AbstractTestCase {
@Override
diff --git a/uitest/src/com/vaadin/tests/components/checkbox/CheckBoxRevertValueChange.html b/uitest/src/com/vaadin/tests/components/checkbox/CheckBoxRevertValueChange.html
new file mode 100644
index 0000000000..ea5849f99f
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/checkbox/CheckBoxRevertValueChange.html
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8888/" />
+<title>New Test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">New Test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/com.vaadin.tests.components.checkbox.CheckBoxRevertValueChange?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::/VVerticalLayout[0]/Slot[2]/VVerticalLayout[0]/Slot[0]/VCheckBox[0]/domChild[0]</td>
+ <td>10,5</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::PID_SLog_row_0</td>
+ <td>1. I said no checking!</td>
+</tr>
+<tr>
+ <td>assertValue</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::/VVerticalLayout[0]/Slot[2]/VVerticalLayout[0]/Slot[0]/VCheckBox[0]/domChild[0]</td>
+ <td>off</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::/VVerticalLayout[0]/Slot[2]/VVerticalLayout[0]/Slot[0]/VCheckBox[0]/domChild[1]</td>
+ <td>93,10</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::PID_SLog_row_0</td>
+ <td>2. I said no checking!</td>
+</tr>
+<tr>
+ <td>assertValue</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::/VVerticalLayout[0]/Slot[2]/VVerticalLayout[0]/Slot[0]/VCheckBox[0]/domChild[0]</td>
+ <td>off</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::/VVerticalLayout[0]/Slot[2]/VVerticalLayout[0]/Slot[1]/VCheckBox[0]/domChild[0]</td>
+ <td>5,8</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::PID_SLog_row_0</td>
+ <td>3. I said no unchecking!</td>
+</tr>
+<tr>
+ <td>assertValue</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::/VVerticalLayout[0]/Slot[2]/VVerticalLayout[0]/Slot[1]/VCheckBox[0]/domChild[0]</td>
+ <td>on</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::/VVerticalLayout[0]/Slot[2]/VVerticalLayout[0]/Slot[1]/VCheckBox[0]/domChild[1]</td>
+ <td>78,12</td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::PID_SLog_row_0</td>
+ <td>4. I said no unchecking!</td>
+</tr>
+<tr>
+ <td>assertValue</td>
+ <td>vaadin=runcomvaadintestscomponentscheckboxCheckBoxRevertValueChange::/VVerticalLayout[0]/Slot[2]/VVerticalLayout[0]/Slot[1]/VCheckBox[0]/domChild[0]</td>
+ <td>on</td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/components/checkbox/CheckBoxRevertValueChange.java b/uitest/src/com/vaadin/tests/components/checkbox/CheckBoxRevertValueChange.java
new file mode 100644
index 0000000000..5b086fb935
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/checkbox/CheckBoxRevertValueChange.java
@@ -0,0 +1,65 @@
+/*
+ * 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.components.checkbox;
+
+import com.vaadin.annotations.PreserveOnRefresh;
+import com.vaadin.data.Property;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUIWithLog;
+import com.vaadin.ui.CheckBox;
+
+@PreserveOnRefresh
+public class CheckBoxRevertValueChange extends AbstractTestUIWithLog {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ final CheckBox alwaysUnchecked = new CheckBox("You may not check me");
+ alwaysUnchecked
+ .addValueChangeListener(new Property.ValueChangeListener() {
+ public void valueChange(Property.ValueChangeEvent event) {
+ if (alwaysUnchecked.getValue()) {
+ log("I said no checking!");
+ alwaysUnchecked.setValue(false);
+ }
+ }
+ });
+ final CheckBox alwaysChecked = new CheckBox("You may not uncheck me");
+ alwaysChecked.setValue(true);
+ alwaysChecked
+ .addValueChangeListener(new Property.ValueChangeListener() {
+ public void valueChange(Property.ValueChangeEvent event) {
+ if (!alwaysChecked.getValue()) {
+ log("I said no unchecking!");
+ alwaysChecked.setValue(true);
+ }
+ }
+ });
+
+ addComponent(alwaysUnchecked);
+ addComponent(alwaysChecked);
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Ensure checking of a checkbox can be reverted on the server side without making the client go out of sync";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 11028;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/media/AudioTest.html b/uitest/src/com/vaadin/tests/components/media/AudioTest.html
new file mode 100644
index 0000000000..8425cad38a
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/media/AudioTest.html
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>AudioTest</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">AudioTest</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/AudioTest?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>pause</td>
+ <td>3000</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>shortAtEndUnmuted</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runAudioTest::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[2]/VCheckBox[0]/domChild[0]</td>
+ <td>11,7</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runAudioTest::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[3]/VCheckBox[0]/domChild[0]</td>
+ <td>6,7</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>vaadin=runAudioTest::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[5]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>pause</td>
+ <td>5000</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>longerAtEndMuted</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runAudioTest::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[1]/VCheckBox[0]/domChild[0]</td>
+ <td>69,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>controlsHidden</td>
+</tr>
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/components/media/AudioTest.java b/uitest/src/com/vaadin/tests/components/media/AudioTest.java
new file mode 100644
index 0000000000..28d1a7716f
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/media/AudioTest.java
@@ -0,0 +1,86 @@
+/*
+ * 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.components.media;
+
+import com.vaadin.data.util.MethodProperty;
+import com.vaadin.server.ClassResource;
+import com.vaadin.server.Resource;
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.ui.Audio;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.CheckBox;
+
+public class AudioTest extends TestBase {
+
+ @Override
+ protected void setup() {
+
+ // Public domain sounds from pdsounds.org 27.2.2013
+
+ final Resource[] s1 = { new ClassResource(getClass(), "bip.mp3"),
+ new ClassResource(getClass(), "bip.ogg") };
+ final Resource[] s2 = {
+ new ClassResource(getClass(), "toyphone_dialling.mp3"),
+ new ClassResource(getClass(), "toyphone_dialling.ogg") };
+
+ final Audio audio = new Audio();
+
+ audio.setSources(s1);
+ audio.setShowControls(true);
+ audio.setHtmlContentAllowed(true);
+ audio.setAltText("Can't <b>play</b> media");
+ audio.setAutoplay(true);
+
+ addComponent(audio);
+
+ CheckBox checkBox = new CheckBox("Show controls",
+ new MethodProperty<Boolean>(audio, "showControls"));
+ addComponent(checkBox);
+ checkBox = new CheckBox("HtmlContentAllowed",
+ new MethodProperty<Boolean>(audio, "htmlContentAllowed"));
+ addComponent(checkBox);
+ checkBox = new CheckBox("muted", new MethodProperty<Boolean>(audio,
+ "muted"));
+ addComponent(checkBox);
+ checkBox = new CheckBox("autoplay", new MethodProperty<Boolean>(audio,
+ "autoplay"));
+ addComponent(checkBox);
+
+ Button b = new Button("Change", new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ audio.setSources(s2);
+ }
+ });
+ addComponent(b);
+ getLayout().setHeight("400px");
+ getLayout().setExpandRatio(b, 1.0f);
+ }
+
+ @Override
+ protected String getDescription() {
+ return "Should autoplay, manipulating checkboxes should do appropriate thing, button changes file.";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 11160;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/media/bip.mp3 b/uitest/src/com/vaadin/tests/components/media/bip.mp3
new file mode 100644
index 0000000000..2c7e790cf7
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/media/bip.mp3
Binary files differ
diff --git a/uitest/src/com/vaadin/tests/components/media/bip.ogg b/uitest/src/com/vaadin/tests/components/media/bip.ogg
new file mode 100644
index 0000000000..4e5014d92f
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/media/bip.ogg
Binary files differ
diff --git a/uitest/src/com/vaadin/tests/components/media/toyphone_dialling.mp3 b/uitest/src/com/vaadin/tests/components/media/toyphone_dialling.mp3
new file mode 100644
index 0000000000..1788026856
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/media/toyphone_dialling.mp3
Binary files differ
diff --git a/uitest/src/com/vaadin/tests/components/media/toyphone_dialling.ogg b/uitest/src/com/vaadin/tests/components/media/toyphone_dialling.ogg
new file mode 100644
index 0000000000..a042da5795
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/media/toyphone_dialling.ogg
Binary files differ
diff --git a/uitest/src/com/vaadin/tests/components/table/TableColumnWidthsAndExpandRatios.html b/uitest/src/com/vaadin/tests/components/table/TableColumnWidthsAndExpandRatios.html
new file mode 100644
index 0000000000..75d98ce2e6
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/table/TableColumnWidthsAndExpandRatios.html
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8888/" />
+<title>New Test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">New Test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/com.vaadin.tests.components.table.TableColumnWidthsAndExpandRatios?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>initial-all-columns-undefined</td>
+</tr>
+<!--Resize column 1 making it defined size-->
+<tr>
+ <td>dragAndDrop</td>
+ <td>vaadin=runcomvaadintestscomponentstableTableColumnWidthsAndExpandRatios::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VScrollTable[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]</td>
+ <td>-300,0</td>
+</tr>
+<!--Resize column 2 making it defined size-->
+<tr>
+ <td>dragAndDrop</td>
+ <td>vaadin=runcomvaadintestscomponentstableTableColumnWidthsAndExpandRatios::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VScrollTable[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]</td>
+ <td>-300,0</td>
+</tr>
+<!--Resize column 3 making it defined size-->
+<tr>
+ <td>dragAndDrop</td>
+ <td>vaadin=runcomvaadintestscomponentstableTableColumnWidthsAndExpandRatios::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VScrollTable[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[2]/domChild[0]</td>
+ <td>-300,0</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>columns-defined-width</td>
+</tr>
+<!--Reset column 1 width-->
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentstableTableColumnWidthsAndExpandRatios::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VHorizontalLayout[0]/ChildComponentContainer[0]/VNativeButton[0]</td>
+ <td>114,4</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>column1-undefined</td>
+</tr>
+<!--Reset column2 width-->
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentstableTableColumnWidthsAndExpandRatios::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VHorizontalLayout[0]/ChildComponentContainer[1]/VNativeButton[0]</td>
+ <td>98,13</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>column2-undefined</td>
+</tr>
+<!--Reset column 3 width-->
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentstableTableColumnWidthsAndExpandRatios::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VHorizontalLayout[0]/ChildComponentContainer[2]/VNativeButton[0]</td>
+ <td>40,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>columns-undefined-width</td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/components/table/TableColumnWidthsAndExpandRatios.java b/uitest/src/com/vaadin/tests/components/table/TableColumnWidthsAndExpandRatios.java
new file mode 100644
index 0000000000..747c99468f
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/table/TableColumnWidthsAndExpandRatios.java
@@ -0,0 +1,57 @@
+package com.vaadin.tests.components.table;
+
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.NativeButton;
+import com.vaadin.ui.Table;
+
+public class TableColumnWidthsAndExpandRatios extends TestBase {
+
+ @Override
+ protected void setup() {
+ getLayout().setSizeFull();
+
+ final Table table = new Table();
+ table.setSizeFull();
+
+ table.addContainerProperty("column1", String.class, "Humpty");
+ table.addContainerProperty("column2", String.class, "Dumpty");
+ table.addContainerProperty("column3", String.class, "Doe");
+
+ for (int row = 0; row < 100; row++) {
+ table.addItem();
+ }
+
+ HorizontalLayout buttons = new HorizontalLayout();
+ for (Object col : table.getContainerPropertyIds()) {
+ buttons.addComponent(createResetButton(col, table));
+ }
+
+ addComponent(table);
+ addComponent(buttons);
+ }
+
+ private NativeButton createResetButton(final Object property,
+ final Table table) {
+ return new NativeButton("Reset " + property + " width",
+ new Button.ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ table.setColumnWidth(property, -1);
+ }
+ });
+ }
+
+ @Override
+ protected String getDescription() {
+ return "Changing column width to -1 should remove any previous size measurements";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 7922;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/textarea/ScrollCursor.html b/uitest/src/com/vaadin/tests/components/textarea/ScrollCursor.html
new file mode 100644
index 0000000000..9eaa1ceada
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/textarea/ScrollCursor.html
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8888/" />
+<title>New Test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">New Test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/com.vaadin.tests.components.textarea.ScrollCursor?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/domChild[0]/domChild[0]</td>
+ <td>191,94</td>
+</tr>
+<tr>
+<!-- set begin position value -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[3]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+<!-- set cursor position-->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>wrap-start</td>
+</tr>
+<tr>
+<!-- set middle position value -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[4]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+<!-- set cursor position-->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>wrap-middle</td>
+</tr>
+<tr>
+<!-- set end position value -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[5]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+<!-- set cursor position-->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>wrap-end</td>
+</tr>
+<tr>
+<!-- set start position value -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[3]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+<!-- set cursor position : check that scrolling works from the end to the beginning-->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>wrap-end-start</td>
+</tr>
+<tr>
+<!-- set no wrap -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[2]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+<!-- set start position value -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[3]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+<!-- set cursor position -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>nowrap-start</td>
+</tr>
+<tr>
+<!-- set middle position value -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[4]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+<!-- set cursor position -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>nowrap-middle</td>
+</tr>
+<tr>
+<!-- set end position value -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[5]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+<!-- set cursor position -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>nowrap-end</td>
+</tr>
+<tr>
+<!-- set start position value -->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[3]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+<!-- set cursor position : check scrolling from the end to the beginning-->
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentstextareaScrollCursor::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>nowrap-end-start</td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/components/textarea/ScrollCursor.java b/uitest/src/com/vaadin/tests/components/textarea/ScrollCursor.java
new file mode 100644
index 0000000000..c95731d94f
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/textarea/ScrollCursor.java
@@ -0,0 +1,89 @@
+package com.vaadin.tests.components.textarea;
+
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.TextArea;
+
+/**
+ * @author denis
+ *
+ */
+public class ScrollCursor extends TestBase {
+
+ private TextArea textArea;
+ private int position;
+
+ @Override
+ protected void setup() {
+ textArea = new TextArea();
+ textArea.setValue("saddddddddddd fdgdfgfdgfd\n"
+ + "aasddddddddddd\n" + "dsaffffffdsf\n" + "sdf\n"
+ + "dsfsdfsdfsdfsd\n\n" + "ffffffffffffffffffff\n"
+ + "sdfdsfdsfsdfsdfsd xxxxxxxxxxxxxxxx\n" + "sdgfsd\n"
+ + "dsf\n" + "ds\n" + "fds\n" + "fds\nfs");
+ addComponent(textArea);
+ Button button = new Button("Scroll");
+ button.addListener(new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ textArea.setCursorPosition(getPosition());
+ }
+ });
+ Button wrap = new Button("Set wrap");
+ wrap.addListener(new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ textArea.setWordwrap(false);
+ }
+ });
+
+ Button toBegin = new Button("To begin");
+ toBegin.addListener(new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ position = 3;
+ }
+ });
+
+ Button toMiddle = new Button("To middle");
+ toMiddle.addListener(new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ position = 130;
+ }
+ });
+
+ Button toEnd = new Button("To end");
+ toEnd.addListener(new ClickListener() {
+
+ public void buttonClick(ClickEvent event) {
+ position = textArea.getValue().toString().length();
+ }
+ });
+
+ addComponent(button);
+ addComponent(wrap);
+ addComponent(toBegin);
+ addComponent(toMiddle);
+ addComponent(toEnd);
+ }
+
+ @Override
+ protected String getDescription() {
+ return "Tests scrolling for TextArea with different word wrapping settings. "
+ + "Sets cursor position at the beginning, middle and the end "
+ + "of text and checks textarea is scrolled.";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 8769;
+ }
+
+ private int getPosition() {
+ return position;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/ui/UITabIndex.html b/uitest/src/com/vaadin/tests/components/ui/UITabIndex.html
new file mode 100644
index 0000000000..fa083f1489
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/ui/UITabIndex.html
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8888/" />
+<title>New Test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">New Test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/com.vaadin.tests.components.ui.UITabIndex?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertAttribute</td>
+ <td>vaadin=runcomvaadintestscomponentsuiUITabIndex::@tabIndex</td>
+ <td>1</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentsuiUITabIndex::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertAttribute</td>
+ <td>vaadin=runcomvaadintestscomponentsuiUITabIndex::@tabIndex</td>
+ <td>-1</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentsuiUITabIndex::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[1]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertAttribute</td>
+ <td>vaadin=runcomvaadintestscomponentsuiUITabIndex::@tabIndex</td>
+ <td>0</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>vaadin=runcomvaadintestscomponentsuiUITabIndex::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[2]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertAttribute</td>
+ <td>vaadin=runcomvaadintestscomponentsuiUITabIndex::@tabIndex</td>
+ <td>1</td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/components/ui/UITabIndex.java b/uitest/src/com/vaadin/tests/components/ui/UITabIndex.java
new file mode 100644
index 0000000000..083eaf3f7d
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/ui/UITabIndex.java
@@ -0,0 +1,51 @@
+package com.vaadin.tests.components.ui;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+
+public class UITabIndex extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ Button b;
+
+ b = new Button("Set tabIndex to -1");
+ b.addClickListener(new ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ setTabIndex(-1);
+ }
+ });
+ addComponent(b);
+ b = new Button("Set tabIndex to 0");
+ b.addClickListener(new ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ setTabIndex(0);
+ }
+ });
+ addComponent(b);
+ b = new Button("Set tabIndex to 1");
+ b.addClickListener(new ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ setTabIndex(1);
+ }
+ });
+ addComponent(b);
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Tests tab index handling for UI";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 11129;
+ }
+
+}
diff --git a/uitest/test.xml b/uitest/test.xml
index e2c14b53af..5ff39c425d 100644
--- a/uitest/test.xml
+++ b/uitest/test.xml
@@ -8,7 +8,7 @@
<!-- Configuration -->
<!-- ================================================================== -->
<!-- Browsers to use for testing -->
- <property name="browsers-windows" value="winxp-ie8,win7-ie9,win7-ie10,winxp-firefox17-esr,winxp-safari5,winxp-googlechrome21,winxp-opera11" />
+ <property name="browsers-windows" value="winxp-ie8,win7-ie9,win7-ie10,winxp-firefox17-esr,winxp-safari5,winxp-googlechrome21,winxp-opera12" />
<property name="browsers-linux" value="linux-firefox3,linux-opera10,linux-googlechrome8" />
<property name="browsers-mac" value="osx-firefox3,osx-opera10,osx-googlechrome8,osx-safari4,osx-safari5" />