2026-06-24 21:10:34 +05:00

229 lines
9.4 KiB
TypeScript

import {expect} from '@playwright/test';
import {
ChartKitQa,
DialogFieldBarsSettingsQa,
Operations,
WizardPageQa,
WizardVisualizationId,
} from '../../../../../src/shared';
import {PlaceholderName} from '../../../../page-objects/wizard/SectionVisualization';
import WizardPage from '../../../../page-objects/wizard/WizardPage';
import {openTestPage, slct} from '../../../../utils';
import datalensTest from '../../../../utils/playwright/globalTestDefinition';
datalensTest.describe('Wizard', () => {
datalensTest.describe('Flat table', () => {
datalensTest.beforeEach(async ({page, config}) => {
await openTestPage(page, config.wizard.urls.WizardBasicDataset);
const wizardPage = new WizardPage({page});
await wizardPage.setVisualization(WizardVisualizationId.FlatTable);
});
datalensTest('Tree column sorting', async ({page}) => {
const wizardPage = new WizardPage({page});
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
const treeFieldName = 'tree';
await wizardPage.createNewFieldWithFormula(
treeFieldName,
'tree(array([Category], [sub_category]))',
);
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
treeFieldName,
);
await expect(previewLoader).not.toBeVisible();
// Open a tree branch
await chartContainer.locator('td', {hasText: 'Furniture'}).click();
// Sort values by clicking on header
await chartContainer.locator('thead', {hasText: treeFieldName}).first().click();
const expectedOrder = [
['Technology'],
['Office Supplies'],
['Furniture'],
['Tables'],
['Furnishings'],
['Chairs'],
['Bookcases'],
];
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(expectedOrder);
});
datalensTest('Sorting negative numbers with linear indicator', async ({page}) => {
const wizardPage = new WizardPage({page});
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Filters, 'Id');
await wizardPage.filterEditor.selectFilterOperation(Operations.LT);
await wizardPage.filterEditor.setInputValue('5');
await wizardPage.filterEditor.apply();
const treeFieldName = 'Id2';
await wizardPage.createNewFieldWithFormula(treeFieldName, 'max([id] - 2.5)');
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'Id',
);
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'Id2',
);
// Add bar to Id2
await wizardPage.visualizationItemDialog.open(PlaceholderName.FlatTableColumns, 'Id2');
await wizardPage.page.locator(slct(DialogFieldBarsSettingsQa.EnableButton)).click();
await wizardPage.visualizationItemDialog.clickOnApplyButton();
await expect(previewLoader).not.toBeVisible();
const initialOrder = [
['1', '-1,50'],
['2', '-0,50'],
['3', '0,50'],
['4', '1,50'],
];
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(initialOrder);
// Sort values by clicking on header
await chartContainer.locator('thead', {hasText: 'Id2'}).first().click();
const expectedOrder = [
['4', '1,50'],
['3', '0,50'],
['2', '-0,50'],
['1', '-1,50'],
];
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(expectedOrder);
});
datalensTest('Sorting dates with null values', async ({page}) => {
const wizardPage = new WizardPage({page});
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
await wizardPage.createNewFieldWithFormula('year', 'year([Order_date])');
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Filters, 'year');
await wizardPage.filterEditor.selectFilterOperation(Operations.EQ);
await wizardPage.filterEditor.setInputValue('2015');
await wizardPage.filterEditor.apply();
await wizardPage.createNewFieldWithFormula('month', 'datetrunc([Order_date], "month")');
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'month',
);
await wizardPage.createNewFieldWithFormula(
'with_null',
'if(month([Order_date]) = 2) then null else datetrunc([month], "month") end',
);
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'with_null',
);
await expect(previewLoader).not.toBeVisible();
const initialOrder = [
['01.01.2015', '01.01.2015'],
['01.02.2015', 'null'],
['01.03.2015', '01.03.2015'],
['01.04.2015', '01.04.2015'],
['01.05.2015', '01.05.2015'],
['01.06.2015', '01.06.2015'],
['01.07.2015', '01.07.2015'],
['01.08.2015', '01.08.2015'],
['01.09.2015', '01.09.2015'],
['01.10.2015', '01.10.2015'],
['01.11.2015', '01.11.2015'],
['01.12.2015', '01.12.2015'],
];
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(initialOrder);
// Sort values by clicking on header
await chartContainer.locator('thead', {hasText: 'with_null'}).first().click();
const expectedOrder = [
['01.12.2015', '01.12.2015'],
['01.11.2015', '01.11.2015'],
['01.10.2015', '01.10.2015'],
['01.09.2015', '01.09.2015'],
['01.08.2015', '01.08.2015'],
['01.07.2015', '01.07.2015'],
['01.06.2015', '01.06.2015'],
['01.05.2015', '01.05.2015'],
['01.04.2015', '01.04.2015'],
['01.03.2015', '01.03.2015'],
['01.01.2015', '01.01.2015'],
['01.02.2015', 'null'],
];
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(expectedOrder);
});
datalensTest('Sorting numbers with null values', async ({page}) => {
const wizardPage = new WizardPage({page});
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
await wizardPage.createNewFieldWithFormula('year', 'year([Order_date])');
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Filters, 'year');
await wizardPage.filterEditor.selectFilterOperation(Operations.EQ);
await wizardPage.filterEditor.setInputValue('2015');
await wizardPage.filterEditor.apply();
await wizardPage.createNewFieldWithFormula('month', 'datepart([Order_date], "month")');
await wizardPage.createNewFieldWithFormula(
'with_null',
'if([month] = 2) then null else [month] end',
);
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'month',
);
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'with_null',
);
await expect(previewLoader).not.toBeVisible();
const initialOrder = [
['1', '1'],
['2', 'null'],
['3', '3'],
['4', '4'],
['5', '5'],
['6', '6'],
['7', '7'],
['8', '8'],
['9', '9'],
['10', '10'],
['11', '11'],
['12', '12'],
];
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(initialOrder);
// Sort values by clicking on header
await chartContainer.locator('thead', {hasText: 'with_null'}).first().click();
const expectedOrder = [
['12', '12'],
['11', '11'],
['10', '10'],
['9', '9'],
['8', '8'],
['7', '7'],
['6', '6'],
['5', '5'],
['4', '4'],
['3', '3'],
['1', '1'],
['2', 'null'],
];
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(expectedOrder);
});
});
});