123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- package com.vaadin.tests.components.grid.basics;
-
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertTrue;
-
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Locale;
- import java.util.stream.Stream;
-
- import org.junit.Before;
- import org.openqa.selenium.By;
- import org.openqa.selenium.WebElement;
- import org.openqa.selenium.interactions.Actions;
- import org.openqa.selenium.remote.DesiredCapabilities;
-
- import com.vaadin.testbench.TestBenchElement;
- import com.vaadin.testbench.elements.GridElement;
- import com.vaadin.testbench.elements.GridElement.GridCellElement;
- import com.vaadin.testbench.elements.GridElement.GridEditorElement;
- import com.vaadin.testbench.parallel.Browser;
- import com.vaadin.tests.tb3.MultiBrowserTest;
- import com.vaadin.v7.tests.components.grid.basicfeatures.GridBasicFeaturesTest.CellSide;
-
- /**
- * Base class for all {@link GridBasics} UI tests
- */
- public abstract class GridBasicsTest extends MultiBrowserTest {
-
- public static final int ROWS = 1000;
-
- /* Identical List of test data */
- private List<DataObject> testData;
-
- @Override
- public List<DesiredCapabilities> getBrowsersToTest() {
- // Most tests are run with only one browser.
- return getBrowserCapabilities(Browser.CHROME);
- }
-
- @Override
- protected Class<?> getUIClass() {
- return GridBasics.class;
- }
-
- @Before
- public void setUp() {
- openTestURL();
- testData = DataObject.generateObjects();
- }
-
- protected GridElement getGridElement() {
- return $(GridElement.class).first();
- }
-
- protected List<TestBenchElement> getGridHeaderRowCells() {
- List<TestBenchElement> headerCells = new ArrayList<>();
- for (int i = 0; i < getGridElement().getHeaderCount(); ++i) {
- headerCells.addAll(getGridElement().getHeaderCells(i));
- }
- return headerCells;
- }
-
- protected Stream<DataObject> getTestData() {
- return testData.stream();
- }
-
- protected void scrollGridVerticallyTo(double px) {
- executeScript("arguments[0].scrollTop = " + px,
- getGridVerticalScrollbar());
- }
-
- protected void scrollGridHorizontallyTo(double px) {
- executeScript("arguments[0].scrollLeft = " + px,
- getGridHorizontalScrollbar());
- }
-
- protected WebElement getGridVerticalScrollbar() {
- return getDriver().findElement(By.xpath(
- "//div[contains(@class, \"v-grid-scroller-vertical\")]"));
- }
-
- protected WebElement getGridHorizontalScrollbar() {
- return getDriver().findElement(By.xpath(
- "//div[contains(@class, \"v-grid-scroller-horizontal\")]"));
- }
-
- protected GridCellElement getDefaultColumnHeader(int index) {
- List<GridCellElement> headerRowCells = getGridElement()
- .getHeaderCells(0);
- return headerRowCells.get(index);
- }
-
- protected void dragAndDropDefaultColumnHeader(int draggedColumnHeaderIndex,
- int onTopOfColumnHeaderIndex, CellSide cellSide) {
- GridCellElement columnHeader = getDefaultColumnHeader(
- onTopOfColumnHeaderIndex);
- new Actions(getDriver())
- .clickAndHold(getDefaultColumnHeader(draggedColumnHeaderIndex))
- .moveToElement(columnHeader, getHorizontalOffsetForDragAndDrop(
- columnHeader, cellSide), 0)
- .release().perform();
- }
-
- protected void dragAndDropColumnHeader(int headerRow,
- int draggedColumnHeaderIndex, int onTopOfColumnHeaderIndex,
- CellSide cellSide) {
- GridCellElement headerCell = getGridElement().getHeaderCell(headerRow,
- onTopOfColumnHeaderIndex);
- new Actions(getDriver())
- .clickAndHold(getGridElement().getHeaderCell(headerRow,
- draggedColumnHeaderIndex))
- .moveToElement(headerCell,
- getHorizontalOffsetForDragAndDrop(headerCell, cellSide),
- 0)
- .release().perform();
- }
-
- protected void dragAndDropColumnHeader(int headerRow,
- int draggedColumnHeaderIndex, int onTopOfColumnHeaderIndex,
- int horizontalOffset) {
- GridCellElement headerCell = getGridElement().getHeaderCell(headerRow,
- onTopOfColumnHeaderIndex);
- new Actions(getDriver())
- .clickAndHold(getGridElement().getHeaderCell(headerRow,
- draggedColumnHeaderIndex))
- .moveToElement(headerCell, horizontalOffset, 0).release()
- .perform();
- }
-
- private int getHorizontalOffsetForDragAndDrop(GridCellElement columnHeader,
- CellSide cellSide) {
- if (cellSide == CellSide.LEFT) {
- return -5;
- } else {
- int half = columnHeader.getSize().getWidth() / 2;
- return half + half / 2;
- }
- }
-
- protected void toggleColumnReorder() {
- selectMenuPath("Component", "State", "Column Reordering");
- }
-
- protected void assertColumnHeaderOrder(int... indices) {
- List<TestBenchElement> headers = getGridHeaderRowCells();
- for (int i = 0; i < indices.length; i++) {
- assertColumnHeader("HEADER CELL " + indices[i], headers.get(i));
- }
- }
-
- protected void assertColumnHeader(String expectedHeaderCaption,
- TestBenchElement testBenchElement) {
- assertEquals(expectedHeaderCaption.toLowerCase(Locale.ROOT),
- testBenchElement.getText().toLowerCase(Locale.ROOT));
- }
-
- protected void assertColumnIsSorted(int index) {
- WebElement columnHeader = getDefaultColumnHeader(index);
- assertTrue(columnHeader.getAttribute("class").contains("sort"));
- }
-
- protected void assertFocusedCell(int row, int column) {
- assertTrue(getGridElement().getCell(row, column).getAttribute("class")
- .contains("focused"));
- }
-
- protected void focusCell(int row, int column) {
- getGridElement().getCell(row, column).click();
- }
-
- protected WebElement getSidebarPopup() {
- List<WebElement> elements = findElements(
- By.className("v-grid-sidebar-popup"));
- if (elements.isEmpty()) {
- getSidebarOpenButton().click();
- elements = findElements(By.className("v-grid-sidebar-popup"));
- }
- return elements.isEmpty() ? null : elements.get(0);
- }
-
- protected WebElement getSidebarPopupIfPresent() {
- List<WebElement> elements = findElements(
- By.className("v-grid-sidebar-popup"));
- return elements.isEmpty() ? null : elements.get(0);
- }
-
- protected WebElement getSidebarOpenButton() {
- List<WebElement> elements = findElements(
- By.className("v-grid-sidebar-button"));
- return elements.isEmpty() ? null : elements.get(0);
- }
-
- /**
- * Returns the toggle inside the sidebar for hiding the column at the given
- * index, or null if not found.
- */
- protected WebElement getColumnHidingToggle(int columnIndex) {
- WebElement sidebar = getSidebarPopup();
- List<WebElement> elements = sidebar
- .findElements(By.className("column-hiding-toggle"));
- for (WebElement e : elements) {
- if (e.getText().toLowerCase(Locale.ROOT)
- .startsWith("column " + columnIndex)) {
- return e;
- }
- }
- return null;
- }
-
- protected GridEditorElement getEditor() {
- return getGridElement().getEditor();
- }
-
- protected int getGridVerticalScrollPos() {
- return ((Number) executeScript("return arguments[0].scrollTop",
- getGridVerticalScrollbar())).intValue();
- }
-
- protected void toggleFirstRowSelection() {
- selectMenuPath("Component", "Body rows", "Toggle first row selection");
- }
-
- protected void selectAll() {
- selectMenuPath("Component", "State", "Selection model", "Select All");
- }
-
- protected void deselectAll() {
- selectMenuPath("Component", "State", "Selection model", "Deselect All");
- }
-
- protected void setSelectionModelMulti() {
- selectMenuPath("Component", "State", "Selection model", "multi");
- }
-
- protected void setSelectionModelSingle() {
- selectMenuPath("Component", "State", "Selection model", "single");
- }
-
- protected void setSelectionModelNone() {
- selectMenuPath("Component", "State", "Selection model", "none");
- }
-
- protected void setSelectAllCheckBoxVisible() {
- selectMenuPath("Component", "State", "Selection model",
- "SelectAllCheckbox: Visible");
- }
-
- protected void setSelectAllCheckBoxHidden() {
- selectMenuPath("Component", "State", "Selection model",
- "SelectAllCheckbox: Hidden");
- }
-
- protected void setSelectAllCheckBoxDefault() {
- selectMenuPath("Component", "State", "Selection model",
- "SelectAllCheckbox: Default");
- }
-
- protected WebElement getSelectAllCheckbox() {
- GridCellElement header = getGridElement().getHeaderCell(0, 0);
-
- return header.findElement(By.tagName("input"));
- }
- }
|