blob: 90a066197fa73afb78febb03614bfd1f7f425887 [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));
}
}