datalens-ui/tests/page-objects/wizard/ColumnSettings.ts
2026-06-24 21:10:34 +05:00

82 lines
2.6 KiB
TypeScript

import type {Page} from '@playwright/test';
import {DialogColumnSettingsQa} from '../../../src/shared/constants';
import {slct} from '../../utils';
import {CommonSelectors} from '../constants/common-selectors';
import {PlaceholderName} from './SectionVisualization';
export class ColumnSettings {
page: Page;
constructor(page: Page) {
this.page = page;
}
async switchUnit(fieldTitle: string, unit: 'auto' | 'pixel' | 'percent') {
const radioGroupLocator = this.page.locator(
slct(`${DialogColumnSettingsQa.UnitRadioButtons}__${fieldTitle}`),
);
await radioGroupLocator
.locator(`${CommonSelectors.RadioButtonOptionControl}[value=${unit}]`)
.click({force: true});
}
async fillWidthValueInput(fieldTitle: string, text: string) {
await this.page.fill(
`${slct(`${DialogColumnSettingsQa.WidthValueInput}__${fieldTitle}`)} input`,
text,
);
}
async reset() {
await this.page.click(slct(DialogColumnSettingsQa.ResetButton));
}
async getInputValue(fieldTitle: string) {
return await this.page.inputValue(
`${slct(`${DialogColumnSettingsQa.WidthValueInput}__${fieldTitle}`)} input`,
);
}
async getRadioButtonsValue(fieldTitle: string) {
const checkedRadioButton = await this.page.$(
`${slct(
`${DialogColumnSettingsQa.UnitRadioButtons}__${fieldTitle}`,
)} .g-segmented-radio-group__option_checked`,
);
const valueWrapper = await checkedRadioButton?.$(CommonSelectors.RadioButtonOptionControl);
return valueWrapper?.getAttribute('value');
}
async apply() {
await this.page.click(slct(DialogColumnSettingsQa.ApplyButton));
}
async open(placeholder?: PlaceholderName) {
const placeholderLocator = placeholder
? this.page.locator(slct(placeholder))
: this.page
.locator(slct(PlaceholderName.FlatTableColumns))
.or(this.page.locator(slct(PlaceholderName.PivotTableColumns)));
await placeholderLocator.hover();
await this.page.click(slct('placeholder-action-open-column-settings-dialog'));
await this.page.waitForSelector(slct(DialogColumnSettingsQa.Dialog));
}
async cancel() {
await this.page.click(slct(DialogColumnSettingsQa.CancelButton));
}
async setPinnedColumns(count: number) {
const inputLocator = this.page
.locator(slct(DialogColumnSettingsQa.PinnedColumnsInput))
.locator('input');
await inputLocator.fill(String(count));
}
}