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

144 lines
6.3 KiB
TypeScript

import {expect} from '@playwright/test';
import {
ChartKitQa,
DialogFieldBackgroundSettingsQa,
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';
import {SMALL_SCREENSHOT_VIEWPORT_SIZE} from '../constants';
datalensTest.describe('Wizard', () => {
datalensTest.describe('Flat table', () => {
datalensTest.beforeEach(async ({page, config}) => {
await openTestPage(page, config.wizard.urls.WizardBasicDataset);
await page.setViewportSize(SMALL_SCREENSHOT_VIEWPORT_SIZE);
const wizardPage = new WizardPage({page});
await wizardPage.setVisualization(WizardVisualizationId.FlatTable);
});
datalensTest(
'Linear indicator with manual scale(the set max value is less than the actual) @screenshot',
async ({page}) => {
const wizardPage = new WizardPage({page});
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
const table = wizardPage.chartkit.getTableLocator();
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.Filters,
'id',
);
await wizardPage.filterEditor.selectFilterOperation(Operations.LTE);
await wizardPage.filterEditor.setInputValue('5');
await wizardPage.filterEditor.apply();
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'id',
);
// an indicator with a negative minimum and positive maximum scale values
await wizardPage.createNewFieldWithFormula('ind1', 'max([id]) - 3');
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'ind1',
);
await wizardPage.visualizationItemDialog.open(
PlaceholderName.FlatTableColumns,
'ind1',
);
await enableBar(wizardPage, [-1, 1]);
await wizardPage.visualizationItemDialog.clickOnApplyButton();
// an indicator with a positive minimum and maximum scale values
await wizardPage.createNewFieldWithFormula('ind2', 'max([id]) - 3');
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'ind2',
);
await wizardPage.visualizationItemDialog.open(
PlaceholderName.FlatTableColumns,
'ind2',
);
await enableBar(wizardPage, [0.1, 1]);
await wizardPage.visualizationItemDialog.clickOnApplyButton();
// an indicator with a positive minimum and maximum scale values
await wizardPage.createNewFieldWithFormula('ind3', 'max([id]) - 3');
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'ind3',
);
await wizardPage.visualizationItemDialog.open(
PlaceholderName.FlatTableColumns,
'ind3',
);
await enableBar(wizardPage, [-1, -0.1]);
await wizardPage.visualizationItemDialog.clickOnApplyButton();
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'segment',
);
await expect(previewLoader).not.toBeVisible();
await expect(table).toBeVisible();
await expect(chartContainer).toHaveScreenshot();
},
);
datalensTest(
'Linear indicator with column background color @screenshot',
async ({page}) => {
const wizardPage = new WizardPage({page});
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
const table = wizardPage.chartkit.getTableLocator();
await wizardPage.createNewFieldWithFormula('SalesSum', 'sum([Sales])');
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'SalesSum',
);
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.FlatTableColumns,
'country',
);
await wizardPage.visualizationItemDialog.open(
PlaceholderName.FlatTableColumns,
'SalesSum',
);
await wizardPage.visualizationItemDialog.barsSettings.switchBars();
await wizardPage.page
.locator(slct(DialogFieldBackgroundSettingsQa.EnableButton))
.click();
await wizardPage.visualizationItemDialog.clickOnApplyButton();
await expect(previewLoader).not.toBeVisible();
await expect(table).toBeVisible();
await expect(chartContainer).toHaveScreenshot();
},
);
});
});
async function enableBar(wizardPage: WizardPage, scale: [number, number]) {
await wizardPage.visualizationItemDialog.barsSettings.switchBars();
await wizardPage.visualizationItemDialog.barsSettings.switchScaleMode('manual');
const scaleSettingsInputs = wizardPage.page
.locator(slct(DialogFieldBarsSettingsQa.ScaleInputsWrapper))
.getByRole('textbox');
const [min, max] = scale;
await scaleSettingsInputs.first().fill(String(min));
await scaleSettingsInputs.last().fill(String(max));
}