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.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. package com.vaadin.tests.components.grid;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertFalse;
  4. import static org.junit.Assert.assertTrue;
  5. import static org.junit.Assert.fail;
  6. import java.util.Optional;
  7. import org.junit.Test;
  8. import org.openqa.selenium.WebElement;
  9. import com.vaadin.testbench.By;
  10. import com.vaadin.testbench.elements.ButtonElement;
  11. import com.vaadin.testbench.elements.GridElement;
  12. import com.vaadin.testbench.elements.TextFieldElement;
  13. import com.vaadin.testbench.parallel.TestCategory;
  14. import com.vaadin.tests.tb3.SingleBrowserTest;
  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",
  59. getGrid().findElements(By.className("v-label")).stream()
  60. .filter(element -> element.getText()
  61. .contains("Name 199 details"))
  62. .findFirst().get().isDisplayed());
  63. // scroll away
  64. $(ButtonElement.class).id("top").click();
  65. assertEquals("Found final element even though should be at top of list",
  66. 0, cellsContaining("199"));
  67. assertFalse(
  68. "Found final element details even though should be at top of list",
  69. getGrid().findElements(By.className("v-label")).stream()
  70. .filter(element -> element.getText()
  71. .contains("Name 199 details"))
  72. .findFirst().isPresent());
  73. // Scroll to end
  74. $(ButtonElement.class).id("end").click();
  75. assertTrue("Details not visible",
  76. getGrid().findElements(By.className("v-label")).stream()
  77. .filter(element -> element.getText()
  78. .contains("Name 199 details"))
  79. .findFirst().get().isDisplayed());
  80. }
  81. @Test
  82. public void scrollToRowShowsDetails() {
  83. openTestURL();
  84. // Scroll to 50
  85. $(TextFieldElement.class).id("row-field").setValue("50");
  86. $(ButtonElement.class).id("row").click();
  87. clickCellContaining("50");
  88. waitForElementPresent(By.className("v-grid-spacer"));
  89. waitForElementPresent(By.className("v-label"));
  90. assertTrue("Details not visible",
  91. getGrid().findElements(By.className("v-label")).stream()
  92. .filter(element -> element.getText()
  93. .contains("Name 50 details"))
  94. .findFirst().get().isDisplayed());
  95. // scroll away
  96. $(ButtonElement.class).id("top").click();
  97. assertEquals("Found final element even though should be at top of list",
  98. 0, cellsContaining("50"));
  99. assertFalse(
  100. "Found final element details even though should be at top of list",
  101. getGrid().findElements(By.className("v-label")).stream()
  102. .filter(element -> element.getText()
  103. .contains("Name 50 details"))
  104. .findFirst().isPresent());
  105. // Scroll to end
  106. $(ButtonElement.class).id("row").click();
  107. assertTrue("Details not visible",
  108. getGrid().findElements(By.className("v-label")).stream()
  109. .filter(element -> element.getText()
  110. .contains("Name 50 details"))
  111. .findFirst().get().isDisplayed());
  112. }
  113. private GridElement getGrid() {
  114. return $(GridElement.class).first();
  115. }
  116. private long cellsContaining(String text) {
  117. return getGrid().findElements(By.className("v-grid-cell")).stream()
  118. .filter(element -> element.getText().contains(text)).count();
  119. }
  120. private void clickCellContaining(String text) {
  121. Optional<WebElement> first = getGrid()
  122. .findElements(By.className("v-grid-cell")).stream()
  123. .filter(element -> element.getText().contains(text))
  124. .findFirst();
  125. if (first.isPresent())
  126. first.get().click();
  127. else
  128. fail("Cell not present");
  129. }
  130. }