123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package com.vaadin.tests.components.datefield;
-
- import java.time.LocalDate;
-
- import com.vaadin.testbench.elements.DateFieldElement;
- import com.vaadin.tests.tb3.MultiBrowserTest;
- import org.junit.Test;
- import org.openqa.selenium.By;
- import org.openqa.selenium.Keys;
- import org.openqa.selenium.WebElement;
- import org.openqa.selenium.support.ui.ExpectedConditions;
-
- public class DateFieldValidationErrorTest extends MultiBrowserTest {
-
- @Test
- public void testComponentErrorShouldBeShownWhenEnteringInvalidDate()
- throws InterruptedException {
- openTestURL();
- DateFieldElement dateField = $(DateFieldElement.class).first();
- dateField.getInputElement().click();
- dateField.getInputElement().sendKeys("01/01/01", Keys.TAB);
-
- assertHasErrorMessage(dateField);
- }
-
- @Test
- public void testComponentErrorShouldBeShownWhenSelectingInvalidDate()
- throws InterruptedException {
- openTestURL();
- DateFieldElement dateField = $(DateFieldElement.class).first();
- dateField.setDate(LocalDate.now());
- dateField.openPopup();
- waitUntil(ExpectedConditions
- .visibilityOfElementLocated(By.className("v-datefield-popup")));
-
- WebElement popup = findElement(
- com.vaadin.testbench.By.className("v-datefield-popup"));
- // select day before today
- WebElement popupBody = popup
- .findElement(By.className("v-datefield-calendarpanel"));
- popupBody.sendKeys(Keys.ARROW_LEFT, Keys.ENTER);
-
- // move focus away otherwise tooltip is not shown
- WebElement inputElement = dateField.getInputElement();
- inputElement.click();
- inputElement.sendKeys(Keys.TAB);
-
- assertHasErrorMessage(dateField);
- }
-
- private void assertHasErrorMessage(DateFieldElement dateField) {
- waitForElementPresent(By.className("v-errorindicator"));
- dateField.showTooltip();
- waitUntil(driver -> "Invalid date"
- .equals(getTooltipErrorElement().getText()));
- }
-
- @Override
- protected boolean requireWindowFocusForIE() {
- return true;
- }
-
- }
|