diff --git a/testbench-api/src/main/java/com/vaadin/testbench/elements/RichTextAreaElement.java b/testbench-api/src/main/java/com/vaadin/testbench/elements/RichTextAreaElement.java index 4228d9192b6..681912bc488 100644 --- a/testbench-api/src/main/java/com/vaadin/testbench/elements/RichTextAreaElement.java +++ b/testbench-api/src/main/java/com/vaadin/testbench/elements/RichTextAreaElement.java @@ -15,6 +15,7 @@ */ package com.vaadin.testbench.elements; +import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebElement; import com.vaadin.testbench.By; @@ -33,4 +34,43 @@ public class RichTextAreaElement extends AbstractFieldElement { public WebElement getEditorIframe() { return findElement(By.tagName("iframe")); } + + /** + * Return value of the field element. + * + * @return value of the field element + * @since + */ + public String getValue() { + JavascriptExecutor executor= (JavascriptExecutor)getDriver(); + return executor.executeScript("return arguments[0].contentDocument.body.innerHTML",getEditorIframe()).toString(); + } + + /** + * Set value of the field element. + * + * @param chars + * new value of the field + *@since + */ + public void setValue(CharSequence chars) throws ReadOnlyException { + if (isReadOnly()) { + throw new ReadOnlyException(); + } + focus(); + JavascriptExecutor executor= (JavascriptExecutor)getDriver(); + executor.executeScript("" + + "var bodyE=arguments[0].contentDocument.body;\n" + + "bodyE.innerHTML=arguments[1]; \n" + + "var ev = document.createEvent('HTMLEvents');\n" + + "ev.initEvent('change', true, false); \n" + + "bodyE.dispatchEvent(ev);",getEditorIframe(), chars); + } + + @Override + public void focus(){ + waitForVaadin(); + JavascriptExecutor executor= (JavascriptExecutor)getDriver(); + executor.executeScript("arguments[0].contentDocument.body.focus();",getEditorIframe()); + } } diff --git a/uitest/src/main/java/com/vaadin/tests/elements/ComponentElementGetValue.java b/uitest/src/main/java/com/vaadin/tests/elements/ComponentElementGetValue.java index 2bfc9540a35..5ffd8f5bba5 100644 --- a/uitest/src/main/java/com/vaadin/tests/elements/ComponentElementGetValue.java +++ b/uitest/src/main/java/com/vaadin/tests/elements/ComponentElementGetValue.java @@ -21,27 +21,12 @@ import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractTestUI; -import com.vaadin.ui.AbstractTextField; -import com.vaadin.ui.CheckBox; -import com.vaadin.ui.CheckBoxGroup; -import com.vaadin.ui.ComboBox; -import com.vaadin.ui.Component; -import com.vaadin.ui.DateField; -import com.vaadin.ui.Label; -import com.vaadin.ui.ListSelect; -import com.vaadin.ui.MultiSelect; -import com.vaadin.ui.NativeSelect; -import com.vaadin.ui.PasswordField; -import com.vaadin.ui.RadioButtonGroup; -import com.vaadin.ui.Slider; -import com.vaadin.ui.TextArea; -import com.vaadin.ui.TextField; -import com.vaadin.ui.TwinColSelect; +import com.vaadin.ui.*; /** * UI test for getValue() method of components: TextField, TextArea, * PasswordField, ComboBox, ListSelect, NativeSelect, OptionGroup, CheckBox, - * DateField, TwinColSelect + * DateField, TwinColSelect, RichTextArea * * @since * @author Vaadin Ltd @@ -52,6 +37,7 @@ public class ComponentElementGetValue extends AbstractTestUI { public static final int TEST_SLIDER_VALUE = 42; public static final float TEST_FLOAT_VALUE = 0.42f; public static final LocalDate TEST_DATE_VALUE = LocalDate.now(); + public static final String TESTGET_STRING_VALUE_RICHTEXTAREA = "value 4"; DateField df; final Label valueChangeLabel = new Label("Initial value"); @@ -121,7 +107,7 @@ protected void setup(VaadinRequest request) { event -> valueChangeLabel.setValue(value)); addComponent(field); } - + addComponent(createRichTextArea()); addComponent(createCheckBox()); addComponent(createSlider()); addComponent(createDateField()); @@ -153,6 +139,12 @@ private CheckBox createCheckBox() { return cb; } + private RichTextArea createRichTextArea() { + RichTextArea rta=new RichTextArea(); + rta.setValue(TESTGET_STRING_VALUE_RICHTEXTAREA); + return rta; + } + @Override protected String getTestDescription() { return "Field elements getValue() should return test value"; diff --git a/uitest/src/main/java/com/vaadin/tests/elements/abstracttextfield/AbstractTextElementSetValue.java b/uitest/src/main/java/com/vaadin/tests/elements/abstracttextfield/AbstractTextElementSetValue.java index 09b6fcf02bb..1f5c60b9c99 100644 --- a/uitest/src/main/java/com/vaadin/tests/elements/abstracttextfield/AbstractTextElementSetValue.java +++ b/uitest/src/main/java/com/vaadin/tests/elements/abstracttextfield/AbstractTextElementSetValue.java @@ -19,13 +19,7 @@ import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractTestUI; -import com.vaadin.ui.AbstractField; -import com.vaadin.ui.AbstractTextField; -import com.vaadin.ui.DateField; -import com.vaadin.ui.Label; -import com.vaadin.ui.PasswordField; -import com.vaadin.ui.TextArea; -import com.vaadin.ui.TextField; +import com.vaadin.ui.*; /** * @@ -53,6 +47,7 @@ protected void setup(VaadinRequest request) { addValueChangeListener(comps[i], i); addComponent(comps[i]); addComponent(eventCountLabels[i]); + addComponent(createRichTextArea()); } @@ -81,6 +76,12 @@ private DateField createDateField() { return df; } + private RichTextArea createRichTextArea() { + RichTextArea rta=new RichTextArea(); + rta.setValue(INITIAL_VALUE); + return rta; + } + @Override protected String getTestDescription() { return "Test type method of AbstractTextField components"; diff --git a/uitest/src/test/java/com/vaadin/tests/elements/ComponentElementGetValueTest.java b/uitest/src/test/java/com/vaadin/tests/elements/ComponentElementGetValueTest.java index bd1ea57eaf0..94c1872b742 100644 --- a/uitest/src/test/java/com/vaadin/tests/elements/ComponentElementGetValueTest.java +++ b/uitest/src/test/java/com/vaadin/tests/elements/ComponentElementGetValueTest.java @@ -21,21 +21,10 @@ import java.util.Collections; import java.util.List; +import com.vaadin.testbench.elements.*; import org.junit.Before; import org.junit.Test; -import com.vaadin.testbench.elements.AbstractTextFieldElement; -import com.vaadin.testbench.elements.CheckBoxElement; -import com.vaadin.testbench.elements.CheckBoxGroupElement; -import com.vaadin.testbench.elements.ComboBoxElement; -import com.vaadin.testbench.elements.DateFieldElement; -import com.vaadin.testbench.elements.ListSelectElement; -import com.vaadin.testbench.elements.NativeSelectElement; -import com.vaadin.testbench.elements.PasswordFieldElement; -import com.vaadin.testbench.elements.RadioButtonGroupElement; -import com.vaadin.testbench.elements.TextAreaElement; -import com.vaadin.testbench.elements.TextFieldElement; -import com.vaadin.testbench.elements.TwinColSelectElement; import com.vaadin.tests.tb3.MultiBrowserTest; public class ComponentElementGetValueTest extends MultiBrowserTest { @@ -130,6 +119,14 @@ public void checkDateField() { assertEquals(expected, actual); } + @Test + public void checkRichTextArea(){ + RichTextAreaElement elem= $(RichTextAreaElement.class).first(); + String expected=ComponentElementGetValue.TESTGET_STRING_VALUE_RICHTEXTAREA; + String actual=elem.getValue(); + assertEquals(expected,actual); + } + private void checkValue(AbstractTextFieldElement elem) { String expected = ComponentElementGetValue.TEST_STRING_VALUE; String actual = elem.getValue(); diff --git a/uitest/src/test/java/com/vaadin/tests/elements/abstracttextfield/AbstractTextElementSetValueTest.java b/uitest/src/test/java/com/vaadin/tests/elements/abstracttextfield/AbstractTextElementSetValueTest.java index e1b9960908c..e44f5c47d64 100644 --- a/uitest/src/test/java/com/vaadin/tests/elements/abstracttextfield/AbstractTextElementSetValueTest.java +++ b/uitest/src/test/java/com/vaadin/tests/elements/abstracttextfield/AbstractTextElementSetValueTest.java @@ -17,15 +17,11 @@ import static org.junit.Assert.assertEquals; +import com.vaadin.testbench.elements.*; +import com.vaadin.tests.elements.ComponentElementGetValue; import org.junit.Before; import org.junit.Test; -import com.vaadin.testbench.elements.AbstractTextFieldElement; -import com.vaadin.testbench.elements.DateFieldElement; -import com.vaadin.testbench.elements.LabelElement; -import com.vaadin.testbench.elements.PasswordFieldElement; -import com.vaadin.testbench.elements.TextAreaElement; -import com.vaadin.testbench.elements.TextFieldElement; import com.vaadin.tests.tb3.MultiBrowserTest; /** @@ -69,6 +65,14 @@ public void dateFieldSetValue() { assertEquals(TYPED_STRING, elem.getValue()); } + @Test + public void richTextAreaSetValue(){ + RichTextAreaElement elem=$ (RichTextAreaElement.class).get(0); + elem.setValue(TYPED_STRING); + String actual=elem.getValue(); + assertEquals(TYPED_STRING,actual); + } + // helper methods // checks that setValue method works private void checkType(AbstractTextFieldElement elem,