blob: 927fc2e7893d3a38dbf7bae673affb93c9dbb49b [file] [log] [blame]
import {PageObject} from '../../../infra-sk/modules/page_object/page_object';
import {TriageSkPO} from '../triage-sk/triage-sk_po';
import {PageObjectElement, PageObjectElementList} from '../../../infra-sk/modules/page_object/page_object_element';
import {ImageCompareSkPO} from '../image-compare-sk/image-compare-sk_po';
import {DotsLegendSkPO} from '../dots-legend-sk/dots-legend-sk_po';
/** A page object for the DigestDetailsSk component. */
export class DigestDetailsSkPO extends PageObject {
get triageSkPO(): TriageSkPO {
return this.poBySelector('triage-sk', TriageSkPO);
}
get imageCompareSkPO(): ImageCompareSkPO {
return this.poBySelector('image-compare-sk', ImageCompareSkPO);
}
get dotsLegendSkPO(): DotsLegendSkPO {
return this.poBySelector('dots-legend-sk', DotsLegendSkPO);
}
private get testName(): PageObjectElement {
return this.bySelector('.top_bar .grouping_name');
}
private get clusterLink(): PageObjectElement {
return this.bySelector('a.cluster_link');
}
private get leftDigest(): PageObjectElement {
return this.bySelector('.digest_label.left');
}
private get rightDigest(): PageObjectElement {
return this.bySelector('.digest_label.right');
}
private get diffPageLink(): PageObjectElement {
return this.bySelector('.metrics_and_triage .diffpage_link');
}
private get metrics(): PageObjectElementList {
return this.bySelectorAll('.metrics_and_triage .metric');
}
private get sizeWarning(): PageObjectElement {
return this.bySelector('.metrics_and_triage .size_warning');
}
private get triageHistory(): PageObjectElement {
return this.bySelector('.metrics_and_triage .triage-history');
}
private get toggleReferenceBtn(): PageObjectElement {
return this.bySelector('button.toggle_ref');
}
private get closestImageIsNegativeWarning(): PageObjectElement {
return this.bySelector('.negative_warning');
}
private get zoomDialog(): PageObjectElement {
return this.bySelector('dialog.zoom_dialog');
}
isSelected(): Promise<boolean> {
return this.element.hasClassName('selected');
}
getTestName(): Promise<string> {
return this.testName.innerText;
}
getClusterHref(): Promise<string | null> {
return this.clusterLink.getAttribute('href');
}
getLeftDigest(): Promise<string> {
return this.leftDigest.innerText;
}
async getRightDigest(): Promise<string | null> {
// Not all DigestDetailsSk instances have a right digest.
return (await this.rightDigest.isEmpty()) ? null : this.rightDigest.innerText;
}
getDiffPageLink(): Promise<string | null> {
return this.diffPageLink.getAttribute('href');
}
getMetrics(): Promise<string[]> {
return this.metrics.map((metric) => metric.innerText);
}
async isSizeWarningVisible(): Promise<boolean> {
return !(await this.sizeWarning.hasAttribute('hidden'));
}
getTriageHistory(): Promise<string> {
return this.triageHistory.innerText;
}
async clickToggleReferenceBtn() {
await this.toggleReferenceBtn.click();
}
async isClosestImageIsNegativeWarningVisible(): Promise<boolean> {
return !(await this.closestImageIsNegativeWarning.hasAttribute('hidden'));
}
isZoomDialogOpen() {
return this.zoomDialog.hasAttribute('open');
}
}