diff options
author | Teamcity <build@vaadin.com> | 2015-05-06 09:50:39 +0300 |
---|---|---|
committer | Teamcity <build@vaadin.com> | 2015-05-06 09:50:39 +0300 |
commit | 758de8bac1eaa4d76b2b4078d526d6133f9489d2 (patch) | |
tree | bb134a9ecc600448cbd54e5629e37e5c8978d22e | |
parent | fcd07decc37ae01d31dc4509bfe0b2e26b9004ff (diff) | |
parent | 79c8c696c09b0a7cbe1f1863e6c7c165b2f5f19f (diff) | |
download | vaadin-framework-758de8bac1eaa4d76b2b4078d526d6133f9489d2.tar.gz vaadin-framework-758de8bac1eaa4d76b2b4078d526d6133f9489d2.zip |
Merge branch 'refs/heads/master' into 'snapshot/7.5'
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&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&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> |