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

125 lines
6.1 KiB
TypeScript

import {expect} from '@playwright/test';
import datalensTest from '../../../utils/playwright/globalTestDefinition';
import {openTestPage, slct} from '../../../utils';
import {ChartKitQa, SectionDatasetQA, WizardPageQa} from '../../../../src/shared';
import WizardPage from '../../../page-objects/wizard/WizardPage';
import {PlaceholderName} from '../../../page-objects/wizard/SectionVisualization';
datalensTest.describe('Wizard', () => {
datalensTest.describe('Fields', () => {
datalensTest.beforeEach(async ({page, config}) => {
await openTestPage(page, config.wizard.urls.WizardBasicDataset);
});
datalensTest('The parameterized field should affect the chart', async ({page}) => {
const wizardPage = new WizardPage({page});
const datasetFields = page.locator(slct(SectionDatasetQA.DatasetFields));
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
const parameterName = 'local_parameter';
const parameterValue = 'Furniture';
// Create parameter
await wizardPage.parameterEditor.openCreateParameter();
await wizardPage.parameterEditor.setName(parameterName);
await wizardPage.parameterEditor.setDefaultValue(parameterValue);
await wizardPage.parameterEditor.apply();
const newFieldLocator = datasetFields.locator(slct(parameterName), {
hasText: parameterName,
});
await expect(newFieldLocator).toBeVisible();
// Create parameterized field
const parameterizedFieldName = 'parameterized';
const formula = `CASE [Category] when [${parameterName}] then 'parameter_title' else [Category] END`;
await wizardPage.createNewFieldWithFormula(parameterizedFieldName, formula);
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.X, 'Category');
await expect(previewLoader).not.toBeVisible();
const initialXAxisValues = 'Furniture\nOffice Supplies\nTechnology';
await expect(chartContainer).toHaveText(initialXAxisValues, {useInnerText: true});
await wizardPage.sectionVisualization.removeFieldByClick(PlaceholderName.X, 'Category');
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.X,
parameterizedFieldName,
);
await expect(previewLoader).not.toBeVisible();
const newXAxisValues = 'Office Supplies\nparameter_title\nTechnology';
await expect(chartContainer).toHaveText(newXAxisValues, {useInnerText: true});
});
datalensTest(
'Renaming should not affect the operation of the parameter',
async ({page}) => {
const wizardPage = new WizardPage({page});
const datasetFields = page.locator(slct(SectionDatasetQA.DatasetFields));
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
const chart = chartContainer.locator('.chartkit-graph,.gcharts-chart');
const noData = chartContainer.locator(slct('ERR.CK.NO_DATA'));
// Create parameter (value = 1)
const parameterName = 'run';
await wizardPage.parameterEditor.openCreateParameter();
await wizardPage.parameterEditor.setName(parameterName);
await wizardPage.parameterEditor.setDefaultValue('1');
await wizardPage.parameterEditor.apply();
let parameterLocator = datasetFields.locator(slct(parameterName), {
hasText: parameterName,
});
await expect(parameterLocator).toBeVisible();
// Create parameterized field ([run] = '1')
const parameterizedFieldName = 'run-chart';
await wizardPage.createNewFieldWithFormula(
parameterizedFieldName,
`[${parameterName}] = '1'`,
);
// Fill required fields for chart
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.Filters,
parameterizedFieldName,
);
await wizardPage.filterEditor.selectRadio('true');
await wizardPage.filterEditor.apply();
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.X,
'Category',
);
await expect(chart).toBeVisible();
// Change parameter value to 0
await parameterLocator.locator(slct(SectionDatasetQA.ItemIcon)).click();
await wizardPage.parameterEditor.setDefaultValue('0');
await wizardPage.parameterEditor.apply();
await expect(noData).toBeVisible();
// Rename parameter
const newName = 'run1';
await parameterLocator.locator(slct(SectionDatasetQA.ItemIcon)).click();
await wizardPage.parameterEditor.setName(newName);
await wizardPage.parameterEditor.apply();
parameterLocator = datasetFields.locator(slct(newName), {
hasText: newName,
});
await expect(previewLoader).toBeVisible();
await expect(previewLoader).not.toBeVisible();
await expect(noData).toBeVisible();
// Change parameter value to 1
await parameterLocator.locator(slct(SectionDatasetQA.ItemIcon)).click();
await wizardPage.parameterEditor.setDefaultValue('1');
await wizardPage.parameterEditor.apply();
await expect(previewLoader).toBeVisible();
await expect(previewLoader).not.toBeVisible();
await expect(chart).toBeVisible();
},
);
});
});