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.

GridEditorFrozenColumnsUITest.java 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package com.vaadin.tests.components.grid;
  2. import java.io.IOException;
  3. import org.junit.Test;
  4. import org.openqa.selenium.By;
  5. import org.openqa.selenium.JavascriptExecutor;
  6. import org.openqa.selenium.WebDriver;
  7. import org.openqa.selenium.WebElement;
  8. import org.openqa.selenium.interactions.Actions;
  9. import com.vaadin.testbench.elements.GridElement;
  10. import com.vaadin.testbench.elements.GridElement.GridCellElement;
  11. import com.vaadin.testbench.parallel.TestCategory;
  12. import com.vaadin.tests.tb3.MultiBrowserTest;
  13. @TestCategory("grid")
  14. public class GridEditorFrozenColumnsUITest extends MultiBrowserTest {
  15. @Test
  16. public void testEditorWithFrozenColumns() throws IOException {
  17. openTestURL();
  18. openEditor(10);
  19. waitUntilLoadingIndicatorNotVisible();
  20. waitForElementPresent(By.className("v-grid-editor"));
  21. compareScreen("noscroll");
  22. scrollGridHorizontallyTo(100);
  23. waitUntilLoadingIndicatorNotVisible();
  24. compareScreen("scrolled");
  25. }
  26. private void openEditor(int rowIndex) {
  27. GridElement grid = $(GridElement.class).first();
  28. GridCellElement cell = grid.getCell(rowIndex, 1);
  29. new Actions(driver).moveToElement(cell).doubleClick().build().perform();
  30. }
  31. private void scrollGridHorizontallyTo(double px) {
  32. executeScript("arguments[0].scrollLeft = " + px,
  33. getGridHorizontalScrollbar());
  34. }
  35. private Object executeScript(String script, WebElement element) {
  36. final WebDriver driver = getDriver();
  37. if (driver instanceof JavascriptExecutor) {
  38. final JavascriptExecutor je = (JavascriptExecutor) driver;
  39. return je.executeScript(script, element);
  40. } else {
  41. throw new IllegalStateException("current driver "
  42. + getDriver().getClass().getName() + " is not a "
  43. + JavascriptExecutor.class.getSimpleName());
  44. }
  45. }
  46. private WebElement getGridHorizontalScrollbar() {
  47. return getDriver().findElement(By.xpath(
  48. "//div[contains(@class, \"v-grid-scroller-horizontal\")]"));
  49. }
  50. }