datalens-ui/tests/suites/dash/params/editorParams.test.ts
2026-06-24 21:10:34 +05:00

86 lines
3.4 KiB
TypeScript

import {Page} from '@playwright/test';
import datalensTest from '../../../utils/playwright/globalTestDefinition';
import DashboardPage from '../../../page-objects/dashboard/DashboardPage';
import {clickSelectOption, openTestPage, slct} from '../../../utils';
import {RobotChartsDashboardUrls} from '../../../utils/constants';
import {ControlQA, DialogDashWidgetQA, ParamsSettingsQA} from '../../../../src/shared/constants/qa';
import {COMMON_DASH_SELECTORS} from '../constants';
const PARAMS = {
WIDGET_PARAM_NAME: 'Weather',
INITIAL_SELECTOR_PARAM_VALUE: '2017',
RESULT_SELECTOR_PARAM_VALUE: '2019',
EDITOR_PARAM_VALUE: 'Good',
};
const checkWidgetParam = async (page: Page, dashboardPage: DashboardPage) => {
await dashboardPage.forceEnterEditMode();
// edit the second widget - editor chart
const editWidgetControls = await page.$$(slct(ControlQA.controlSettings));
await editWidgetControls[1].click();
const paramsButton = await page.$(slct(ParamsSettingsQA.Open));
await paramsButton?.click();
const paramRows = await page.$$(slct(ParamsSettingsQA.ParamRow));
expect(paramRows.length).toEqual(1);
const paramInput = await page.waitForSelector(`${slct(ParamsSettingsQA.ParamTitle)} input`);
const paramInputValue = await paramInput.inputValue();
expect(paramInputValue).toBe(PARAMS.WIDGET_PARAM_NAME);
await page.waitForSelector(
`${slct(ParamsSettingsQA.ParamValue)} >> text=${PARAMS.EDITOR_PARAM_VALUE}`,
);
await page.click(slct(DialogDashWidgetQA.Cancel));
await dashboardPage.exitEditMode();
};
datalensTest.describe(`Dashboards - Parameters in editor widget`, () => {
datalensTest(
'Changes in the influencing selector do not affect the params in the editor chart widget',
async ({page}: {page: Page}) => {
const dashboardPage = new DashboardPage({page});
await openTestPage(page, RobotChartsDashboardUrls.DashboardWithEditorChartWithParams);
// check the selector param and the widget param in markdown
await page.waitForSelector(
`${slct(COMMON_DASH_SELECTORS.DASH_PLUGIN_WIDGET_BODY)} >> text=${
PARAMS.INITIAL_SELECTOR_PARAM_VALUE
}`,
);
await page.waitForSelector(
`${slct(COMMON_DASH_SELECTORS.DASH_PLUGIN_WIDGET_BODY)} >> text=${
PARAMS.EDITOR_PARAM_VALUE
}`,
);
await checkWidgetParam(page, dashboardPage);
// change the value in the selector
await dashboardPage.waitForSelector(slct(ControlQA.controlSelect));
await clickSelectOption(
page,
ControlQA.controlSelect,
PARAMS.RESULT_SELECTOR_PARAM_VALUE,
);
// check that the selector param has changed
await page.waitForSelector(
`${slct(COMMON_DASH_SELECTORS.DASH_PLUGIN_WIDGET_BODY)} >> text=${
PARAMS.RESULT_SELECTOR_PARAM_VALUE
}`,
);
// check that the widget param hasn't changed
await page.waitForSelector(
`${slct(COMMON_DASH_SELECTORS.DASH_PLUGIN_WIDGET_BODY)} >> text=${
PARAMS.EDITOR_PARAM_VALUE
}`,
);
// check that the param hasn't changed
await checkWidgetParam(page, dashboardPage);
},
);
});