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

156 lines
5.8 KiB
TypeScript

import {Page} from '@playwright/test';
import {WizardVisualizationId} from '../../../page-objects/common/Visualization';
import {RadioButtons} from '../../../page-objects/wizard/PlaceholderDialog';
import {PlaceholderName} from '../../../page-objects/wizard/SectionVisualization';
import WizardPage from '../../../page-objects/wizard/WizardPage';
import {openTestPage, waitForCondition} from '../../../utils';
import {RobotChartsWizardUrls} from '../../../utils/constants';
import datalensTest from '../../../utils/playwright/globalTestDefinition';
import {AxisNullsMode, PlaceholderId} from '../../../../src/shared';
datalensTest.describe('Wizard - placeholder dialog ("Empty values (null)") ', () => {
datalensTest(
'The setting has 3 options "Do not display", "Connect", "Display as 0"',
async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
const expectedValues = [
AxisNullsMode.Ignore,
AxisNullsMode.Connect,
AxisNullsMode.AsZero,
];
await openTestPage(page, RobotChartsWizardUrls.WizardForDatasetSampleCh);
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Y, 'Sales');
await wizardPage.placeholderDialog.open(PlaceholderId.Y);
let values: string[];
await waitForCondition(async () => {
values = await wizardPage.placeholderDialog.getRadioButtonValues(
RadioButtons.ConnectNulls,
);
return values.join(',') === expectedValues.join(',');
}).catch(() => {
throw new Error(
`Current options: ${values.join(',')}, expected: ${expectedValues.join(',')}`,
);
});
},
);
datalensTest('The default value is "Ignore" for bar-y', async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
await openTestPage(page, RobotChartsWizardUrls.WizardForDatasetSampleCh);
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Y, 'Sales');
await wizardPage.placeholderDialog.open(PlaceholderId.Y);
let selectedButtonValue: string;
const expectedValue = AxisNullsMode.Ignore;
await waitForCondition(async () => {
const selectedButton = await wizardPage.placeholderDialog.getCheckRadioButton(
RadioButtons.ConnectNulls,
);
selectedButtonValue = (await selectedButton?.getAttribute('value')) || '';
return selectedButtonValue === expectedValue;
}).catch(() => {
throw new Error(
`By default, ${selectedButtonValue} was selected, and ${expectedValue} was expected`,
);
});
});
datalensTest('The default value is "Connect" for line', async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
await openTestPage(page, RobotChartsWizardUrls.WizardForDatasetSampleCh);
await wizardPage.setVisualization(WizardVisualizationId.Line);
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Y, 'Sales');
await wizardPage.placeholderDialog.open(PlaceholderId.Y);
let selectedButtonValue: string;
const expectedValue = AxisNullsMode.Connect;
await waitForCondition(async () => {
const selectedButton = await wizardPage.placeholderDialog.getCheckRadioButton(
RadioButtons.ConnectNulls,
);
selectedButtonValue = (await selectedButton?.getAttribute('value')) || '';
return selectedButtonValue === expectedValue;
}).catch(() => {
throw new Error(
`By default, ${selectedButtonValue} was selected, and ${expectedValue} was expected`,
);
});
});
datalensTest(
'For a chart with areas, 3 settings are available and "Display as 0" is selected',
async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
const expectedValues = [
AxisNullsMode.Ignore,
AxisNullsMode.AsZero,
AxisNullsMode.UsePrevious,
];
await openTestPage(page, RobotChartsWizardUrls.WizardForDatasetSampleCh);
await wizardPage.setVisualization(WizardVisualizationId.Area);
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Y, 'Sales');
await wizardPage.placeholderDialog.open(PlaceholderId.Y);
let optionValues: string[];
await waitForCondition(async () => {
optionValues = await wizardPage.placeholderDialog.getRadioButtonValues(
RadioButtons.ConnectNulls,
);
return optionValues.join(',') === expectedValues.join(',');
}).catch(() => {
throw new Error(
`Current options: ${optionValues.join(
',',
)}, and expected: ${expectedValues.join(',')}`,
);
});
let selectedButtonText: string;
const expectedValue = AxisNullsMode.AsZero;
await waitForCondition(async () => {
const selectedButton = await wizardPage.placeholderDialog.getCheckRadioButton(
RadioButtons.ConnectNulls,
);
selectedButtonText = (await selectedButton?.getAttribute('value')) || '';
return selectedButtonText === expectedValue;
}).catch(() => {
throw new Error(
`By default, ${selectedButtonText} was selected, and ${expectedValue} was expected`,
);
});
},
);
});