datalens-ui/tests/suites/wizard/hierarchy/editHierarchy.test.ts
2026-06-24 20:31:05 +05:00

104 lines
3.9 KiB
TypeScript

import {Page} from '@playwright/test';
import {SectionDatasetQA, WizardVisualizationId} from '../../../../src/shared';
import {PlaceholderName} from '../../../page-objects/wizard/SectionVisualization';
import WizardPage from '../../../page-objects/wizard/WizardPage';
import {openTestPage, slct, waitForCondition} from '../../../utils';
import {RobotChartsWizardUrls} from '../../../utils/constants';
import datalensTest from '../../../utils/playwright/globalTestDefinition';
const hierarchyName = 'City > Rank';
const hierarchyFields = ['Rank', 'City'];
datalensTest.describe('Wizard Hierarchy', () => {
datalensTest.beforeEach(async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
await openTestPage(page, RobotChartsWizardUrls.WizardCitiesDataset);
await wizardPage.openHierarchyEditor();
await wizardPage.hierarchyEditor.setName(hierarchyName);
await wizardPage.hierarchyEditor.selectFields(hierarchyFields);
await wizardPage.hierarchyEditor.clickSave();
});
datalensTest(
'You can open editing by clicking on the hierarchy icon in the list of hierarchies',
async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
await page.click(`${slct(SectionDatasetQA.DatasetContainer)} .hierarchy-icon`);
await waitForCondition(() => {
return wizardPage.hierarchyEditor.isVisible();
});
},
);
datalensTest(
'You can open editing by clicking on the hierarchy icon in the visualization',
async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
await wizardPage.setVisualization(WizardVisualizationId.FlatTable);
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
hierarchyName,
);
await page.click(`${slct(PlaceholderName.FlatTableColumns)} .hierarchy-icon`);
await waitForCondition(() => {
return wizardPage.hierarchyEditor.isVisible();
});
},
);
datalensTest('Editing fields and hierarchy name', async ({page}: {page: Page}) => {
const newHierarchyName = 'New hierarchy name';
const newHierarchyFields = ['Latitude1', 'Longitude1'];
const wizardPage = new WizardPage({page});
const openHierarchyEditor = async () => {
await page.click(`${slct(SectionDatasetQA.DatasetContainer)} .hierarchy-icon`);
};
await openHierarchyEditor();
await waitForCondition(async () => {
const name = await wizardPage.hierarchyEditor.getName();
const selectedItems = await wizardPage.hierarchyEditor.getSelectedItems();
return name === hierarchyName && selectedItems.join() === hierarchyFields.join();
});
await wizardPage.hierarchyEditor.setName(newHierarchyName);
await wizardPage.hierarchyEditor.clearAllSelectedFields();
await wizardPage.hierarchyEditor.selectFields(newHierarchyFields);
await wizardPage.hierarchyEditor.clickSave();
await openHierarchyEditor();
await waitForCondition(async () => {
const name = await wizardPage.hierarchyEditor.getName();
const selectedItems = await wizardPage.hierarchyEditor.getSelectedItems();
return name === newHierarchyName && selectedItems.join() === newHierarchyFields.join();
});
});
datalensTest('Cannot edit inline hierarchy', async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.X, hierarchyName);
await wizardPage.page.hover(slct(hierarchyName));
const moreButton = await wizardPage.page.$('.more-icon');
expect(moreButton).toEqual(null);
});
});