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 = "" + TESTING_URI
+ "";
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 = "" + TESTING_TEXT
+ "";
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 wait = new FluentWait(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();
}
}