datalens-ui/tests/suites/wizard/fields/editField.test.ts
2026-06-24 20:31:05 +05:00

113 lines
4.3 KiB
TypeScript

import {Page} from '@playwright/test';
import {WizardVisualizationId} from '../../../page-objects/common/Visualization';
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';
const getAllPlaceholderItems = async (wizardPage: WizardPage) => {
return await Promise.all([
...(await wizardPage.sectionVisualization.getPlaceholderItems(PlaceholderName.X)),
...(await wizardPage.sectionVisualization.getPlaceholderItems(PlaceholderName.Y)),
...(await wizardPage.sectionVisualization.getPlaceholderItems(PlaceholderName.Y2)),
]);
};
datalensTest.describe('Wizard Fields', () => {
datalensTest.beforeEach(async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
await openTestPage(page, RobotChartsWizardUrls.WizardForDatasetSampleCh);
await wizardPage.setVisualization(WizardVisualizationId.Line);
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.X, 'Category');
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Y, 'Profit');
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Y2, 'Sales');
});
datalensTest(
"Changing Y's title should not affect other fields",
async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
const expectedXPlaceholderFieldName = 'Category';
const expectedYPlaceholderFieldName = 'Profit-Changed';
const expectedY2PlaceholderFieldName = 'Sales';
const expectedResult = [
expectedXPlaceholderFieldName,
expectedYPlaceholderFieldName,
expectedY2PlaceholderFieldName,
].join();
let actualResult = '';
await wizardPage.visualizationItemDialog.open(PlaceholderName.Y, 'Profit');
await wizardPage.visualizationItemDialog.changeTitle('Profit-Changed');
await wizardPage.visualizationItemDialog.clickOnApplyButton();
await waitForCondition(async () => {
const placeholderItems = await getAllPlaceholderItems(wizardPage);
const fieldNames = await Promise.all(placeholderItems.map((el) => el.innerText()));
actualResult = fieldNames.join();
return actualResult === expectedResult;
}).catch((error) => {
console.error(error);
throw new Error(
`expectedResult: ${expectedResult} !== actualResult: ${actualResult}`,
);
});
},
);
datalensTest(
'Changing the title of Y2, should not affect other fields',
async ({page}: {page: Page}) => {
const wizardPage = new WizardPage({page});
const expectedXPlaceholderFieldName = 'Category';
const expectedYPlaceholderFieldName = 'Profit';
const expectedY2PlaceholderFieldName = 'Sales-Changed';
const expectedResult = [
expectedXPlaceholderFieldName,
expectedYPlaceholderFieldName,
expectedY2PlaceholderFieldName,
].join();
let actualResult = '';
await wizardPage.visualizationItemDialog.open(PlaceholderName.Y2, 'Sales');
await wizardPage.visualizationItemDialog.changeTitle('Sales-Changed');
await wizardPage.visualizationItemDialog.clickOnApplyButton();
await waitForCondition(async () => {
const placeholderItems = await getAllPlaceholderItems(wizardPage);
const fieldNames = await Promise.all(placeholderItems.map((el) => el.innerText()));
actualResult = fieldNames.join();
return actualResult === expectedResult;
}).catch((error) => {
console.error(error);
throw new Error(
`expectedResult: ${expectedResult} !== actualResult: ${actualResult}`,
);
});
},
);
});