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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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. waitForElementPresent(By.className("v-grid-editor"));
  20. compareScreen("noscroll");
  21. scrollGridHorizontallyTo(100);
  22. sleep(500);
  23. compareScreen("scrolled");
  24. }
  25. private void openEditor(int rowIndex) {
  26. GridElement grid = $(GridElement.class).first();
  27. GridCellElement cell = grid.getCell(rowIndex, 1);
  28. new Actions(driver).moveToElement(cell).doubleClick().build().perform();
  29. }
  30. private void scrollGridHorizontallyTo(double px) {
  31. executeScript("arguments[0].scrollLeft = " + px,
  32. getGridHorizontalScrollbar());
  33. }
  34. private Object executeScript(String script, WebElement element) {
  35. final WebDriver driver = getDriver();
  36. if (driver instanceof JavascriptExecutor) {
  37. final JavascriptExecutor je = (JavascriptExecutor) driver;
  38. return je.executeScript(script, element);
  39. } else {
  40. throw new IllegalStateException("current driver "
  41. + getDriver().getClass().getName() + " is not a "
  42. + JavascriptExecutor.class.getSimpleName());
  43. }
  44. }
  45. private WebElement getGridHorizontalScrollbar() {
  46. return getDriver().findElement(By.xpath(
  47. "//div[contains(@class, \"v-grid-scroller-horizontal\")]"));
  48. }
  49. }