blob: 703bfe7e47705d58a616a37a533e7b1ebdd6e38f [file] [log] [blame]
import { PageObject } from '../../../infra-sk/modules/page_object/page_object';
import { PageObjectElement } from '../../../infra-sk/modules/page_object/page_object_element';
/** A page object for the PaginationSk component. */
export class PaginationSkPO extends PageObject {
private get prevBtn(): PageObjectElement {
return this.bySelector('button.prev');
}
private get nextBtn(): PageObjectElement {
return this.bySelector('button.next');
}
private get skipBtn(): PageObjectElement {
return this.bySelector('button.skip');
}
private get counter(): PageObjectElement {
return this.bySelector('div.counter');
}
async clickPrevBtn() {
await this.prevBtn.click();
}
async clickNextBtn() {
await this.nextBtn.click();
}
async clickSkipBtn() {
await this.skipBtn.click();
}
async isPrevBtnDisabled() {
return this.prevBtn.hasAttribute('disabled');
}
async isNextBtnDisabled() {
return this.nextBtn.hasAttribute('disabled');
}
async isSkipBtnDisabled() {
return this.skipBtn.hasAttribute('disabled');
}
async getCurrentPage(): Promise<number> {
const counterText = await this.counter.innerText;
const prefix = 'page ';
if (!counterText.startsWith(prefix)) {
throw new Error(
`expected counter to begin with "${prefix}", but was "${counterText}"`
);
}
return parseInt(counterText.substring(prefix.length));
}
}