2026-06-24 20:31:05 +05:00

89 lines
3.1 KiB
TypeScript

import {expect, Page} from '@playwright/test';
import {PlaceholderName} from '../../../page-objects/wizard/SectionVisualization';
import WizardPage from '../../../page-objects/wizard/WizardPage';
import {openTestPage, slct} from '../../../utils';
import {RobotChartsWizardUrls} from '../../../utils/constants';
import datalensTest from '../../../utils/playwright/globalTestDefinition';
import {ChartKitTableQa, WizardVisualizationId} from '../../../../src/shared';
datalensTest.describe('Wizard Hierarchy', () => {
datalensTest.beforeEach(async ({page}: {page: Page}) => {
const hierarchyName = 'Hierarchy for detail';
const wizardPage = new WizardPage({page});
await openTestPage(page, RobotChartsWizardUrls.WizardCitiesDataset);
await wizardPage.setVisualization(WizardVisualizationId.FlatTable);
await wizardPage.openHierarchyEditor();
await wizardPage.hierarchyEditor.setName(hierarchyName);
await wizardPage.hierarchyEditor.selectFields(['Population', 'City']);
await wizardPage.hierarchyEditor.clickSave();
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
hierarchyName,
);
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Filters, 'City');
await wizardPage.filterEditor.selectValues([
'Abakan',
'Jejsk',
'Barnaul',
'Glazov',
'Klimovsk',
'Krymsk',
]);
await wizardPage.filterEditor.apply();
});
datalensTest(
'The user clicks on the arrow and falls into the cities, and then returns back',
async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
const firstLevelValues = ['56 100', '87 600', '96 400', '159 500', '610 800'];
const secondLevelValues = [
'Abakan',
'Barnaul',
'Glazov',
'Jejsk',
'Klimovsk',
'Krymsk',
];
const cell = wizardPage.chartkit
.getTableLocator()
.locator(slct(ChartKitTableQa.CellContent));
await expect(cell).toHaveText(firstLevelValues);
await wizardPage.chartkit.drillDown();
await expect(cell).toHaveText(secondLevelValues);
await wizardPage.chartkit.drillUp();
await expect(cell).toHaveText(firstLevelValues);
},
);
datalensTest(
'The user clicks on the line and falls into the cities, filtered by population',
async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
const cell = wizardPage.chartkit
.getTableLocator()
.locator(slct(ChartKitTableQa.CellContent));
await expect(cell).toHaveText(['56 100', '87 600', '96 400', '159 500', '610 800']);
await cell.getByText('56 100').click();
await expect(cell).toHaveText(['Klimovsk', 'Krymsk']);
},
);
});