blob: 795b0c1bffba47d5cf9334b145abe08e2d3005e1 [file] [log] [blame]
import { PageObject } from '../../../infra-sk/modules/page_object/page_object';
import { PageObjectElement } from '../../../infra-sk/modules/page_object/page_object_element';
export class PivotQuerySkPO extends PageObject {
get groupBy(): PageObjectElement {
return this.bySelector('multi-select-sk[id^="group_by-"]');
}
get operation(): PageObjectElement {
return this.bySelector('select[id^="operation-"]');
}
get summary(): PageObjectElement {
return this.bySelector('multi-select-sk[id^="summary-"]');
}
async setGroupBy(key: string): Promise<void> {
await this.groupBy.applyFnToDOMNode((el, key) => {
const divs = el.querySelectorAll('div');
for (let i = 0; i < divs.length; i++) {
if (divs[i].textContent?.trim() === key) {
divs[i].click();
return;
}
}
throw new Error(`Could not find group_by option "${key}"`);
}, key);
}
async setOperation(op: string): Promise<void> {
await this.operation.applyFnToDOMNode((el, op) => {
const select = el as HTMLSelectElement;
select.value = op as string;
select.dispatchEvent(new Event('change', { bubbles: true }));
}, op);
}
async setSummary(op: string): Promise<void> {
await this.summary.applyFnToDOMNode((el, op) => {
const divs = el.querySelectorAll('div');
const foundTexts: string[] = [];
for (let i = 0; i < divs.length; i++) {
const text = divs[i].textContent?.trim() || '';
foundTexts.push(text);
if (text === op) {
divs[i].click();
return;
}
}
throw new Error(
`Could not find summary option "${op}". Found: ${JSON.stringify(foundTexts)}`
);
}, op);
}
}