You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GridScrollToTest.java 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package com.vaadin.tests.components.grid;
  2. import java.util.Optional;
  3. import org.junit.Assert;
  4. import org.junit.Test;
  5. import org.openqa.selenium.WebElement;
  6. import com.vaadin.testbench.By;
  7. import com.vaadin.testbench.elements.ButtonElement;
  8. import com.vaadin.testbench.elements.GridElement;
  9. import com.vaadin.testbench.elements.TextFieldElement;
  10. import com.vaadin.testbench.parallel.TestCategory;
  11. import com.vaadin.tests.tb3.SingleBrowserTest;
  12. import static org.junit.Assert.assertEquals;
  13. import static org.junit.Assert.assertFalse;
  14. import static org.junit.Assert.assertTrue;
  15. @TestCategory("grid")
  16. public class GridScrollToTest extends SingleBrowserTest {
  17. @Test
  18. public void testScrollToEnd() {
  19. openTestURL();
  20. String finalCellText = "199";
  21. assertEquals("Found final element even though should be at top of list",
  22. 0, cellsContaining(finalCellText));
  23. $(ButtonElement.class).id("end").click();
  24. assertEquals("Could not find final element", 1,
  25. cellsContaining(finalCellText));
  26. }
  27. @Test
  28. public void testScrollToRow() {
  29. openTestURL();
  30. String row = "50";
  31. assertEquals("Found row element even though should be at top of list",
  32. 0, cellsContaining(row));
  33. $(TextFieldElement.class).id("row-field").setValue(row);
  34. $(ButtonElement.class).id("row").click();
  35. assertEquals("Could not find row element", 1, cellsContaining(row));
  36. }
  37. @Test
  38. public void testScrollTop() {
  39. openTestURL();
  40. String row = "Name 0";
  41. assertEquals("Couldn't find first element", 1, cellsContaining(row));
  42. getGrid().getVerticalScroller().scroll(800);
  43. assertEquals(
  44. "Found first element even though we should have scrolled down",
  45. 0, cellsContaining(row));
  46. $(ButtonElement.class).id("top").click();
  47. assertEquals("Couldn't find first element", 1, cellsContaining(row));
  48. }
  49. @Test
  50. public void scrollToLastWithDetailsShowDetails() {
  51. openTestURL();
  52. // Scroll to end
  53. $(ButtonElement.class).id("end").click();
  54. // Open details
  55. clickCellContaining("199");
  56. waitForElementPresent(By.className("v-grid-spacer"));
  57. waitForElementPresent(By.className("v-label"));
  58. assertTrue("Details not visible", getGrid().findElements(By.className("v-label")).stream()
  59. .filter(element -> element.getText().contains("Name 199 details")).findFirst().get().isDisplayed());
  60. // scroll away
  61. $(ButtonElement.class).id("top").click();
  62. assertEquals("Found final element even though should be at top of list",
  63. 0, cellsContaining("199"));
  64. assertFalse("Found final element details even though should be at top of list", getGrid().findElements(By.className("v-label")).stream()
  65. .filter(element -> element.getText().contains("Name 199 details")).findFirst().isPresent());
  66. // Scroll to end
  67. $(ButtonElement.class).id("end").click();
  68. assertTrue("Details not visible", getGrid().findElements(By.className("v-label")).stream()
  69. .filter(element -> element.getText().contains("Name 199 details")).findFirst().get().isDisplayed());
  70. }
  71. @Test
  72. public void scrollToRowShowsDetails() {
  73. openTestURL();
  74. // Scroll to 50
  75. $(TextFieldElement.class).id("row-field").setValue("50");
  76. $(ButtonElement.class).id("row").click();
  77. clickCellContaining("50");
  78. waitForElementPresent(By.className("v-grid-spacer"));
  79. waitForElementPresent(By.className("v-label"));
  80. assertTrue("Details not visible", getGrid().findElements(By.className("v-label")).stream()
  81. .filter(element -> element.getText().contains("Name 50 details")).findFirst().get().isDisplayed());
  82. // scroll away
  83. $(ButtonElement.class).id("top").click();
  84. assertEquals("Found final element even though should be at top of list",
  85. 0, cellsContaining("50"));
  86. assertFalse("Found final element details even though should be at top of list", getGrid().findElements(By.className("v-label")).stream()
  87. .filter(element -> element.getText().contains("Name 50 details")).findFirst().isPresent());
  88. // Scroll to end
  89. $(ButtonElement.class).id("row").click();
  90. assertTrue("Details not visible", getGrid().findElements(By.className("v-label")).stream()
  91. .filter(element -> element.getText().contains("Name 50 details")).findFirst().get().isDisplayed());
  92. }
  93. private GridElement getGrid() {
  94. return $(GridElement.class).first();
  95. }
  96. private long cellsContaining(String text) {
  97. return getGrid().findElements(By.className("v-grid-cell")).stream()
  98. .filter(element -> element.getText().contains(text)).count();
  99. }
  100. private void clickCellContaining(String text) {
  101. Optional<WebElement> first = getGrid()
  102. .findElements(By.className("v-grid-cell")).stream()
  103. .filter(element -> element.getText().contains(text))
  104. .findFirst();
  105. if (first.isPresent())
  106. first.get().click();
  107. else
  108. Assert.fail("Cell not present");
  109. }
  110. }