aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeamcity <build@vaadin.com>2015-05-06 09:50:39 +0300
committerTeamcity <build@vaadin.com>2015-05-06 09:50:39 +0300
commit758de8bac1eaa4d76b2b4078d526d6133f9489d2 (patch)
treebb134a9ecc600448cbd54e5629e37e5c8978d22e
parentfcd07decc37ae01d31dc4509bfe0b2e26b9004ff (diff)
parent79c8c696c09b0a7cbe1f1863e6c7c165b2f5f19f (diff)
downloadvaadin-framework-758de8bac1eaa4d76b2b4078d526d6133f9489d2.tar.gz
vaadin-framework-758de8bac1eaa4d76b2b4078d526d6133f9489d2.zip
Merge branch 'refs/heads/master' into 'snapshot/7.5'
-rw-r--r--WebContent/VAADIN/themes/base/layout/layout.scss4
-rw-r--r--WebContent/VAADIN/themes/tests-valo-contrast/_variables.scss3
-rw-r--r--WebContent/VAADIN/themes/tests-valo-contrast/styles.scss6
-rw-r--r--WebContent/VAADIN/themes/valo/components/_label.scss10
-rw-r--r--WebContent/VAADIN/themes/valo/util/_color.scss10
-rw-r--r--client/src/com/vaadin/client/ui/VCustomLayout.java4
-rw-r--r--client/src/com/vaadin/client/ui/VPopupCalendar.java19
-rw-r--r--client/src/com/vaadin/client/ui/customlayout/CustomLayoutConnector.java9
-rw-r--r--server/src/com/vaadin/server/communication/PushHandler.java12
-rw-r--r--server/src/com/vaadin/ui/Grid.java20
-rw-r--r--uitest/src/com/vaadin/tests/components/customlayout/CustomLayoutWithMissingSlot.java59
-rw-r--r--uitest/src/com/vaadin/tests/components/customlayout/CustomLayoutWithMissingSlotTest.java38
-rw-r--r--uitest/src/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParent.java76
-rw-r--r--uitest/src/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParentTest.java98
-rw-r--r--uitest/src/com/vaadin/tests/components/formlayout/FormLayoutInVerticalLayout.java71
-rw-r--r--uitest/src/com/vaadin/tests/components/formlayout/FormLayoutInVerticalLayoutTest.java47
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/GridSortIndicator.java95
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/GridSortIndicatorTest.java51
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridStructureTest.java2
-rw-r--r--uitest/src/com/vaadin/tests/components/gridlayout/ComponentAlignments.java62
-rw-r--r--uitest/src/com/vaadin/tests/components/gridlayout/ComponentAlignmentsTest.java77
-rw-r--r--uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java30
-rw-r--r--uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js2
-rw-r--r--uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentTest.java97
-rw-r--r--uitest/src/com/vaadin/tests/components/label/LabelTooltipTest.java72
-rw-r--r--uitest/src/com/vaadin/tests/components/menubar/MenuBarNavigationMouseTest.java42
-rw-r--r--uitest/src/com/vaadin/tests/components/ui/InitialFragmentEventTest.java39
-rw-r--r--uitest/src/com/vaadin/tests/fieldgroup/BooleanTextFieldTest.java60
-rw-r--r--uitest/src/com/vaadin/tests/serialization/SerializerTest.java21
-rw-r--r--uitest/src/com/vaadin/tests/serialization/SerializerTestTest.java10
-rw-r--r--uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java18
-rw-r--r--uitest/src/com/vaadin/tests/themes/valo/ContrastFontColor.java47
-rw-r--r--uitest/src/com/vaadin/tests/themes/valo/ContrastFontColorTest.java40
-rw-r--r--uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java13
-rw-r--r--uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java3
-rw-r--r--uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java1
-rw-r--r--uitest/tb2/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html71
-rw-r--r--uitest/tb2/com/vaadin/tests/components/label/LabelTooltip-chameleon.html47
-rw-r--r--uitest/tb2/com/vaadin/tests/components/label/LabelTooltip-runo.html47
-rw-r--r--uitest/tb2/com/vaadin/tests/components/label/LabelTooltip.html47
-rw-r--r--uitest/tb2/com/vaadin/tests/components/menubar/MenuBarNavigationMouse.html81
-rw-r--r--uitest/tb2/com/vaadin/tests/components/ui/ChangeFragmentOnServerToMatchClient.html37
-rw-r--r--uitest/tb2/com/vaadin/tests/fieldgroup/BooleanTextField.html141
43 files changed, 1246 insertions, 493 deletions
diff --git a/WebContent/VAADIN/themes/base/layout/layout.scss b/WebContent/VAADIN/themes/base/layout/layout.scss
index 049c527518..fe3fcd17ed 100644
--- a/WebContent/VAADIN/themes/base/layout/layout.scss
+++ b/WebContent/VAADIN/themes/base/layout/layout.scss
@@ -139,6 +139,8 @@ div.v-layout.v-horizontal.v-widget {
}
.v-align-middle > .v-widget,
+.v-align-right > .v-widget,
+.v-align-center > .v-widget,
.v-align-bottom > .v-widget {
display: inline-block;
}
@@ -216,4 +218,4 @@ div.v-layout.v-horizontal.v-widget {
vertical-align: middle;
}
-} \ No newline at end of file
+}
diff --git a/WebContent/VAADIN/themes/tests-valo-contrast/_variables.scss b/WebContent/VAADIN/themes/tests-valo-contrast/_variables.scss
new file mode 100644
index 0000000000..962bc8f299
--- /dev/null
+++ b/WebContent/VAADIN/themes/tests-valo-contrast/_variables.scss
@@ -0,0 +1,3 @@
+$v-font-color-contrast: 0.1;
+
+@import "../valo/valo";
diff --git a/WebContent/VAADIN/themes/tests-valo-contrast/styles.scss b/WebContent/VAADIN/themes/tests-valo-contrast/styles.scss
new file mode 100644
index 0000000000..231a9de50d
--- /dev/null
+++ b/WebContent/VAADIN/themes/tests-valo-contrast/styles.scss
@@ -0,0 +1,6 @@
+@import "variables";
+@import "../tests-valo/valotest";
+
+.tests-valo-contrast {
+ @include valotest;
+}
diff --git a/WebContent/VAADIN/themes/valo/components/_label.scss b/WebContent/VAADIN/themes/valo/components/_label.scss
index cfec847271..3057aaa40f 100644
--- a/WebContent/VAADIN/themes/valo/components/_label.scss
+++ b/WebContent/VAADIN/themes/valo/components/_label.scss
@@ -183,6 +183,16 @@ $v-letter-spacing--h4: 0 !default;
}
}
+ .v-verticallayout > .v-slot:first-child .v-formlayout-contentcell,
+ .v-verticallayout > div > .v-slot:first-child .v-formlayout-contentcell {
+ h1, .#{$primary-stylename}-h1,
+ h2, .#{$primary-stylename}-h2,
+ h3, .#{$primary-stylename}-h3,
+ h4, .#{$primary-stylename}-h4 {
+ margin-top: -0.5em;
+ }
+ }
+
h1, .#{$primary-stylename}-h1,
h2, .#{$primary-stylename}-h2,
h3, .#{$primary-stylename}-h3,
diff --git a/WebContent/VAADIN/themes/valo/util/_color.scss b/WebContent/VAADIN/themes/valo/util/_color.scss
index 37612fd48d..e4aab4596d 100644
--- a/WebContent/VAADIN/themes/valo/util/_color.scss
+++ b/WebContent/VAADIN/themes/valo/util/_color.scss
@@ -32,6 +32,14 @@ $v-luminance-threshold: 150 !default;
/**
+ * Contrast default value for valo-font-color function.
+ *
+ * @group color
+ * @type number
+ */
+$v-font-color-contrast: 0.72 !default;
+
+/**
* Checks whether the color is considered dark or light, according to it's luminance and saturation.
*
* @group color
@@ -80,7 +88,7 @@ $v-luminance-threshold: 150 !default;
*
* @return {color} a suitable font color for the given background color
*/
-@function valo-font-color ($bg-color, $contrast: 0.72) {
+@function valo-font-color ($bg-color, $contrast: $v-font-color-contrast) {
@if type-of($bg-color) == color {
@if is-dark-color($bg-color) {
@return scale-color($bg-color, $lightness: min(100%, 100% * $contrast), $saturation: max(-100%, -50% * $contrast));
diff --git a/client/src/com/vaadin/client/ui/VCustomLayout.java b/client/src/com/vaadin/client/ui/VCustomLayout.java
index 5f8a8197d0..0ee50fe0dd 100644
--- a/client/src/com/vaadin/client/ui/VCustomLayout.java
+++ b/client/src/com/vaadin/client/ui/VCustomLayout.java
@@ -305,6 +305,10 @@ public class VCustomLayout extends ComplexPanel {
/** Update caption for given widget */
public void updateCaption(ComponentConnector paintable) {
Widget widget = paintable.getWidget();
+ if (widget.getParent() != this) {
+ // Widget has not been added because the location was not found
+ return;
+ }
VCaptionWrapper wrapper = childWidgetToCaptionWrapper.get(widget);
if (VCaption.isNeeded(paintable.getState())) {
if (wrapper == null) {
diff --git a/client/src/com/vaadin/client/ui/VPopupCalendar.java b/client/src/com/vaadin/client/ui/VPopupCalendar.java
index cf88ceb8d6..bbf654980b 100644
--- a/client/src/com/vaadin/client/ui/VPopupCalendar.java
+++ b/client/src/com/vaadin/client/ui/VPopupCalendar.java
@@ -269,24 +269,29 @@ public class VPopupCalendar extends VTextualDate implements Field,
*/
public void setTextFieldEnabled(boolean textFieldEnabled) {
this.textFieldEnabled = textFieldEnabled;
+ updateTextFieldEnabled();
+ }
+
+ protected void updateTextFieldEnabled() {
+ boolean reallyEnabled = isEnabled() && isTextFieldEnabled();
// IE has a non input disabled themeing that can not be overridden so we
// must fake the functionality using readonly and unselectable
if (BrowserInfo.get().isIE()) {
- if (!textFieldEnabled) {
+ if (!reallyEnabled) {
text.getElement().setAttribute("unselectable", "on");
text.getElement().setAttribute("readonly", "");
text.setTabIndex(-2);
- } else if (textFieldEnabled
+ } else if (reallyEnabled
&& text.getElement().hasAttribute("unselectable")) {
text.getElement().removeAttribute("unselectable");
text.getElement().removeAttribute("readonly");
text.setTabIndex(0);
}
} else {
- text.setEnabled(textFieldEnabled);
+ text.setEnabled(reallyEnabled);
}
- if (textFieldEnabled) {
+ if (reallyEnabled) {
calendarToggle.setTabIndex(-1);
Roles.getButtonRole().setAriaHiddenState(
calendarToggle.getElement(), true);
@@ -466,7 +471,7 @@ public class VPopupCalendar extends VTextualDate implements Field,
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
-
+ updateTextFieldEnabled();
calendarToggle.setEnabled(enabled);
Roles.getButtonRole().setAriaDisabledState(calendarToggle.getElement(),
!enabled);
@@ -500,9 +505,7 @@ public class VPopupCalendar extends VTextualDate implements Field,
if (!parsable) {
setText(previousValue);
}
-
- // superclass sets the text field independently when building date
- setTextFieldEnabled(isEnabled() && isTextFieldEnabled());
+ updateTextFieldEnabled();
}
/**
diff --git a/client/src/com/vaadin/client/ui/customlayout/CustomLayoutConnector.java b/client/src/com/vaadin/client/ui/customlayout/CustomLayoutConnector.java
index cde1f1af0f..abbb0ef60b 100644
--- a/client/src/com/vaadin/client/ui/customlayout/CustomLayoutConnector.java
+++ b/client/src/com/vaadin/client/ui/customlayout/CustomLayoutConnector.java
@@ -15,6 +15,8 @@
*/
package com.vaadin.client.ui.customlayout;
+import java.util.logging.Logger;
+
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ApplicationConnection;
@@ -111,6 +113,9 @@ public class CustomLayoutConnector extends AbstractLayoutConnector implements
getWidget().setWidget(child.getWidget(), location);
} catch (final IllegalArgumentException e) {
// If no location is found, this component is not visible
+ getLogger().warning(
+ "Child not rendered as no slot with id '" + location
+ + "' has been defined");
}
}
for (ComponentConnector oldChild : event.getOldChildren()) {
@@ -147,4 +152,8 @@ public class CustomLayoutConnector extends AbstractLayoutConnector implements
// Not interested in anything from the UIDL - just implementing the
// interface to avoid some warning (#8688)
}
+
+ private static Logger getLogger() {
+ return Logger.getLogger(CustomLayoutConnector.class.getName());
+ }
}
diff --git a/server/src/com/vaadin/server/communication/PushHandler.java b/server/src/com/vaadin/server/communication/PushHandler.java
index 552f2e9e03..35bc3f2e55 100644
--- a/server/src/com/vaadin/server/communication/PushHandler.java
+++ b/server/src/com/vaadin/server/communication/PushHandler.java
@@ -79,12 +79,18 @@ public class PushHandler {
resource.getResponse().setContentType("text/plain; charset=UTF-8");
VaadinSession session = ui.getSession();
- if (resource.transport() == TRANSPORT.STREAMING) {
- // Must ensure that the streaming response contains
+ if (resource.transport() == TRANSPORT.STREAMING
+ || resource.transport() == TRANSPORT.LONG_POLLING) {
+ // Must ensure that the streaming/long-polling response contains
// "Connection: close", otherwise iOS 6 will wait for the
// response to this request before sending another request to
// the same server (as it will apparently try to reuse the same
- // connection)
+ // connection).
+
+ // Other browsers might also try to re-use the same
+ // connection for fetching static files after refreshing, which
+ // will cause a failure in loading vaadinPush.js or
+ // vaadinBootstrap.js
resource.getResponse().addHeader("Connection", "close");
}
diff --git a/server/src/com/vaadin/ui/Grid.java b/server/src/com/vaadin/ui/Grid.java
index f1f17405e8..77a3d28ddf 100644
--- a/server/src/com/vaadin/ui/Grid.java
+++ b/server/src/com/vaadin/ui/Grid.java
@@ -3694,8 +3694,21 @@ public class Grid extends AbstractComponent implements SelectionNotifier,
Object propertyId = getPropertyIdByColumnId(columnIds[i]);
order.add(new SortOrder(propertyId, directions[i]));
}
-
setSortOrder(order, userOriginated);
+ if (!order.equals(getSortOrder())) {
+ /*
+ * Actual sort order is not what the client expects. Make
+ * sure the client gets a state change event by clearing the
+ * diffstate and marking as dirty
+ */
+ ConnectorTracker connectorTracker = getUI()
+ .getConnectorTracker();
+ JsonObject diffState = connectorTracker
+ .getDiffState(Grid.this);
+ diffState.remove("sortColumns");
+ diffState.remove("sortDirs");
+ markAsDirty();
+ }
}
@Override
@@ -5017,9 +5030,6 @@ public class Grid extends AbstractComponent implements SelectionNotifier,
cs.sort(propertyIds, directions);
- fireEvent(new SortEvent(this, new ArrayList<SortOrder>(sortOrder),
- userOriginated));
-
if (columns.keySet().containsAll(Arrays.asList(propertyIds))) {
String[] columnKeys = new String[items];
for (int i = 0; i < items; ++i) {
@@ -5032,6 +5042,8 @@ public class Grid extends AbstractComponent implements SelectionNotifier,
getState().sortColumns = new String[] {};
getState(false).sortDirs = new SortDirection[] {};
}
+ fireEvent(new SortEvent(this, new ArrayList<SortOrder>(sortOrder),
+ userOriginated));
} else {
throw new IllegalStateException(
"Container is not sortable (does not implement Container.Sortable)");
diff --git a/uitest/src/com/vaadin/tests/components/customlayout/CustomLayoutWithMissingSlot.java b/uitest/src/com/vaadin/tests/components/customlayout/CustomLayoutWithMissingSlot.java
new file mode 100644
index 0000000000..91b5dcc0ea
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/customlayout/CustomLayoutWithMissingSlot.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2000-2014 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.customlayout;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUIWithLog;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.CustomLayout;
+import com.vaadin.ui.TextField;
+
+public class CustomLayoutWithMissingSlot extends AbstractTestUIWithLog {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ CustomLayout cl;
+ try {
+ cl = new CustomLayout(
+ new ByteArrayInputStream(
+ "<div>First: <div location='first'></div><p>Second: <div location='second'></div><p>"
+ .getBytes("UTF-8")));
+ cl.addComponent(new TextField("This should be visible"), "first");
+ Button button = new Button(
+ "This button is visible, together with one label");
+ button.addClickListener(new ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ log("Button clicked");
+ }
+ });
+ cl.addComponent(button, "second");
+ cl.addComponent(new TextField(
+ "This won't be as the slot is missing"), "third");
+
+ addComponent(cl);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/customlayout/CustomLayoutWithMissingSlotTest.java b/uitest/src/com/vaadin/tests/components/customlayout/CustomLayoutWithMissingSlotTest.java
new file mode 100644
index 0000000000..d47a100a93
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/customlayout/CustomLayoutWithMissingSlotTest.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2000-2014 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.customlayout;
+
+import java.util.logging.Level;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.tests.tb3.SingleBrowserTest;
+
+public class CustomLayoutWithMissingSlotTest extends SingleBrowserTest {
+
+ @Test
+ public void ensureRenderedWithoutErrors() {
+ setDebug(true);
+ openTestURL();
+ Assert.assertEquals("", getLogRow(0).trim());
+ $(ButtonElement.class).first().click();
+ assertNoDebugMessage(Level.SEVERE);
+ Assert.assertEquals("1. Button clicked", getLogRow(0));
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParent.java b/uitest/src/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParent.java
new file mode 100644
index 0000000000..2c5e9e251b
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParent.java
@@ -0,0 +1,76 @@
+package com.vaadin.tests.components.datefield;
+
+import java.util.Date;
+
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.DateField;
+import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.VerticalLayout;
+
+public class DateFieldWhenChangingValueAndEnablingParent extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ final VerticalLayout main = new VerticalLayout();
+ final VerticalLayout sub = new VerticalLayout();
+ final CheckBox chk = new CheckBox("Parent layout enabled");
+
+ main.setMargin(true);
+ setContent(main);
+
+ final DateField df1 = createDateField(true);
+ final DateField df2 = createDateField(false);
+ final PopupDateField pdf1 = createPopupDateField(true, true);
+ final PopupDateField pdf2 = createPopupDateField(true, false);
+ final PopupDateField pdf3 = createPopupDateField(false, true);
+ final PopupDateField pdf4 = createPopupDateField(false, false);
+
+ sub.addComponent(df1);
+ sub.addComponent(df2);
+ sub.addComponent(pdf1);
+ sub.addComponent(pdf2);
+ sub.addComponent(pdf3);
+ sub.addComponent(pdf4);
+ sub.setEnabled(false);
+ main.addComponent(chk);
+ main.addComponent(sub);
+
+ chk.addValueChangeListener(new ValueChangeListener() {
+
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ df1.setValue(new Date());
+ df2.setValue(new Date());
+ pdf1.setValue(new Date());
+ pdf2.setValue(new Date());
+ pdf3.setValue(new Date());
+ pdf4.setValue(new Date());
+ sub.setEnabled(chk.getValue());
+ }
+ });
+ }
+
+ private DateField createDateField(boolean enabled) {
+ DateField df = new DateField("DateField, "
+ + (enabled ? "enabled" : "disabled"));
+ df.setEnabled(enabled);
+ df.setId("DATEFIELD_" + (enabled ? "ENABLED" : "DISABLED"));
+ return df;
+ }
+
+ private PopupDateField createPopupDateField(boolean enabled,
+ boolean textInputEnabled) {
+ PopupDateField df = new PopupDateField("PopupDateField, "
+ + (enabled ? "enabled" : "disabled") + ", text input "
+ + (textInputEnabled ? "enabled" : "disabled"));
+ df.setEnabled(enabled);
+ df.setTextFieldEnabled(textInputEnabled);
+ df.setId("DATEFIELD_" + (enabled ? "ENABLED" : "DISABLED") + "_"
+ + (textInputEnabled ? "ENABLED" : "DISABLED"));
+ return df;
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParentTest.java b/uitest/src/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParentTest.java
new file mode 100644
index 0000000000..23f6d6f5a6
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/datefield/DateFieldWhenChangingValueAndEnablingParentTest.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2000-2014 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.datefield;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.By;
+
+import com.vaadin.testbench.elements.CheckBoxElement;
+import com.vaadin.testbench.elements.DateFieldElement;
+import com.vaadin.testbench.elements.PopupDateFieldElement;
+import com.vaadin.tests.tb3.SingleBrowserTest;
+
+public class DateFieldWhenChangingValueAndEnablingParentTest extends
+ SingleBrowserTest {
+
+ @Test
+ public void ensureCorrectStateAfterEnabling() {
+ openTestURL();
+ $(CheckBoxElement.class).first().click();
+
+ assertState($(DateFieldElement.class).id("DATEFIELD_ENABLED"), true,
+ true);
+ assertState($(DateFieldElement.class).id("DATEFIELD_DISABLED"), false,
+ false);
+
+ assertState(
+ $(PopupDateFieldElement.class).id("DATEFIELD_ENABLED_ENABLED"),
+ true, true);
+ assertState(
+ $(PopupDateFieldElement.class).id("DATEFIELD_ENABLED_DISABLED"),
+ true, false);
+
+ // disabling widget should always disable input
+ assertState(
+ $(PopupDateFieldElement.class).id("DATEFIELD_DISABLED_ENABLED"),
+ false, false);
+ assertState(
+ $(PopupDateFieldElement.class)
+ .id("DATEFIELD_DISABLED_DISABLED"), false, false);
+
+ }
+
+ /**
+ * @since
+ * @param id
+ * @param widgetEnabled
+ * @param textInputEnabled
+ */
+ private void assertState(DateFieldElement id, boolean widgetEnabled,
+ boolean textInputEnabled) {
+ assertDateFieldEnabled(id, widgetEnabled);
+ assertTextInputEnabled(id, textInputEnabled);
+
+ }
+
+ private void assertDateFieldEnabled(DateFieldElement id,
+ boolean assertEnabled) {
+ boolean hasClass = hasCssClass(id, "v-disabled");
+ boolean fieldEnabled = !hasClass;
+ if (assertEnabled) {
+ Assert.assertTrue("Field " + id.getAttribute("id")
+ + " should be enabled", fieldEnabled);
+ } else {
+ Assert.assertFalse("Field " + id.getAttribute("id")
+ + " should be disabled", fieldEnabled);
+ }
+
+ }
+
+ private void assertTextInputEnabled(DateFieldElement id, boolean enabled) {
+ String disabledAttr = id.findElement(By.xpath("./input")).getAttribute(
+ "disabled");
+ boolean textinputEnabled = (disabledAttr == null);
+
+ if (enabled) {
+ Assert.assertTrue("Field " + id.getAttribute("id")
+ + " text field should be enabled", textinputEnabled);
+ } else {
+ Assert.assertFalse("Field " + id.getAttribute("id")
+ + " text field should be disabled", textinputEnabled);
+ }
+
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/formlayout/FormLayoutInVerticalLayout.java b/uitest/src/com/vaadin/tests/components/formlayout/FormLayoutInVerticalLayout.java
new file mode 100644
index 0000000000..45cb55637c
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/formlayout/FormLayoutInVerticalLayout.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2000-2014 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.formlayout;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.FormLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.themes.ValoTheme;
+
+/**
+ * Test UI for H2 label inside FormLayout.
+ *
+ * @author Vaadin Ltd
+ */
+@Theme("valo")
+public class FormLayoutInVerticalLayout extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ CssLayout container = new CssLayout();
+ addComponent(container);
+
+ FormLayout formLayout = new FormLayout();
+
+ Label sectionLabel = createLabel();
+ formLayout.addComponent(sectionLabel);
+
+ TextField nameTextField = new TextField("Name");
+ nameTextField.setValue("Lorem ipsum");
+ nameTextField.setWidth("50%");
+ formLayout.addComponent(nameTextField);
+
+ container.addComponent(formLayout);
+ container.addComponent(createLabel());
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return super.getTicketNumber();
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "FormLayout 'margin-top' value should take precedence over "
+ + "the rule defined in any other selector.";
+ }
+
+ private Label createLabel() {
+ Label sectionLabel = new Label("Personal info");
+ sectionLabel.addStyleName(ValoTheme.LABEL_H2);
+ sectionLabel.addStyleName(ValoTheme.LABEL_COLORED);
+ return sectionLabel;
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/formlayout/FormLayoutInVerticalLayoutTest.java b/uitest/src/com/vaadin/tests/components/formlayout/FormLayoutInVerticalLayoutTest.java
new file mode 100644
index 0000000000..89e7c9a06e
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/formlayout/FormLayoutInVerticalLayoutTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2000-2014 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.formlayout;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+/**
+ * Test for H2 label inside FormLayout as first child of VerticalLayout.
+ *
+ * @author Vaadin Ltd
+ */
+public class FormLayoutInVerticalLayoutTest extends MultiBrowserTest {
+
+ @Test
+ public void testHeaderMarginInFormLayout() {
+ openTestURL();
+
+ List<WebElement> labels = findElements(By.className("v-label-h2"));
+ String formLabelMargin = labels.get(0).getCssValue("margin-top");
+ String verticalLayoutLabelMargin = labels.get(1).getCssValue(
+ "margin-top");
+ Assert.assertNotEquals(
+ "'margin-top' values for header label in vertical layout "
+ + "and form layout are the same",
+ verticalLayoutLabelMargin, formLabelMargin);
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/grid/GridSortIndicator.java b/uitest/src/com/vaadin/tests/components/grid/GridSortIndicator.java
new file mode 100644
index 0000000000..a05365d575
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/grid/GridSortIndicator.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2000-2014 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.grid;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vaadin.data.sort.SortOrder;
+import com.vaadin.event.SortEvent;
+import com.vaadin.event.SortEvent.SortListener;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.shared.data.sort.SortDirection;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Grid;
+
+/*
+ * Test UI for checking that sort indicators of a Grid are updated when the sort order is changed by a
+ * SortListener.
+ */
+public class GridSortIndicator extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ final Grid g = getGrid();
+ addComponent(g);
+ g.addSortListener(new SortListener() {
+ private SortDirection oldSortDirection = null;
+
+ @Override
+ public void sort(SortEvent event) {
+ List<SortOrder> currentSortOrder = new ArrayList<SortOrder>(
+ event.getSortOrder());
+ if (currentSortOrder.size() == 1) {
+ // If the name column was clicked, set a new sort order for
+ // both columns. Otherwise, revert to oldSortDirection if it
+ // is not null.
+ List<SortOrder> newSortOrder = new ArrayList<SortOrder>();
+ SortDirection newSortDirection = oldSortDirection;
+ if (currentSortOrder.get(0).getPropertyId().equals("Name")) {
+ newSortDirection = SortDirection.ASCENDING
+ .equals(oldSortDirection) ? SortDirection.DESCENDING
+ : SortDirection.ASCENDING;
+ }
+ if (newSortDirection != null) {
+ newSortOrder
+ .add(new SortOrder("Name", newSortDirection));
+ newSortOrder.add(new SortOrder("Value",
+ newSortDirection));
+ g.setSortOrder(newSortOrder);
+ }
+ oldSortDirection = newSortDirection;
+ }
+ }
+ });
+ }
+
+ private final Grid getGrid() {
+ Grid g = new Grid();
+ g.addColumn("Name");
+ g.addColumn("Value", Integer.class);
+ g.addRow(new Object[] { "a", 4 });
+ g.addRow(new Object[] { "b", 5 });
+ g.addRow(new Object[] { "c", 3 });
+ g.addRow(new Object[] { "a", 6 });
+ g.addRow(new Object[] { "a", 2 });
+ g.addRow(new Object[] { "c", 7 });
+ g.addRow(new Object[] { "b", 1 });
+ return g;
+ }
+
+ @Override
+ public String getTestDescription() {
+ return "When the first column is the primary sort column, both columns should have "
+ + "a sort indicator with the same sort direction. Clicking on the right column "
+ + "in that state should have no effect.";
+ }
+
+ @Override
+ public Integer getTicketNumber() {
+ return 17440;
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/grid/GridSortIndicatorTest.java b/uitest/src/com/vaadin/tests/components/grid/GridSortIndicatorTest.java
new file mode 100644
index 0000000000..30ce7b76f9
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/grid/GridSortIndicatorTest.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2000-2014 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.grid;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+import com.vaadin.testbench.elements.GridElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class GridSortIndicatorTest extends MultiBrowserTest {
+
+ @Test
+ public void testIndicators() throws InterruptedException {
+ openTestURL();
+ GridElement grid = $(GridElement.class).first();
+ // Clicking the left header cell should set ascending sort order for
+ // both columns.
+ grid.getHeaderCell(0, 0).click();
+ assertTrue(grid.getHeaderCell(0, 0).getAttribute("class")
+ .contains("sort-asc"));
+ assertTrue(grid.getHeaderCell(0, 1).getAttribute("class")
+ .contains("sort-asc"));
+ // Click the left column to change the sort direction.
+ grid.getHeaderCell(0, 0).click();
+ assertTrue(grid.getHeaderCell(0, 0).getAttribute("class")
+ .contains("sort-desc"));
+ assertTrue(grid.getHeaderCell(0, 1).getAttribute("class")
+ .contains("sort-desc"));
+ // Clicking on the right column should have no effect.
+ grid.getHeaderCell(0, 1).click();
+ assertTrue(grid.getHeaderCell(0, 0).getAttribute("class")
+ .contains("sort-desc"));
+ assertTrue(grid.getHeaderCell(0, 1).getAttribute("class")
+ .contains("sort-desc"));
+ }
+} \ No newline at end of file
diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridStructureTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridStructureTest.java
index e83031f227..94decd0c05 100644
--- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridStructureTest.java
+++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridStructureTest.java
@@ -473,7 +473,7 @@ public class GridStructureTest extends GridBasicFeaturesTest {
// Wait until page is loaded completely.
int count = 0;
- while (!isElementPresent(GridElement.class)) {
+ while (!$(GridElement.class).exists()) {
if (count == 100) {
fail("Reloading page failed");
}
diff --git a/uitest/src/com/vaadin/tests/components/gridlayout/ComponentAlignments.java b/uitest/src/com/vaadin/tests/components/gridlayout/ComponentAlignments.java
new file mode 100644
index 0000000000..8b3cd02d9e
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/gridlayout/ComponentAlignments.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2000-2014 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.gridlayout;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * Test UI for TOP_CENTER and TOP_RIGHT alignments in VerticalLayout.
+ *
+ * @author Vaadin Ltd
+ */
+public class ComponentAlignments extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+
+ CheckBox topcenter = new CheckBox("Top Center");
+ topcenter.setSizeUndefined();
+ VerticalLayout verticalLayout1 = new VerticalLayout(topcenter);
+ verticalLayout1.setHeight("40px");
+ verticalLayout1.setWidth("140px");
+ verticalLayout1.setComponentAlignment(topcenter, Alignment.TOP_CENTER);
+ addComponent(verticalLayout1);
+
+ CheckBox topright = new CheckBox("Top Right");
+ topright.setSizeUndefined();
+ VerticalLayout verticalLayout2 = new VerticalLayout(topright);
+ verticalLayout2.setHeight("40px");
+ verticalLayout2.setWidth("140px");
+ verticalLayout2.setComponentAlignment(topright, Alignment.TOP_RIGHT);
+ addComponent(verticalLayout2);
+
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 14137;
+ }
+
+ @Override
+ public String getDescription() {
+ return "TOP_CENTER and TOP_RIGHT alignments should work in VerticalLayout";
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/gridlayout/ComponentAlignmentsTest.java b/uitest/src/com/vaadin/tests/components/gridlayout/ComponentAlignmentsTest.java
new file mode 100644
index 0000000000..cdc8dc77f1
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/gridlayout/ComponentAlignmentsTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2000-2014 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.gridlayout;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.testbench.elements.CheckBoxElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+/**
+ * Test for TOP_CENTER and TOP_RIGHT alignments in VerticalLayout.
+ *
+ * @author Vaadin Ltd
+ */
+public class ComponentAlignmentsTest extends MultiBrowserTest {
+
+ @Test
+ public void testTopCenterAlignment() {
+ openTestURL();
+
+ CheckBoxElement checkbox = $(CheckBoxElement.class).first();
+ WebElement parent = checkbox.findElement(By.xpath(".."));
+
+ int leftSpaceSize = checkbox.getLocation().getX()
+ - parent.getLocation().getX();
+ int rightSpaceSize = parent.getLocation().getX()
+ + parent.getSize().getWidth() - checkbox.getLocation().getX()
+ - checkbox.getSize().getWidth();
+ Assert.assertTrue("No space on the left for centered element",
+ leftSpaceSize > 0);
+ Assert.assertTrue("No space on the right for centered element",
+ rightSpaceSize > 0);
+
+ int diff = Math.abs(rightSpaceSize - leftSpaceSize);
+ Assert.assertTrue("Element is not in the center, diff:" + diff,
+ diff <= 2); // IE11 2pixels
+ }
+
+ @Test
+ public void testTopRightAlignment() {
+ openTestURL();
+
+ CheckBoxElement checkbox = $(CheckBoxElement.class).get(1);
+ WebElement parent = checkbox.findElement(By.xpath(".."));
+
+ int leftSpaceSize = checkbox.getLocation().getX()
+ - parent.getLocation().getX();
+ int rightSpaceSize = parent.getLocation().getX()
+ + parent.getSize().getWidth() - checkbox.getLocation().getX()
+ - checkbox.getSize().getWidth();
+ Assert.assertTrue("No space on the left for centered element",
+ leftSpaceSize > 0);
+ Assert.assertTrue("There is some space on the right for the element",
+ rightSpaceSize <= 1);
+
+ int sizeDiff = parent.getSize().getWidth()
+ - checkbox.getSize().getWidth();
+ Assert.assertTrue("Element is not in aligned to the right",
+ Math.abs(sizeDiff - leftSpaceSize) <= 1);
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java
index bd7522aab7..1e193fc3b4 100644
--- a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java
+++ b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java
@@ -36,7 +36,10 @@ import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.HasComponents;
import com.vaadin.ui.JavaScriptFunction;
+
import elemental.json.JsonArray;
+import elemental.json.JsonObject;
+import elemental.json.JsonValue;
public class BasicJavaScriptComponent extends AbstractTestUI {
@@ -103,6 +106,31 @@ public class BasicJavaScriptComponent extends AbstractTestUI {
}
});
+ addFunction("sendDifferentTypeOfData", new JavaScriptFunction() {
+ @Override
+ public void call(JsonArray arguments) {
+ for (int i = 0; i < arguments.length(); i++) {
+ JsonValue arg = arguments.get(i);
+ if (arg instanceof JsonObject) {
+ JsonObject o = (JsonObject) arg;
+ log.log("Argument[" + i + "] type: "
+ + arg.getClass().getName());
+ for (String key : o.keys()) {
+ JsonValue v = o.get(key);
+ log.log("Argument[" + i + "][" + key
+ + "] type: " + v.getClass().getName()
+ + ", value: " + v.asString());
+
+ }
+ } else {
+ log.log("Argument[" + i + "] type: "
+ + arg.getClass().getName() + ", value: "
+ + arg.asString());
+ }
+ }
+ }
+ });
+
getRpcProxy(TestRpc.class).sendRpc("RPC message");
callFunction("messageToClient", "Callback message");
@@ -136,7 +164,7 @@ public class BasicJavaScriptComponent extends AbstractTestUI {
}
}
- private final Log log = new Log(5);
+ private final Log log = new Log(15);
@Override
protected void setup(VaadinRequest request) {
diff --git a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js
index 004d34040e..183bf6af9c 100644
--- a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js
+++ b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js
@@ -6,8 +6,8 @@ window.com_vaadin_tests_components_javascriptcomponent_BasicJavaScriptComponent_
parentIds.push(connectorId);
connectorId = this.getParentId(connectorId);
}
+ this.sendDifferentTypeOfData(new Date(123), "a string", 556, true ,{"aString": "value1","anInt":556,"aBoolean":false,"aDate":new Date(111)});
this.reportParentIds(parentIds);
-
this.onStateChange = function() {
var e = this.getElement();
diff --git a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentTest.java b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentTest.java
new file mode 100644
index 0000000000..ea610dccda
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentTest.java
@@ -0,0 +1,97 @@
+package com.vaadin.tests.components.javascriptcomponent;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.By;
+
+import com.vaadin.testbench.elements.AbstractComponentElement;
+import com.vaadin.testbench.elements.AbstractJavaScriptComponentElement;
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.parallel.BrowserUtil;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class BasicJavaScriptComponentTest extends MultiBrowserTest {
+ @Test
+ public void javascriptCommunication() throws Exception {
+ openTestURL();
+ int idx = 0;
+ Assert.assertEquals(
+ "12. Got callback message: Callback message processed",
+ getLogRow(idx++));
+ Assert.assertEquals("11. Got RPC message: RPC message processed",
+ getLogRow(idx++));
+ Assert.assertEquals("10. Parent ids checked", getLogRow(idx++));
+
+ // Data types in JS functions
+ String expected = "1970-01-01T00:00:00.111Z";
+ if (BrowserUtil.isIE8(getDesiredCapabilities())) {
+ expected = "1970-01-01T00:00:00Z";
+ }
+ Assert.assertEquals(
+ "9. Argument[4][aDate] type: elemental.json.impl.JreJsonString, value: "
+ + expected, getLogRow(idx++));
+ Assert.assertEquals(
+ "8. Argument[4][aBoolean] type: elemental.json.impl.JreJsonBoolean, value: false",
+ getLogRow(idx++));
+ Assert.assertEquals(
+ "7. Argument[4][anInt] type: elemental.json.impl.JreJsonNumber, value: 556",
+ getLogRow(idx++));
+ Assert.assertEquals(
+ "6. Argument[4][aString] type: elemental.json.impl.JreJsonString, value: value1",
+ getLogRow(idx++));
+ Assert.assertEquals(
+ "5. Argument[4] type: elemental.json.impl.JreJsonObject",
+ getLogRow(idx++));
+ Assert.assertEquals(
+ "4. Argument[3] type: elemental.json.impl.JreJsonBoolean, value: true",
+ getLogRow(idx++));
+ Assert.assertEquals(
+ "3. Argument[2] type: elemental.json.impl.JreJsonNumber, value: 556",
+ getLogRow(idx++));
+ Assert.assertEquals(
+ "2. Argument[1] type: elemental.json.impl.JreJsonString, value: a string",
+ getLogRow(idx++));
+
+ expected = "1970-01-01T00:00:00.123Z";
+ if (BrowserUtil.isIE8(getDesiredCapabilities())) {
+ expected = "1970-01-01T00:00:00Z";
+ }
+
+ Assert.assertEquals(
+ "1. Argument[0] type: elemental.json.impl.JreJsonString, value: "
+ + expected, getLogRow(idx++));
+
+ // Component attributes
+ AbstractJavaScriptComponentElement jsComponent = $(
+ AbstractJavaScriptComponentElement.class).first();
+ Assert.assertEquals("Component caption", getCaption(jsComponent));
+
+ // app://APP/connector/[uiid]/[cid]/[key]/[filename]
+ Assert.assertTrue(getChildText(jsComponent, 0).matches(
+ "4. Url: .*/run/APP/connector/0/\\d+/test"));
+ Assert.assertEquals("3. State message: Second state message",
+ getChildText(jsComponent, 1));
+ Assert.assertEquals("2. State message: First state message",
+ getChildText(jsComponent, 2));
+
+ // Can't/shouldn't check parent class name as we used to because it
+ // relies on parent state change events being fired before child state
+ // change events and this is not guaranteed
+
+ // Modifications
+ ButtonElement button = $(ButtonElement.class).first();
+ button.click();
+ Assert.assertEquals("Remove component\nDon't mess with me",
+ button.getText());
+ }
+
+ private String getCaption(AbstractComponentElement c) {
+ return c.findElement(By.xpath("../div[@class='v-caption']")).getText();
+ }
+
+ private String getChildText(AbstractComponentElement e, int index) {
+ return e.findElement(By.xpath("(./div)[" + (index + 1) + "]"))
+ .getText();
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/label/LabelTooltipTest.java b/uitest/src/com/vaadin/tests/components/label/LabelTooltipTest.java
new file mode 100644
index 0000000000..600cc4231a
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/label/LabelTooltipTest.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2000-2014 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.label;
+
+import java.io.IOException;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.interactions.Actions;
+
+import com.vaadin.testbench.elements.LabelElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class LabelTooltipTest extends MultiBrowserTest {
+
+ @Override
+ protected boolean requireWindowFocusForIE() {
+ return true;
+ }
+
+ @Test
+ public void testLabelTooltip() throws IOException {
+ openTestURL();
+ assertTooltips();
+ }
+
+ @Test
+ public void testLabelToolTipChameleonTheme() throws IOException {
+ openTestURL("theme=chameleon");
+ assertTooltips();
+ }
+
+ @Test
+ public void testLabelToolTipRunoTheme() throws IOException {
+ openTestURL("theme=runo");
+ assertTooltips();
+ }
+
+ private void assertTooltips() throws IOException {
+ $(LabelElement.class).get(2).showTooltip();
+ Assert.assertEquals("Default tooltip content", getTooltipElement()
+ .getText());
+
+ /* Some cases tooltip doesn't disappear without some extra mouse events */
+ new Actions(getDriver()).moveByOffset(100, -40).perform();
+ new Actions(getDriver()).moveToElement($(LabelElement.class).get(1))
+ .click().perform();
+
+ $(LabelElement.class).get(4).showTooltip();
+ Assert.assertEquals(
+ "Error inside tooltip together with the regular tooltip message.",
+ getTooltipErrorElement().getText());
+ Assert.assertEquals("Default tooltip content", getTooltipElement()
+ .getText());
+
+ /* Visual comparison */
+ compareScreen("tooltipVisible");
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/menubar/MenuBarNavigationMouseTest.java b/uitest/src/com/vaadin/tests/components/menubar/MenuBarNavigationMouseTest.java
new file mode 100644
index 0000000000..a4f8023ea2
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/menubar/MenuBarNavigationMouseTest.java
@@ -0,0 +1,42 @@
+package com.vaadin.tests.components.menubar;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.vaadin.testbench.By;
+import com.vaadin.testbench.elementsbase.ServerClass;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class MenuBarNavigationMouseTest extends MultiBrowserTest {
+
+ @ServerClass("com.vaadin.ui.MenuBar")
+ public static class MenuBarElement extends
+ com.vaadin.testbench.elements.MenuBarElement {
+
+ public void openMenuPath(String... captions) {
+ for (String c : captions) {
+ findElement(By.vaadin("#" + c)).click();
+ }
+ }
+ }
+
+ @Override
+ protected Class<?> getUIClass() {
+ return MenuBarNavigation.class;
+ }
+
+ @Test
+ public void testMenuBarMouseNavigation() throws Exception {
+ openTestURL();
+ MenuBarElement menuBar = $(MenuBarElement.class).first();
+ menuBar.openMenuPath("File", "Export..", "As PDF...");
+ Assert.assertEquals("1. MenuItem File/Export../As PDF... selected",
+ getLogRow(0));
+ menuBar.openMenuPath("Edit", "Copy");
+ Assert.assertEquals("2. MenuItem Edit/Copy selected", getLogRow(0));
+ menuBar.openMenuPath("Help");
+ Assert.assertEquals("3. MenuItem Help selected", getLogRow(0));
+ menuBar.openMenuPath("File", "Exit");
+ Assert.assertEquals("4. MenuItem File/Exit selected", getLogRow(0));
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/ui/InitialFragmentEventTest.java b/uitest/src/com/vaadin/tests/components/ui/InitialFragmentEventTest.java
new file mode 100644
index 0000000000..f52797dd63
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/ui/InitialFragmentEventTest.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2000-2014 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.ui;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class InitialFragmentEventTest extends MultiBrowserTest {
+
+ @Test
+ public void testChangeFragmentOnServerToMatchClient() {
+ openTestURL("#foo");
+
+ assertEquals("Log should not contain any text initially", " ",
+ getLogRow(0));
+
+ $(ButtonElement.class).caption("Set fragment to 'foo'").first().click();
+
+ assertEquals("Log should not contain any text after clicking button",
+ " ", getLogRow(0));
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/fieldgroup/BooleanTextFieldTest.java b/uitest/src/com/vaadin/tests/fieldgroup/BooleanTextFieldTest.java
new file mode 100644
index 0000000000..7a74deb2e0
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/fieldgroup/BooleanTextFieldTest.java
@@ -0,0 +1,60 @@
+package com.vaadin.tests.fieldgroup;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.Keys;
+
+public class BooleanTextFieldTest extends BasicPersonFormTest {
+
+ @Override
+ protected boolean requireWindowFocusForIE() {
+ return true;
+ }
+
+ @Test
+ public void testSetBooleanTextField() throws Exception {
+ openTestURL();
+
+ getLastNameArea().clear();
+ getLastNameArea().click();
+ getLastNameArea().sendKeys("Dover");
+
+ assertBeanValuesUnchanged();
+
+ getDeceasedField().click();
+ while (!getDeceasedField().getValue().isEmpty()) {
+ getDeceasedField().sendKeys(Keys.BACK_SPACE);
+ }
+ getDeceasedField().sendKeys("false", Keys.ENTER);
+
+ /* error indicator */
+ Assert.assertEquals("Incorrect amount of error indicators on page.", 1,
+ findElements(By.className("v-errorindicator")).size());
+ Assert.assertEquals("false", getDeceasedField().getAttribute("value"));
+
+ assertBeanValuesUnchanged();
+
+ /* error message in tooltip */
+ getDeceasedField().showTooltip();
+ Assert.assertEquals("Could not convert value to Boolean",
+ getTooltipErrorElement().getText());
+
+ getDeceasedField().click();
+ while (!getDeceasedField().getValue().isEmpty()) {
+ getDeceasedField().sendKeys(Keys.BACK_SPACE);
+ }
+ getDeceasedField().sendKeys("YAY!", Keys.ENTER);
+
+ /* no error indicator */
+ Assert.assertFalse(isElementPresent(By.className("v-errorindicator")));
+
+ assertCommitSuccessful();
+
+ /* commit last name and new deceased status */
+ showBeanValues();
+ Assert.assertEquals(
+ "4. Person [firstName=John, lastName=Dover, email=john@doe.com, age=64, sex=Male, address=Address [streetAddress=John street, postalCode=11223, city=John's town, country=USA], deceased=true, salary=null, salaryDouble=null, rent=null]",
+ getLogRow(0));
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/serialization/SerializerTest.java b/uitest/src/com/vaadin/tests/serialization/SerializerTest.java
index f8a2dcaf76..d1af180d4e 100644
--- a/uitest/src/com/vaadin/tests/serialization/SerializerTest.java
+++ b/uitest/src/com/vaadin/tests/serialization/SerializerTest.java
@@ -51,7 +51,7 @@ import elemental.json.JsonValue;
@Widgetset("com.vaadin.tests.widgetset.TestingWidgetSet")
public class SerializerTest extends AbstractTestUI {
- private Log log = new Log(50);
+ private Log log = new Log(80);
@Override
protected void setup(VaadinRequest request) {
@@ -63,7 +63,7 @@ public class SerializerTest extends AbstractTestUI {
log.setNumberLogRows(false);
addComponent(log);
- SerializerTestRpc rpc = testExtension
+ final SerializerTestRpc rpc = testExtension
.getRpcProxy(SerializerTestRpc.class);
SerializerTestState state = testExtension.getState();
@@ -263,12 +263,15 @@ public class SerializerTest extends AbstractTestUI {
rpc.sendDate(new Date(1));
rpc.sendDate(new Date(2013 - 1900, 5 - 1, 31, 11, 12, 13));
+ rpc.sendDateArray(new Date[] { new Date(2013 - 1900, 1, 1),
+ new Date(2012 - 1900, 1, 1) });
state.jsonNull = Json.createNull();
state.jsonString = Json.create("a string");
state.jsonBoolean = Json.create(false);
rpc.sendJson(Json.create(true), Json.createNull(), Json.create("JSON"));
+ state.dateArray = new Date[] { new Date(1), new Date(2) };
state.date1 = new Date(1);
state.date2 = new Date(2013 - 1900, 5 - 1, 31, 11, 12, 13);
@@ -469,6 +472,20 @@ public class SerializerTest extends AbstractTestUI {
}
@Override
+ public void sendDateArray(Date[] dateArray) {
+ DateFormat format = DateFormat.getDateTimeInstance(
+ DateFormat.LONG, DateFormat.FULL,
+ new Locale("en", "fi"));
+ format.setTimeZone(TimeZone.getTimeZone("UTC"));
+ String dates = "";
+
+ for (Date date : dateArray) {
+ dates += " " + format.format(date);
+ }
+ log.log("sendDateArray: " + dates);
+ }
+
+ @Override
public void sendJson(JsonValue value1, JsonValue value2,
JsonString string) {
log.log("sendJson: " + value1.toJson() + ", " + value2.toJson()
diff --git a/uitest/src/com/vaadin/tests/serialization/SerializerTestTest.java b/uitest/src/com/vaadin/tests/serialization/SerializerTestTest.java
index 8f1bcb6266..b2eb0e6b01 100644
--- a/uitest/src/com/vaadin/tests/serialization/SerializerTestTest.java
+++ b/uitest/src/com/vaadin/tests/serialization/SerializerTestTest.java
@@ -30,6 +30,9 @@ public class SerializerTestTest extends MultiBrowserTest {
Assert.assertEquals(
"sendJson: {\"b\":false,\"s\":\"JSON\"}, null, \"value\"",
getLogRow(logRow++));
+ Assert.assertEquals(
+ "sendDateArray: January 31, 2013 10:00:00 PM UTC January 31, 2012 10:00:00 PM UTC",
+ getLogRow(logRow++));
Assert.assertEquals("sendDate: May 31, 2013 8:12:13 AM UTC",
getLogRow(logRow++));
Assert.assertEquals("sendDate: January 1, 1970 12:00:00 AM UTC",
@@ -80,6 +83,13 @@ public class SerializerTestTest extends MultiBrowserTest {
"sendBoolean: false, false, [false, false, true, false, true, true]",
getLogRow(logRow++));
Assert.assertEquals("sendBeanSubclass: 43", getLogRow(logRow++));
+ Assert.assertEquals(
+ "state.dateArray: Thu Jan 01 02:00:00 GMT+200 1970 Thu Jan 01 02:00:00 GMT+200 1970",
+ getLogRow(logRow++));
+ Assert.assertEquals("state.date2: Fri May 31 11:12:13 GMT+300 2013",
+ getLogRow(logRow++));
+ Assert.assertEquals("state.date1: Thu Jan 01 02:00:00 GMT+200 1970",
+ getLogRow(logRow++));
Assert.assertEquals("state.jsonBoolean: false", getLogRow(logRow++));
Assert.assertEquals("state.jsonString: a string", getLogRow(logRow++));
Assert.assertEquals("state.jsonNull: NULL", getLogRow(logRow++));
diff --git a/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java b/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java
index 48f99e5057..ddf90b080b 100644
--- a/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java
+++ b/uitest/src/com/vaadin/tests/tb3/AbstractTB3Test.java
@@ -28,6 +28,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Set;
+import java.util.logging.Level;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
@@ -35,6 +36,7 @@ import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHttpEntityEnclosingRequest;
+import org.junit.Assert;
import org.junit.Rule;
import org.junit.runner.RunWith;
import org.openqa.selenium.By;
@@ -823,6 +825,22 @@ public abstract class AbstractTB3Test extends ParallelTest {
return findElement(By.xpath("//button[@title='Debug message log']"));
}
+ protected void assertNoDebugMessage(Level level) {
+ // class="v-debugwindow-row Level.getName()"
+ List<WebElement> logElements = driver
+ .findElements(By.xpath(String
+ .format("//div[@class='v-debugwindow-row %s']/span[@class='v-debugwindow-message']",
+ level.getName())));
+ if (!logElements.isEmpty()) {
+ String logRows = "";
+ for (WebElement e : logElements) {
+ logRows += "\n" + e.getText();
+ }
+ Assert.fail("Found debug messages with level " + level.getName()
+ + ": " + logRows);
+ }
+ }
+
/**
* Should the "require window focus" be enabled for Internet Explorer.
* RequireWindowFocus makes tests more stable but seems to be broken with
diff --git a/uitest/src/com/vaadin/tests/themes/valo/ContrastFontColor.java b/uitest/src/com/vaadin/tests/themes/valo/ContrastFontColor.java
new file mode 100644
index 0000000000..ad73302a31
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/themes/valo/ContrastFontColor.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2000-2014 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.themes.valo;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.TextField;
+
+/**
+ * Test UI for default contrast color value.
+ *
+ * @author Vaadin Ltd
+ */
+@Theme("tests-valo-contrast")
+public class ContrastFontColor extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ TextField field = new TextField();
+ addComponent(field);
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 14793;
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "Provide a variable for default contrast value in valo-font-color function.";
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/themes/valo/ContrastFontColorTest.java b/uitest/src/com/vaadin/tests/themes/valo/ContrastFontColorTest.java
new file mode 100644
index 0000000000..38d93ab633
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/themes/valo/ContrastFontColorTest.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2000-2014 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.themes.valo;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.vaadin.testbench.elements.TextFieldElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+/**
+ * Test for default contrast color variable in valo-font-color function.
+ *
+ * @author Vaadin Ltd
+ */
+public class ContrastFontColorTest extends MultiBrowserTest {
+
+ @Test
+ public void testTextColor() {
+ openTestURL();
+
+ String color = $(TextFieldElement.class).first().getCssValue("color");
+ Assert.assertEquals(
+ "Unexpected text color value using 0.1 as defualt contrast value :"
+ + color, "rgba(230, 230, 230, 1)", color);
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java
index d055bf05e3..124b1b5600 100644
--- a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java
+++ b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java
@@ -267,6 +267,11 @@ public class SerializerTestConnector extends AbstractExtensionConnector {
}
@Override
+ public void sendDateArray(Date[] date) {
+ rpc.sendDateArray(date);
+ }
+
+ @Override
public void sendJson(JsonValue value1, JsonValue value2,
JsonString string) {
if (value1.getType() != JsonType.BOOLEAN) {
@@ -348,6 +353,14 @@ public class SerializerTestConnector extends AbstractExtensionConnector {
+ ((JsonString) getState().jsonString).getString());
rpc.log("state.jsonBoolean: " + getState().jsonBoolean.getBoolean());
+ rpc.log("state.date1: " + getState().date1);
+ rpc.log("state.date2: " + getState().date2);
+ String arrStr = "";
+ for (Date d : getState().dateArray) {
+ arrStr += d + " ";
+ }
+ rpc.log("state.dateArray: " + arrStr);
+
/*
* TODO public double doubleValue; public Double DoubleValue; public
* double[] doubleArray; ;
diff --git a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java
index 758a778564..95c04ebcfe 100644
--- a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java
+++ b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java
@@ -85,7 +85,10 @@ public interface SerializerTestRpc extends ServerRpc, ClientRpc {
public void sendDate(Date date);
+ public void sendDateArray(Date[] dates);
+
public void sendJson(JsonValue value1, JsonValue value2, JsonString string);
public void log(String string);
+
}
diff --git a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java
index 982e567c20..5610ad7bfb 100644
--- a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java
+++ b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java
@@ -100,6 +100,7 @@ public class SerializerTestState extends AbstractComponentState {
public Date date1;
public Date date2;
+ public Date[] dateArray;
public BeanWithAbstractSuperclass beanWithAbstractSuperclass;
diff --git a/uitest/tb2/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html b/uitest/tb2/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html
deleted file mode 100644
index d7024b2972..0000000000
--- a/uitest/tb2/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<?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>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.javascriptcomponent.BasicJavaScriptComponent?restartApplication</td>
- <td></td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[0]</td>
- <td>3. Got callback message: Callback message processed</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[1]</td>
- <td>2. Got RPC message: RPC message processed</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[2]</td>
- <td>1. Parent ids checked</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/domChild[1]/domChild[0]/domChild[0]</td>
- <td>Component caption</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[0]</td>
- <td>4. Url: */run/APP/connector/0/10/test</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[1]</td>
- <td>3. State message: Second state message</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[2]</td>
- <td>2. State message: First state message</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[3]</td>
- <td>1. Parent element className: v-verticallayout v-layout v-vertical v-widget v-has-width</td>
-</tr>
-<tr>
- <td>click</td>
- <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::PID_SRemoveButton/domChild[0]/domChild[0]</td>
- <td></td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::PID_SRemoveButton</td>
- <td>Remove componentDon't mess with me</td>
-</tr>
-</tbody></table>
-</body>
-</html>
diff --git a/uitest/tb2/com/vaadin/tests/components/label/LabelTooltip-chameleon.html b/uitest/tb2/com/vaadin/tests/components/label/LabelTooltip-chameleon.html
deleted file mode 100644
index 8a042ede92..0000000000
--- a/uitest/tb2/com/vaadin/tests/components/label/LabelTooltip-chameleon.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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://arturwin.office.itmill.com: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.label.LabelTooltip?restartApplication&amp;theme=chameleon</td>
- <td></td>
-</tr>
-<tr>
- <td>screenCapture</td>
- <td></td>
- <td>noerror-error</td>
-</tr>
-<tr>
- <td>showTooltip</td>
- <td>vaadin=runcomvaadintestscomponentslabelLabelTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]/VLabel[1]</td>
- <td>0,0</td>
-</tr>
-<tr>
- <td>screenCapture</td>
- <td></td>
- <td>tooltip-upper</td>
-</tr>
-<tr>
- <td>showTooltip</td>
- <td>vaadin=runcomvaadintestscomponentslabelLabelTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]/VLabel[3]</td>
- <td>0,0</td>
-</tr>
-<tr>
- <td>screenCapture</td>
- <td></td>
- <td>tooltip-lower</td>
-</tr>
-
-</tbody></table>
-</body>
-</html>
diff --git a/uitest/tb2/com/vaadin/tests/components/label/LabelTooltip-runo.html b/uitest/tb2/com/vaadin/tests/components/label/LabelTooltip-runo.html
deleted file mode 100644
index 34fb088ff9..0000000000
--- a/uitest/tb2/com/vaadin/tests/components/label/LabelTooltip-runo.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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://arturwin.office.itmill.com: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.label.LabelTooltip?restartApplication&amp;theme=runo</td>
- <td></td>
-</tr>
-<tr>
- <td>screenCapture</td>
- <td></td>
- <td>noerror-error</td>
-</tr>
-<tr>
- <td>showTooltip</td>
- <td>vaadin=runcomvaadintestscomponentslabelLabelTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]/VLabel[1]</td>
- <td>0,0</td>
-</tr>
-<tr>
- <td>screenCapture</td>
- <td></td>
- <td>tooltip-upper</td>
-</tr>
-<tr>
- <td>showTooltip</td>
- <td>vaadin=runcomvaadintestscomponentslabelLabelTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]/VLabel[3]</td>
- <td>0,0</td>
-</tr>
-<tr>
- <td>screenCapture</td>
- <td></td>
- <td>tooltip-lower</td>
-</tr>
-
-</tbody></table>
-</body>
-</html>
diff --git a/uitest/tb2/com/vaadin/tests/components/label/LabelTooltip.html b/uitest/tb2/com/vaadin/tests/components/label/LabelTooltip.html
deleted file mode 100644
index 05da9195ef..0000000000
--- a/uitest/tb2/com/vaadin/tests/components/label/LabelTooltip.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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://arturwin.office.itmill.com: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.label.LabelTooltip?restartApplication</td>
- <td></td>
-</tr>
-<tr>
- <td>screenCapture</td>
- <td></td>
- <td>noerror-error</td>
-</tr>
-<tr>
- <td>showTooltip</td>
- <td>vaadin=runcomvaadintestscomponentslabelLabelTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]/VLabel[1]</td>
- <td>0,0</td>
-</tr>
-<tr>
- <td>screenCapture</td>
- <td></td>
- <td>tooltip-upper</td>
-</tr>
-<tr>
- <td>showTooltip</td>
- <td>vaadin=runcomvaadintestscomponentslabelLabelTooltip::/VVerticalLayout[0]/VVerticalLayout[0]/VGridLayout[0]/VLabel[3]</td>
- <td>0,0</td>
-</tr>
-<tr>
- <td>screenCapture</td>
- <td></td>
- <td>tooltip-lower</td>
-</tr>
-
-</tbody></table>
-</body>
-</html>
diff --git a/uitest/tb2/com/vaadin/tests/components/menubar/MenuBarNavigationMouse.html b/uitest/tb2/com/vaadin/tests/components/menubar/MenuBarNavigationMouse.html
deleted file mode 100644
index 421966876b..0000000000
--- a/uitest/tb2/com/vaadin/tests/components/menubar/MenuBarNavigationMouse.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<?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>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.menubar.MenuBarNavigation?restartApplication</td>
- <td></td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VMenuBar[0]#item0</td>
- <td>13,8</td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::Root/VOverlay[0]/VMenuBar[0]#item4</td>
- <td>41,4</td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::Root/VOverlay[1]/VMenuBar[0]#item0</td>
- <td>32,2</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VLabel[0]</td>
- <td>1. MenuItem File/Export../As PDF... selected</td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VMenuBar[0]#item1</td>
- <td>13,11</td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::Root/VOverlay[0]/VMenuBar[0]#item0</td>
- <td>18,11</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VLabel[0]</td>
- <td>2. MenuItem Edit/Copy selected</td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VMenuBar[0]#item2</td>
- <td>6,5</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VLabel[0]</td>
- <td>3. MenuItem Help selected</td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VMenuBar[0]#item0</td>
- <td>8,13</td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::Root/VOverlay[0]/VMenuBar[0]#item6</td>
- <td>18,9</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsmenubarMenuBarNavigation::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VLabel[0]</td>
- <td>4. MenuItem File/Exit selected</td>
-</tr>
-</tbody></table>
-</body>
-</html>
diff --git a/uitest/tb2/com/vaadin/tests/components/ui/ChangeFragmentOnServerToMatchClient.html b/uitest/tb2/com/vaadin/tests/components/ui/ChangeFragmentOnServerToMatchClient.html
deleted file mode 100644
index 8276f0fd89..0000000000
--- a/uitest/tb2/com/vaadin/tests/components/ui/ChangeFragmentOnServerToMatchClient.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<?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://arturwin.office.itmill.com:9999/" />
-<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.InitialFragmentEvent?restartApplication#foo</td>
- <td></td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsuiInitialFragmentEvent::PID_SLog_row_0</td>
- <td></td>
-</tr>
-<!--Changing the fragment to the initial fragment should not cause an event-->
-<tr>
- <td>click</td>
- <td>vaadin=runcomvaadintestscomponentsuiInitialFragmentEvent::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[1]/VButton[0]/domChild[0]/domChild[0]</td>
- <td></td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestscomponentsuiInitialFragmentEvent::PID_SLog_row_0</td>
- <td></td>
-</tr>
-</tbody></table>
-</body>
-</html>
diff --git a/uitest/tb2/com/vaadin/tests/fieldgroup/BooleanTextField.html b/uitest/tb2/com/vaadin/tests/fieldgroup/BooleanTextField.html
deleted file mode 100644
index 92c03e14f4..0000000000
--- a/uitest/tb2/com/vaadin/tests/fieldgroup/BooleanTextField.html
+++ /dev/null
@@ -1,141 +0,0 @@
-<?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>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.fieldgroup.BasicPersonForm?restartApplication</td>
- <td></td>
-</tr>
-<tr>
- <td>screenCapture</td>
- <td></td>
- <td>initial</td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[3]/VTextArea[0]</td>
- <td>90,38</td>
-</tr>
-<tr>
- <td>enterCharacter</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[3]/VTextArea[0]</td>
- <td>Dover</td>
-</tr>
-<tr>
- <td>click</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[10]/VButton[0]/domChild[0]/domChild[0]</td>
- <td></td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::PID_SLog_row_0</td>
- <td>1. Person [firstName=John, lastName=Doe, email=john@doe.com, age=64, sex=Male, address=Address [streetAddress=John street, postalCode=11223, city=John's town, country=USA], deceased=false, salary=null, salaryDouble=null, rent=null]</td>
-</tr>
-<tr>
- <td>drag</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[7]/VTextField[0]</td>
- <td>108,9</td>
-</tr>
-<tr>
- <td>drop</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]</td>
- <td>0,587</td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[7]/VTextField[0]</td>
- <td>-18,9</td>
-</tr>
-<tr>
- <td>enterCharacter</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[7]/VTextField[0]</td>
- <td>false</td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/domChild[0]</td>
- <td>239,14</td>
-</tr>
-<!--error indicator-->
-<tr>
- <td>assertCSSClass</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/domChild[7]/domChild[0]/domChild[1]/</td>
- <td>v-errorindicator</td>
-</tr>
-<tr>
- <td>assertValue</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[7]/VTextField[0]</td>
- <td>false</td>
-</tr>
-<!--show bean values-->
-<tr>
- <td>click</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[10]/VButton[0]/domChild[0]/domChild[0]</td>
- <td></td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::PID_SLog_row_0</td>
- <td>2. Person [firstName=John, lastName=Doe, email=john@doe.com, age=64, sex=Male, address=Address [streetAddress=John street, postalCode=11223, city=John's town, country=USA], deceased=false, salary=null, salaryDouble=null, rent=null]</td>
-</tr>
-<!--error message in tooltip-->
-<tr>
- <td>showTooltip</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[7]/VTextField[0]</td>
- <td>0,0</td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::Root/VTooltip[0]/FlowPanel[0]/VErrorMessage[0]/HTML[0]</td>
- <td>Could not convert value to Boolean</td>
-</tr>
-<tr>
- <td>mouseClick</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[7]/VTextField[0]</td>
- <td>66,6</td>
-</tr>
-<tr>
- <td>type</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[7]/VTextField[0]</td>
- <td>YAY!</td>
-</tr>
-<!--no error indicator-->
-<tr>
- <td>assertElementNotPresent</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/domChild[0]/domChild[7]/domChild[0]/domChild[1]</td>
- <td>v-errorindicator</td>
-</tr>
-<tr>
- <td>click</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[8]/VButton[0]/domChild[0]/domChild[0]</td>
- <td></td>
-</tr>
-<tr>
- <td>closeNotification</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::Root/VNotification[0]</td>
- <td>0,0</td>
-</tr>
-<!--commit last name and new deceased status-->
-<tr>
- <td>click</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[10]/VButton[0]/domChild[0]/domChild[0]</td>
- <td></td>
-</tr>
-<tr>
- <td>assertText</td>
- <td>vaadin=runcomvaadintestsfieldgroupBasicPersonForm::PID_SLog_row_0</td>
- <td>4. Person [firstName=John, lastName=Dover, email=john@doe.com, age=64, sex=Male, address=Address [streetAddress=John street, postalCode=11223, city=John's town, country=USA], deceased=true, salary=null, salaryDouble=null, rent=null]</td>
-</tr>
-</tbody></table>
-</body>
-</html>