package com.vaadin.tests.components.grid; import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.WebElement; import com.vaadin.testbench.By; import com.vaadin.testbench.elements.ButtonElement; import com.vaadin.testbench.elements.GridElement; import com.vaadin.testbench.elements.GridElement.GridRowElement; import com.vaadin.testbench.elements.NotificationElement; import com.vaadin.tests.tb3.MultiBrowserTest; public class GridComponentsTest extends MultiBrowserTest { @Test public void testReuseTextFieldOnScroll() { openTestURL(); GridElement grid = $(GridElement.class).first(); editTextFieldInCell(grid, 0, 1); // Scroll out of view port grid.getRow(900); // Scroll back grid.getRow(0); WebElement textField = grid.getCell(0, 1) .findElement(By.tagName("input")); Assert.assertEquals("TextField value was reset", "Foo", textField.getAttribute("value")); Assert.assertTrue("No mention in the log", logContainsText("1. Reusing old text field for: Row 0")); } @Test public void testReuseTextFieldOnSelect() { openTestURL(); GridElement grid = $(GridElement.class).first(); editTextFieldInCell(grid, 1, 1); // Select row grid.getCell(1, 1).click(1, 1); WebElement textField = grid.getCell(1, 1) .findElement(By.tagName("input")); Assert.assertEquals("TextField value was reset", "Foo", textField.getAttribute("value")); Assert.assertTrue("No mention in the log", logContainsText("1. Reusing old text field for: Row 1")); } @Test public void testReplaceData() { openTestURL(); assertRowExists(5, "Row 5"); $(ButtonElement.class).caption("Reset data").first().click(); assertRowExists(5, "Row 1005"); } private void editTextFieldInCell(GridElement grid, int row, int col) { WebElement textField = grid.getCell(row, col) .findElement(By.tagName("input")); textField.clear(); textField.sendKeys("Foo"); } @Test public void testRow5() { openTestURL(); assertRowExists(5, "Row 5"); } @Test public void testRow0() { openTestURL(); assertRowExists(0, "Row 0"); Assert.assertEquals("Grid row height is not what it should be", 40, $(GridElement.class).first().getRow(0).getSize().getHeight()); } @Test public void testRow999() { openTestURL(); assertRowExists(999, "Row 999"); } private void assertRowExists(int i, String string) { GridRowElement row = $(GridElement.class).first().getRow(i); Assert.assertEquals("Label text did not match", string, row.getCell(0).getText()); row.findElement(By.id(string.replace(' ', '_').toLowerCase())).click(); // IE 11 is slow, need to wait for the notification. waitUntil(driver -> isElementPresent(NotificationElement.class), 10); Assert.assertTrue("Notification should contain given text", $(NotificationElement.class).first().getText() .contains(string)); } }