summaryrefslogtreecommitdiffstats
path: root/uitest/src/test/java/com/vaadin/tests
diff options
context:
space:
mode:
authorTarek Oraby <42799254+tarekoraby@users.noreply.github.com>2020-05-08 15:46:59 +0300
committerGitHub <noreply@github.com>2020-05-08 15:46:59 +0300
commit8821d64a15c0200d920ac94da844568ed0034306 (patch)
treeb4fb2fc09fcd79ac83c0312bb9c7b357acc11d9f /uitest/src/test/java/com/vaadin/tests
parent1dcf3dc338fc5587575211d0463721e85b586691 (diff)
downloadvaadin-framework-8821d64a15c0200d920ac94da844568ed0034306.tar.gz
vaadin-framework-8821d64a15c0200d920ac94da844568ed0034306.zip
Fix RTA's CreateLink in Firefox & IE11 (#11979)
In Firefox and IE11, the 'Create Link' button of the RichTextArea (RTA) only works by turning some highlighted text into a link (by adding the inserted URI as the href property of the text). In that, the RTA in these two browsers behave similarly to the way it does in Chrome and Edge. However, in Firefox and IE11, clicking the 'Create Link' button has no effect if no text is pre-selected by the user. This is different from the button's behavior in Chrome and Edge where the user's provided URI is inserted, both, as the displayed text and its href property if no text is highlighted. This fix enables the RTA's 'Create Link' button to work consistently across the supported browsers. Specifically, (and in addition to enabling adding the href property of a highlighted text), this fix enables Firefox and IE11 to also insert a new Uri as a text and its href property if no text is already highlighted. fixes #11888
Diffstat (limited to 'uitest/src/test/java/com/vaadin/tests')
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/richtextarea/RichTextAreaCreateLinkTest.java77
1 files changed, 77 insertions, 0 deletions
diff --git a/uitest/src/test/java/com/vaadin/tests/components/richtextarea/RichTextAreaCreateLinkTest.java b/uitest/src/test/java/com/vaadin/tests/components/richtextarea/RichTextAreaCreateLinkTest.java
new file mode 100644
index 0000000000..c93079b83e
--- /dev/null
+++ b/uitest/src/test/java/com/vaadin/tests/components/richtextarea/RichTextAreaCreateLinkTest.java
@@ -0,0 +1,77 @@
+package com.vaadin.tests.components.richtextarea;
+
+import static org.junit.Assert.assertTrue;
+
+import java.time.Duration;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.openqa.selenium.Alert;
+import org.openqa.selenium.By;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.NoSuchElementException;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.FluentWait;
+import org.openqa.selenium.support.ui.Wait;
+
+import com.vaadin.testbench.elements.RichTextAreaElement;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class RichTextAreaCreateLinkTest extends MultiBrowserTest {
+
+ private static final Duration PROMPT_POLLING_INTERVAL = Duration
+ .ofSeconds(5);
+ private static final Duration PROMPT_TIMEOUT_INTERVAL = Duration
+ .ofSeconds(30);
+ private static final String TESTING_URI = "https://vaadin.com/";
+ private static final String TESTING_TEXT = "Vaadin company name";
+
+ RichTextAreaElement rta;
+
+ @Before
+ public void init() {
+ openTestURL();
+ rta = $(RichTextAreaElement.class).first();
+ }
+
+ @Test
+ public void createLinkButtonShouldInsertUriAsTextAndHrefIfNoTextIsHighlighted() {
+ createLinkViaButton(rta, TESTING_URI);
+ String expected = "<a href=\"" + TESTING_URI + "\">" + TESTING_URI
+ + "</a>";
+ assertTrue(String.format(
+ "RichTextArea's expected value is: %s. However, the following value was received: %s.",
+ expected, rta.getValue()), rta.getValue().equals(expected));
+ }
+
+ @Test
+ public void createLinkButtonShouldAddUriAsHrefIfTextIsHighlighted() {
+ rta.setValue(TESTING_TEXT);
+ WebElement textArea = rta.findElement(By.className("gwt-RichTextArea"));
+ textArea.sendKeys(Keys.CONTROL, "a");
+ createLinkViaButton(rta, TESTING_URI);
+ String expected = "<a href=\"" + TESTING_URI + "\">" + TESTING_TEXT
+ + "</a>";
+ assertTrue(String.format(
+ "RichTextArea's expected value is: %s. However, the following value was received: %s.",
+ expected, rta.getValue()), rta.getValue().equals(expected));
+ }
+
+ private void createLinkViaButton(RichTextAreaElement rta, String Uri) {
+ rta.findElement(By.cssSelector("div[title='Create Link']")).click();
+
+ Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
+ .withTimeout(PROMPT_TIMEOUT_INTERVAL)
+ .pollingEvery(PROMPT_POLLING_INTERVAL)
+ .ignoring(NoSuchElementException.class);
+
+ // Wait for the alert to be displayed and store it in a variable
+ Alert alert = wait.until(ExpectedConditions.alertIsPresent());
+ // Type the URI
+ alert.sendKeys(Uri);
+ // Press the OK button
+ alert.accept();
+ }
+}