UNPKG

systelab-components-wdio-test

Version:
73 lines (72 loc) 3.06 kB
import { DefaultTimeout } from "../wdio/index.js"; import { ContextMenu } from './context-menu.js'; import { Widget } from './widget.js'; export class Grid extends Widget { async getNumberOfRows() { return this.byCSS('.ag-center-cols-container').allByCSS('div[role=row]').count(); } async getValuesInRow(row) { const content = []; const cols = this.allByCSS(`div[row-index="${row}"] div.ag-cell-value`); const numberOfRows = await cols.count(); for (let i = 0; i < numberOfRows; i++) { content.push(await cols.get(i).getText()); } return content; } async getValueInCell(row, columnName) { const cellSelector = `[role='gridcell'][col-id='` + columnName + `']`; const gridCell = this.allByCSS(cellSelector).get(row); return gridCell.getText(); } async clickOnRowMenu(row) { await this.clickOnLeftPinnedCell(row, 'contextMenu'); await this.byTagName('systelab-grid-context-menu').waitToBePresent(); } async clickOnRow(row, column) { await this.clickOnCell(row, column); } async clickOnHeader() { const container = this.byClassName('ag-header-container'); const headerRow = container.byCSS('.ag-header-row'); const headerCells = headerRow.allByCSS('.ag-header-cell'); await headerCells.get(0).click(); } async clickOnHeaderCell(columnIndex) { return this.allByClassName('ag-header-cell-text').get(columnIndex - 1).click(); } async clickOnCell(row, column) { const headerCells = this.getCells(this.byClassName('ag-center-cols-container'), row, column); return headerCells.get(0).click(); } async clickOnLeftPinnedCell(row, column) { const headerCells = await this.getCells(this.byClassName('ag-pinned-left-cols-container'), row, column); return headerCells.get(0).click(); } async selectRow(row) { return this.allByCSS(`div[row-index="${row}"] div[col-id="selectCol"] input`).get(0).click(); } async getHeaderCaptions() { let content = []; const cols = this.allByClassName('ag-header-cell'); const numberOfFields = await cols.count(); for (let i = 0; i < numberOfFields; i++) { content.push(await cols.get(i).getText()); } return content; } async getGridHeader() { const cols = this.allByCSS('.ag-header-row .ag-header-cell-label'); return cols.getText(); } getMenu() { return new ContextMenu(this.byTagName('systelab-grid-context-menu')); } async waitToBeLoaded({ loadingOverlayCSSSelector = '.ag-overlay-loading-wrapper', timeout = DefaultTimeout.SLOW_WAIT }) { return this.elem.waitUntil(async () => !(await this.byCSS(loadingOverlayCSSSelector).isDisplayed()), timeout); } getCells(container, row, column) { const rowSelector = container.byCSS(`div[row-index="${row}"]`); return rowSelector.allByCSS(`div[col-id="${column}"]`); } }