systelab-components-wdio-test
Version:
Widgets to be use in the E2E Tests based in WDIO
73 lines (72 loc) • 3.06 kB
JavaScript
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}"]`);
}
}