Class GridLocator<Y>

java.lang.Object
com.vaadin.browserless.locator.Locator<Grid<Y>,GridLocator<Y>>
com.vaadin.flow.component.grid.GridLocator<Y>
All Implemented Interfaces:
Clickable<Grid<Y>>, HasThemeFilter<Grid<Y>,GridLocator<Y>>

@Generated("com.vaadin.browserless.locator.processor.LocatorProcessor") public class GridLocator<Y> extends Locator<Grid<Y>,GridLocator<Y>> implements Clickable<Grid<Y>>, HasThemeFilter<Grid<Y>,GridLocator<Y>>
Generated locator for Grid, derived from GridTester. Filter steps are inherited from Locator; action methods delegate to a fresh tester around the resolved component, so behavioral changes belong on the tester, not here.
  • Constructor Details

    • GridLocator

      public GridLocator(Class<Y> yType)
    • GridLocator

      public GridLocator(Grid<Y> component)
  • Method Details

    • getComponent

      public Grid<Y> getComponent()
      Description copied from interface: Clickable
      Gets the component being tested.
      Specified by:
      getComponent in interface Clickable<Y>
      Returns:
      the component under test
    • ensureComponentIsUsable

      public void ensureComponentIsUsable()
      Description copied from interface: Clickable
      Ensures the component is in a usable state before interaction.
      Specified by:
      ensureComponentIsUsable in interface Clickable<Y>
    • size

      public int size()
      Get the amount of items in the grid. Javadoc copied from GridTester.size().
      Returns:
      items in grid
    • getRow

      public Y getRow(int row)
      Get the item at the given row index.

      The index is 0 based. Javadoc copied from GridTester.getRow(int).

      Parameters:
      row - row index of to get
      Returns:
      grid item on row
    • clickRow

      public void clickRow(int row)
      Click on grid row.

      The index is 0 based. Javadoc copied from GridTester.clickRow(int).

      Parameters:
      row - row to click
    • clickRow

      public void clickRow(int row, MouseButton button)
      Click on grid row with given button.

      The index is 0 based. Javadoc copied from GridTester.clickRow(int,com.vaadin.browserless.MouseButton).

      Parameters:
      row - row to click
      button - MouseButton that was clicked
      See Also:
    • clickRow

      public void clickRow(int row, MetaKeys metaKeys)
      Click on grid row with given meta keys pressed.

      The index is 0 based. Javadoc copied from GridTester.clickRow(int,com.vaadin.browserless.MetaKeys).

      Parameters:
      row - row to click
      metaKeys - meta key statuses for click
    • clickRow

      public void clickRow(int row, MouseButton button, MetaKeys metaKeys)
      Click on grid row with given button and meta keys pressed.

      The index is 0 based. Javadoc copied from GridTester.clickRow(int,com.vaadin.browserless.MouseButton,com.vaadin.browserless.MetaKeys).

      Parameters:
      row - row to click
      button - MouseButton that was clicked
      metaKeys - meta key statuses for click
      See Also:
    • doubleClickRow

      public void doubleClickRow(int row)
      Double-click on grid row.

      The index is 0 based. Javadoc copied from GridTester.doubleClickRow(int).

      Parameters:
      row - row to click
    • doubleClickRow

      public void doubleClickRow(int row, MouseButton button)
      Double-click on grid row with given button.

      The index is 0 based. Javadoc copied from GridTester.doubleClickRow(int,com.vaadin.browserless.MouseButton).

      Parameters:
      row - row to click
      button - MouseButton that was clicked
      See Also:
    • doubleClickRow

      public void doubleClickRow(int row, MetaKeys metaKeys)
      Double-click on grid row with given meta keys pressed.

      The index is 0 based. Javadoc copied from GridTester.doubleClickRow(int,com.vaadin.browserless.MetaKeys).

      Parameters:
      row - row to click
      metaKeys - meta key statuses for click
    • doubleClickRow

      public void doubleClickRow(int row, MouseButton button, MetaKeys metaKeys)
      Double-click on grid row with given button and meta keys pressed.

      The index is 0 based. Javadoc copied from GridTester.doubleClickRow(int,com.vaadin.browserless.MouseButton,com.vaadin.browserless.MetaKeys).

      Parameters:
      row - row to click
      button - MouseButton that was clicked
      metaKeys - meta key statuses for click
      See Also:
    • select

      public void select(int row)
      Select the item on given row.

      The index is 0 based.

      Single select will clear any old selections. Multi select will add to selection. Javadoc copied from GridTester.select(int).

      Parameters:
      row - row to select
      Throws:
      IllegalStateException - if not usable
    • selectAll

      public void selectAll()
      Select all items in grid, running the same code as when the select all checkbox is checked.

      Only works for multi select, and only when the select all checkbox is actually shown - if it isn't, the user has no way to trigger this. Javadoc copied from GridTester.selectAll().

      Throws:
      IllegalStateException - if not usable, not multi select or the select all checkbox is hidden
    • deselect

      public void deselect(int row)
      Deselect the item on given row.

      The index is 0 based.

      Simulates the user deselecting a row: ctrl-clicking a selected row or unchecking the row's selection checkbox in multi select, clicking the selected row in single select.

      The row has to be selected. Deselecting a row that isn't selected is not a gesture the user has, so it fails instead of doing nothing.

      The call is ignored, exactly as the user's click would be, when the item is not selectable or when the grid is single select and deselecting is not allowed. Javadoc copied from GridTester.deselect(int).

      Parameters:
      row - row to deselect
      Throws:
      IllegalStateException - if not usable, if the row is not selected or if the grid doesn't support selection
    • deselectAll

      public void deselectAll()
      Deselect all items in grid, running the same code as when the select all checkbox is unchecked.

      Only works for multi select, and only when the select all checkbox is actually shown - if it isn't, the user has no way to trigger this.

      This is the counterpart of selectAll() and behaves like the checkbox does: the selection is dropped in one selection event, without the per row toggle events the user would cause by unchecking rows one by one. Call deselect(int) per row to model that instead. Javadoc copied from GridTester.deselectAll().

      Throws:
      IllegalStateException - if not usable, not multi select or the select all checkbox is hidden
    • getCellText

      public String getCellText(int row, int column)
      Get the text that is shown on the client for the cell in the given position.

      The indexes for row and column are 0 based.

      For the default renderer ColumnPathRenderer the result is the sent text for defined object path.

      For a ComponentRenderer the result is the text of the component the grid rendered for the cell, read through getCellComponent(int, int): a row the client has not asked for yet is scrolled into view first, and a cell the grid renders no component for fails the same way. A renderer that returns no component renders an empty cell, so the text is empty rather than null.

      More to be added as we find other renderers that need handling. Javadoc copied from GridTester.getCellText(int,int).

      Parameters:
      row - row of cell
      column - column of cell
      Returns:
      cell content that is sent to the client
      Throws:
      IllegalStateException - if component is not visible, or if the grid renders no component for a ComponentRenderer cell
    • getCellComponent

      public Component getCellComponent(int row, int column)
      Get the component the grid renders for the cell in the given position.

      A component renderer only produces a component when the grid renders a row for the client, so a renderer component is never part of the component tree that find(...) walks, and this method is the way to reach it. What comes back is the very component the browser shows: asking for the same cell twice returns the same instance, and the instance is replaced when the grid re-renders the row, for example after refreshItem(...). A row the client has not asked for yet is scrolled into view first, the way a user reaches it.

      Use renderCellComponent(int, int) to render a cell on its own, without the grid. Javadoc copied from GridTester.getCellComponent(int,int).

      Parameters:
      row - item row
      column - column to get
      Returns:
      the component the grid rendered for the targeted cell
      Throws:
      IllegalArgumentException - when the target column of the cell is not a component renderer
      IllegalStateException - when the grid renders no component for the cell
    • getCellComponent

      public Component getCellComponent(int row, String columnName)
      Get the component the grid renders for the cell in the given row of the column with the given key.

      A component renderer only produces a component when the grid renders a row for the client, so a renderer component is never part of the component tree that find(...) walks, and this method is the way to reach it. What comes back is the very component the browser shows: asking for the same cell twice returns the same instance, and the instance is replaced when the grid re-renders the row, for example after refreshItem(...). A row the client has not asked for yet is scrolled into view first, the way a user reaches it.

      Use renderCellComponent(int, String) to render a cell on its own, without the grid. Javadoc copied from GridTester.getCellComponent(int,java.lang.String).

      Parameters:
      row - item row
      columnName - key/property of column
      Returns:
      the component the grid rendered for the target cell
      Throws:
      IllegalArgumentException - when column for property doesn't exist or the target column of the cell is not a component renderer
      IllegalStateException - when the grid renders no component for the cell, which is the case for a hidden column
    • renderCellComponent

      public Component renderCellComponent(int row, int column)
      Render the component for the cell in the given position on its own, without the grid, and attach it to the grid so that it can be used.

      This asks the column's component renderer for a component for the item on the row, which is not the instance the grid renders for the client: every call renders the cell again and attaches the new instance to the grid, so asking twice for the same cell leaves two instances behind and a later find(...) reports both.

      Prefer getCellComponent(int, int), which returns the component the browser shows. This method is for tests written against the older behaviour of that method. A column index addresses the visible columns, so the cells the grid renders nothing for, those of a hidden column, are only reachable through renderCellComponent(int, String). Javadoc copied from GridTester.renderCellComponent(int,int).

      Parameters:
      row - item row
      column - column to render
      Returns:
      a freshly rendered component for the targeted cell
      Throws:
      IllegalArgumentException - when the target column of the cell is not a component renderer
    • renderCellComponent

      public Component renderCellComponent(int row, String columnName)
      Render the component for the cell in the given row of the column with the given key on its own, without the grid, and attach it to the grid so that it can be used.

      This asks the column's component renderer for a component for the item on the row, which is not the instance the grid renders for the client: every call renders the cell again and attaches the new instance to the grid, so asking twice for the same cell leaves two instances behind and a later find(...) reports both.

      Prefer getCellComponent(int, String), which returns the component the browser shows. This method is for the cases the grid does not render itself, such as a hidden column. Javadoc copied from GridTester.renderCellComponent(int,java.lang.String).

      Parameters:
      row - item row
      columnName - key/property of column
      Returns:
      a freshly rendered component for the target cell
      Throws:
      IllegalArgumentException - when column for property doesn't exist or the target column of the cell is not a component renderer
    • getLitRendererPropertyValue

      public <V> V getLitRendererPropertyValue(int row, String columnName, String propertyName, Class<V> propertyClass)
      Get property value for item's LitRenderer in column. Javadoc copied from GridTester.getLitRendererPropertyValue(int,java.lang.String,java.lang.String,java.lang.Class).
      Type Parameters:
      V - the type of the LitRenderer property
      Parameters:
      row - item row
      columnName - key/property of column
      propertyName - the name of the LitRenderer property
      propertyClass - the class of the value of the LitRenderer property
      Returns:
      value of renderer's property for the target cell
      Throws:
      IllegalArgumentException - when column for property doesn't exist or the target column of the cell is not a LitRenderer or when the given type of the property does not match the actual property type
    • getLitRendererPropertyValue

      public <V> V getLitRendererPropertyValue(int row, int column, String propertyName, Class<V> propertyClass)
      Get property value for item's LitRenderer in column. Javadoc copied from GridTester.getLitRendererPropertyValue(int,int,java.lang.String,java.lang.Class).
      Type Parameters:
      V - the type of the LitRenderer property
      Parameters:
      row - item row
      column - column to get
      propertyName - the name of the LitRenderer property
      propertyClass - the class of the value of the LitRenderer property
      Returns:
      value of renderer's property for the target cell
      Throws:
      IllegalArgumentException - when column for property doesn't exist or the target column of the cell is not a LitRenderer or when the given type of the property does not match the actual property type
    • invokeLitRendererFunction

      public void invokeLitRendererFunction(int row, String columnName, String functionName, tools.jackson.databind.node.ArrayNode jsonArray)
      Invoke named function for item's LitRenderer in column using the supplied JSON arguments. Javadoc copied from GridTester.invokeLitRendererFunction(int,java.lang.String,java.lang.String,tools.jackson.databind.node.ArrayNode).
      Parameters:
      row - item row
      columnName - key/property of column
      functionName - the name of the LitRenderer function to invoke
      jsonArray - the arguments to pass to the function
    • invokeLitRendererFunction

      public void invokeLitRendererFunction(int row, String columnName, String functionName)
      Invoke named function for item's LitRenderer in column. Javadoc copied from GridTester.invokeLitRendererFunction(int,java.lang.String,java.lang.String).
      Parameters:
      row - item row
      columnName - key/property of column
      functionName - the name of the LitRenderer function to invoke
    • invokeLitRendererFunction

      public void invokeLitRendererFunction(int row, int column, String functionName, tools.jackson.databind.node.ArrayNode jsonArray)
      Invoke named function for item's LitRenderer in column using the supplied JSON arguments. Javadoc copied from GridTester.invokeLitRendererFunction(int,int,java.lang.String,tools.jackson.databind.node.ArrayNode).
      Parameters:
      row - item row
      column - column to get
      functionName - the name of the LitRenderer function to invoke
      jsonArray - the arguments to pass to the function
    • invokeLitRendererFunction

      public void invokeLitRendererFunction(int row, int column, String functionName)
      Invoke named function for item's LitRenderer in column. Javadoc copied from GridTester.invokeLitRendererFunction(int,int,java.lang.String).
      Parameters:
      row - item row
      column - column to get
      functionName - the name of the LitRenderer function to invoke
    • getHeaderCell

      public String getHeaderCell(int column)
      Deprecated.
      Use AbstractColumn.getHeaderText() or AbstractColumn.getHeaderComponent()
      Get content in header for given column. Javadoc copied from GridTester.getHeaderCell(int).
      Parameters:
      column - column to get header for
      Returns:
      header contents
      Throws:
      IllegalStateException - if component is not visible
    • getColumnPosition

      public int getColumnPosition(String property)
      Get the column position by column property. Javadoc copied from GridTester.getColumnPosition(java.lang.String).
      Parameters:
      property - the property name of the column, not null
      Returns:
      int position of column
    • getColumn

      public Grid.Column<Y> getColumn(String property)
      Gets the grid column by column property. Javadoc copied from GridTester.getColumn(java.lang.String).
      Parameters:
      property - the property name of the column, not null
      Returns:
      Grid.Column for property
    • getFooterCell

      public String getFooterCell(int column)
      Deprecated.
      Use AbstractColumn.getFooterText() or AbstractColumn.getFooterComponent() directly
      Get content in footer for given column. Javadoc copied from GridTester.getFooterCell(int).
      Parameters:
      column - column to get footer for
      Returns:
      footer contents
      Throws:
      IllegalStateException - if component is not visible
    • getSelected

      public Collection<Y> getSelected()
      Get selected items. Javadoc copied from GridTester.getSelected().
      Returns:
      selected items
    • isColumnSortable

      public boolean isColumnSortable(int column)
      Checks if the column at the given index is sortable.

      The index is 0 based. Javadoc copied from GridTester.isColumnSortable(int).

      Parameters:
      column - column index to check for sort feature
      Returns:
      true if the column is sortable, otherwise false
      Throws:
      IndexOutOfBoundsException - if column index is invalid
    • isColumnSortable

      public boolean isColumnSortable(String property)
      Checks if the column for the given property is sortable. Javadoc copied from GridTester.isColumnSortable(java.lang.String).
      Parameters:
      property - the property name of the column, not null
      Returns:
      true if the column is sortable, otherwise false
      Throws:
      IllegalArgumentException - if property name does not identify a column
    • getSortDirection

      public SortDirection getSortDirection(int column)
      Gets the current sort direction for column at the given index. Throws an exception if the column does not exist or is not sortable. Javadoc copied from GridTester.getSortDirection(int).
      Parameters:
      column - column index to get sort direction
      Returns:
      sort direction for the column, or null if grid is not sorted by given column
      Throws:
      IllegalArgumentException - if the column at given index is not sortable
      IndexOutOfBoundsException - if column index is invalid
    • getSortDirection

      public SortDirection getSortDirection(String property)
      Gets the current sort direction for column corresponding to the at the given property. Throws an exception if the column does not exist or is not sortable. Javadoc copied from GridTester.getSortDirection(java.lang.String).
      Parameters:
      property - the property name of the column, not null
      Returns:
      sort direction for the column, or null if grid is not sorted by given column
      Throws:
      IllegalArgumentException - if property name does not identify a column or if the column is not sortable
    • sortByColumn

      public void sortByColumn(int column, SortDirection direction)
      Sorts the grid by the given column and sort direction, as if the column header is pressed in the browser until the requested direction is reached. Throws an exception if the column is not sortable or not visible. Javadoc copied from GridTester.sortByColumn(int,com.vaadin.flow.data.provider.SortDirection).
      Parameters:
      column - column index
      direction - sort direction
    • sortByColumn

      public void sortByColumn(int column)
      Sorts the grid according to the given column sort status, as if the column header is pressed in the browser. Throws an exception if the column is not sortable or not visible. Javadoc copied from GridTester.sortByColumn(int).
      Parameters:
      column - column index
    • sortByColumn

      public void sortByColumn(String property)
      Sorts the grid according to sort status ot the column identified by the given property, as if the column header is pressed in the browser. Throws an exception if the column is not sortable or not visible. Javadoc copied from GridTester.sortByColumn(java.lang.String).
      Parameters:
      property - the property name of the column, not null
    • sortByColumn

      public void sortByColumn(String property, SortDirection direction)
      Sorts the grid by the given column and sort direction, as if the column header is pressed in the browser until the requested direction is reached. Throws an exception if the column is not sortable or not visible. Javadoc copied from GridTester.sortByColumn(java.lang.String,com.vaadin.flow.data.provider.SortDirection).
      Parameters:
      property - the property name of the column, not null
      direction - sort direction
    • contextMenu

      public GridContextMenuTester<GridContextMenu<Y>,Y> contextMenu(int row)
      Gets a tester for the context menu of this grid, targeting the given row.

      The index is 0 based and counts the rows the user sees. The menu is not opened, so that assertions can be made on it first; open it with

      invalid reference
      GridContextMenuTester#open()
      .
       var menu = test(grid).contextMenu(0);
       menu.open();
       menu.clickItem("Edit");
       
      Javadoc copied from GridTester.contextMenu(int).
      Parameters:
      row - row the context menu is about
      Returns:
      a tester for the context menu of this grid, targeting the given row
      Throws:
      IllegalStateException - if the grid is not usable, or if it has no context menu or more than one