111 lines
3.9 KiB
TypeScript
111 lines
3.9 KiB
TypeScript
import {Page} from '@playwright/test';
|
|
|
|
import {WizardVisualizationId} from '../../../../src/shared';
|
|
import {PlaceholderName} from '../../../page-objects/wizard/SectionVisualization';
|
|
import WizardPage from '../../../page-objects/wizard/WizardPage';
|
|
import {openTestPage, waitForCondition} from '../../../utils';
|
|
import {RobotChartsWizardUrls} from '../../../utils/constants';
|
|
import datalensTest from '../../../utils/playwright/globalTestDefinition';
|
|
|
|
const validatePlaceholders = async ({
|
|
wizardPage,
|
|
expectedFiltersValue,
|
|
expectedSortValue,
|
|
}: {
|
|
wizardPage: WizardPage;
|
|
expectedSortValue: string;
|
|
expectedFiltersValue: string;
|
|
}) => {
|
|
let sortPlaceholderItemsText: string[] = [];
|
|
let filtersPlaceholderItemsText: string[] = [];
|
|
|
|
await waitForCondition(async () => {
|
|
sortPlaceholderItemsText =
|
|
await wizardPage.sectionVisualization.getPlaceholderItemsInnerText(
|
|
PlaceholderName.Sort,
|
|
);
|
|
|
|
filtersPlaceholderItemsText =
|
|
await wizardPage.sectionVisualization.getPlaceholderItemsInnerText(
|
|
PlaceholderName.Filters,
|
|
);
|
|
|
|
return (
|
|
sortPlaceholderItemsText.join(',') === expectedSortValue &&
|
|
filtersPlaceholderItemsText.join(',') === expectedFiltersValue
|
|
);
|
|
}).catch(() => {
|
|
throw new Error(
|
|
`Fields in sortPlaceholder: ${sortPlaceholderItemsText} and expected City: ${expectedSortValue}; fields in filtersPlaceholder: ${filtersPlaceholderItemsText} and expected ${expectedFiltersValue}`,
|
|
);
|
|
});
|
|
};
|
|
|
|
const validateTableRows = async ({
|
|
wizardPage,
|
|
expectedRows,
|
|
}: {
|
|
wizardPage: WizardPage;
|
|
expectedRows: string[];
|
|
}) => {
|
|
let result: string[] = [];
|
|
await waitForCondition(async () => {
|
|
const afterDnDRowsValues = await wizardPage.chartkit.getRowsTexts();
|
|
result = afterDnDRowsValues.reduce((acc, item) => {
|
|
return [...acc, item[0]];
|
|
}, [] as string[]);
|
|
|
|
return result.join(',') === expectedRows.join(',');
|
|
}).catch(() => {
|
|
throw new Error(`Rows in the ${expectedRows} table were expected, but received ${result}`);
|
|
});
|
|
};
|
|
|
|
datalensTest.describe('Wizard Fields', () => {
|
|
datalensTest("You can't drag disabled field", async ({page}: {page: Page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
|
|
await openTestPage(page, RobotChartsWizardUrls.WizardCitiesDataset);
|
|
|
|
await wizardPage.setVisualization(WizardVisualizationId.FlatTable);
|
|
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.FlatTableColumns,
|
|
'City',
|
|
);
|
|
|
|
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Filters, 'City');
|
|
|
|
const wizardFilterValues = ['Abakan', 'Jejsk'];
|
|
await wizardPage.filterEditor.selectValues(wizardFilterValues);
|
|
await wizardPage.filterEditor.apply();
|
|
|
|
await validateTableRows({wizardPage, expectedRows: wizardFilterValues});
|
|
|
|
await wizardPage.saveWizardEntry(wizardPage.getUniqueEntryName('test-DnD-disabled-field'));
|
|
|
|
const searchParams = new URLSearchParams();
|
|
const dashboardFilter = 'Barnaul';
|
|
searchParams.set('City', dashboardFilter);
|
|
|
|
await wizardPage.page.goto(`${wizardPage.page.url()}?${searchParams.toString()}`);
|
|
|
|
await validateTableRows({wizardPage, expectedRows: [dashboardFilter]});
|
|
|
|
await wizardPage.sectionVisualization.dragAndDropFieldBetweenPlaceholders({
|
|
from: PlaceholderName.Filters,
|
|
to: PlaceholderName.Sort,
|
|
fieldName: 'City',
|
|
});
|
|
|
|
const placeholderItemTextValue = 'City: Abakan,Jejsk';
|
|
await validatePlaceholders({
|
|
wizardPage,
|
|
expectedFiltersValue: placeholderItemTextValue,
|
|
expectedSortValue: '',
|
|
});
|
|
|
|
await wizardPage.deleteEntry();
|
|
});
|
|
});
|