157 lines
6.0 KiB
TypeScript
157 lines
6.0 KiB
TypeScript
import { ObjectsRegistry } from "../Objects/Registry"
|
|
|
|
export class Table {
|
|
public agHelper = ObjectsRegistry.AggregateHelper
|
|
public locator = ObjectsRegistry.CommonLocators
|
|
|
|
private _tableWrap = "//div[@class='tableWrap']"
|
|
private _tableHeader = this._tableWrap + "//div[@class='thead']//div[@class='tr'][1]"
|
|
private _columnHeader = (columnName: string) => this._tableWrap + "//div[@class='thead']//div[@class='tr'][1]//div[@role='columnheader']//div[text()='" + columnName + "']/parent::div/parent::div"
|
|
private _nextPage = ".t--widget-tablewidget .t--table-widget-next-page"
|
|
private _previousPage = ".t--widget-tablewidget .t--table-widget-prev-page"
|
|
private _pageNumber = ".t--widget-tablewidget .page-item"
|
|
private _pageNumberServerSideOff = ".t--widget-tablewidget .t--table-widget-page-input input"
|
|
_tableRow = (rowNum: number, colNum: number) => `.t--widget-tablewidget .tbody .td[data-rowindex=${rowNum}][data-colindex=${colNum}]`
|
|
_tableRowColumnData = (rowNum: number, colNum: number) => this._tableRow(rowNum, colNum) + ` div div`
|
|
_tableEmptyColumnData = `.t--widget-tablewidget .tbody .td` //selected-row
|
|
_tableSelectedRow = this._tableWrap + "//div[contains(@class, 'tbody')]//div[contains(@class, 'selected-row')]/div"
|
|
_liNextPage = "li[title='Next Page']"
|
|
_liPreviousPage = "li[title='Previous Page']"
|
|
_liCurrentSelectedPage = "//div[@type='LIST_WIDGET']//ul[contains(@class, 'rc-pagination')]/li[contains(@class, 'rc-pagination-item-active')]/a"
|
|
|
|
|
|
public WaitUntilTableLoad() {
|
|
// cy.waitUntil(() => cy.xpath(this._table, { timeout: 80000 }).should('be.visible'),
|
|
// {
|
|
// errorMsg: "Element did not appear",
|
|
// timeout: 10000,
|
|
// interval: 2000
|
|
// }).then(() => this.agHelper.Sleep(500))
|
|
|
|
// this.ReadTableRowColumnData(0, 0).then((cellData) => {
|
|
// expect(cellData).not.empty;
|
|
// });
|
|
|
|
cy.waitUntil(() => this.ReadTableRowColumnData(0, 0),
|
|
{
|
|
errorMsg: "Table is not populated",
|
|
timeout: 10000,
|
|
interval: 2000
|
|
}).then(cellData => {
|
|
expect(cellData).not.empty
|
|
this.agHelper.Sleep(500)
|
|
})
|
|
}
|
|
|
|
public WaitForTableEmpty() {
|
|
cy.waitUntil(() => cy.get(this._tableEmptyColumnData),
|
|
{
|
|
errorMsg: "Table is populated when not expected",
|
|
timeout: 10000,
|
|
interval: 2000
|
|
}).then($children => {
|
|
cy.wrap($children).children().should('have.length', 0) //or below
|
|
//expect($children).to.have.lengthOf(0)
|
|
this.agHelper.Sleep(500)
|
|
})
|
|
}
|
|
|
|
public AssertTableHeaderOrder(expectedOrder: string) {
|
|
cy.xpath(this._tableHeader).invoke("text").then((x) => {
|
|
expect(x).to.eq(expectedOrder);
|
|
});
|
|
}
|
|
|
|
public ReadTableRowColumnData(rowNum: number, colNum: number) {
|
|
this.agHelper.Sleep(2000)//Settling time for table!
|
|
return cy.get(this._tableRowColumnData(rowNum, colNum)).invoke("text");
|
|
}
|
|
|
|
public AssertHiddenColumns(columnNames: string[]) {
|
|
columnNames.forEach($header => {
|
|
cy.xpath(this._columnHeader($header))
|
|
.invoke("attr", "class")
|
|
.then((classes) => {
|
|
expect(classes).includes("hidden-header");
|
|
});
|
|
})
|
|
}
|
|
|
|
public NavigateToNextPage() {
|
|
let curPageNo: number;
|
|
cy.get(this._pageNumber).invoke('text').then($currentPageNo =>
|
|
curPageNo = Number($currentPageNo))
|
|
cy.get(this._nextPage).click()
|
|
cy.get(this._pageNumber).invoke('text').then($newPageNo =>
|
|
expect(Number($newPageNo)).to.eq(curPageNo + 1))
|
|
}
|
|
|
|
public NavigateToPreviousPage() {
|
|
let curPageNo: number;
|
|
cy.get(this._pageNumber).invoke('text').then($currentPageNo =>
|
|
curPageNo = Number($currentPageNo))
|
|
cy.get(this._previousPage).click()
|
|
cy.get(this._pageNumber).invoke('text').then($newPageNo =>
|
|
expect(Number($newPageNo)).to.eq(curPageNo - 1))
|
|
}
|
|
|
|
public AssertPageNumber(pageNo: number, serverSide: 'Off' | 'On' = 'On') {
|
|
if (serverSide == 'On')
|
|
cy.get(this._pageNumber).should('have.text', Number(pageNo))
|
|
else {
|
|
cy.get(this._pageNumberServerSideOff).should('have.value', Number(pageNo))
|
|
cy.get(this._previousPage).should("have.attr", 'disabled')
|
|
cy.get(this._nextPage).should("have.attr", 'disabled')
|
|
}
|
|
if (pageNo == 1)
|
|
cy.get(this._previousPage).should("have.attr", 'disabled')
|
|
}
|
|
|
|
public AssertSelectedRow(rowNum: number = 0) {
|
|
cy.xpath(this._tableSelectedRow)
|
|
.invoke("attr", "data-rowindex")
|
|
.then($rowIndex => {
|
|
expect(Number($rowIndex)).to.eq(rowNum);
|
|
});
|
|
}
|
|
|
|
public SelectTableRow(rowIndex: number) {
|
|
cy.get(this._tableRow(rowIndex, 0)).first().click({ force: true });
|
|
this.agHelper.Sleep()//for select to reflect
|
|
}
|
|
|
|
//List methods - keeping it for now!
|
|
public NavigateToNextPage_List() {
|
|
let curPageNo: number;
|
|
cy.xpath(this._liCurrentSelectedPage).invoke('text').then($currentPageNo =>
|
|
curPageNo = Number($currentPageNo))
|
|
cy.get(this._liNextPage).click()
|
|
cy.scrollTo('top', { easing: 'linear' })
|
|
cy.xpath(this._liCurrentSelectedPage).invoke('text').then($newPageNo =>
|
|
expect(Number($newPageNo)).to.eq(curPageNo + 1))
|
|
}
|
|
|
|
public NavigateToPreviousPage_List() {
|
|
let curPageNo: number;
|
|
cy.xpath(this._liCurrentSelectedPage).invoke('text').then($currentPageNo =>
|
|
curPageNo = Number($currentPageNo))
|
|
cy.get(this._liPreviousPage).click()
|
|
cy.scrollTo('top', { easing: 'linear' })
|
|
cy.xpath(this._liCurrentSelectedPage).invoke('text').then($newPageNo =>
|
|
expect(Number($newPageNo)).to.eq(curPageNo - 1))
|
|
}
|
|
|
|
public AssertPageNumber_List(pageNo: number, checkNoNextPage = false) {
|
|
cy.xpath(this._liCurrentSelectedPage).invoke('text').then($currentPageNo =>
|
|
expect(Number($currentPageNo)).to.eq(pageNo))
|
|
|
|
if (pageNo == 1)
|
|
cy.get(this._liPreviousPage).should("have.attr", "aria-disabled", 'true')
|
|
|
|
if (checkNoNextPage)
|
|
cy.get(this._liNextPage).should("have.attr", "aria-disabled", 'true')
|
|
else
|
|
cy.get(this._liNextPage).should("have.attr", "aria-disabled", 'false')
|
|
|
|
}
|
|
} |