125 lines
4.4 KiB
TypeScript
125 lines
4.4 KiB
TypeScript
import {Page} from '@playwright/test';
|
|
|
|
import {PlaceholderName} from '../../../page-objects/wizard/SectionVisualization';
|
|
import WizardPage from '../../../page-objects/wizard/WizardPage';
|
|
import {
|
|
getXAxisValues,
|
|
openTestPage,
|
|
waitForCondition,
|
|
waitForValidSearchParams,
|
|
} from '../../../utils';
|
|
import {RobotChartsWizardUrls} from '../../../utils/constants';
|
|
import datalensTest from '../../../utils/playwright/globalTestDefinition';
|
|
|
|
datalensTest.describe('Wizard - Parameters from URLParams', () => {
|
|
datalensTest(
|
|
'The field will be parsed as a parameter from URLParams, if such a field in the dataset is a parameter',
|
|
async ({page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
|
|
await openTestPage(page, RobotChartsWizardUrls.WizardWithParameterizedLocalField, {
|
|
local_parameter: 'Technology',
|
|
});
|
|
|
|
await waitForCondition(async () => {
|
|
const fields = await wizardPage.sectionVisualization.getPlaceholderItems(
|
|
PlaceholderName.DashboardParameters,
|
|
);
|
|
|
|
const textValues = await Promise.all(fields.map((field) => field.textContent()));
|
|
|
|
return fields.length === 1 && textValues[0] === 'local_parameter: Technology';
|
|
}).catch(() => {
|
|
throw new Error('The parameter from URLParams has not appeared in the chart');
|
|
});
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'The parameter from URLParams will overwrite the parameter value in the chart',
|
|
async ({page, context}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
|
|
await openTestPage(page, RobotChartsWizardUrls.WizardWithParameterizedLocalField);
|
|
|
|
await wizardPage.sectionVisualization.replaceFieldByDragAndDrop(
|
|
PlaceholderName.X,
|
|
'Category',
|
|
'parameterized_field',
|
|
);
|
|
|
|
const parameterizedXAxisValues = ['Office Supplies', 'parameter_title', 'Technology'];
|
|
|
|
await waitForCondition(async () => {
|
|
const xAxisValues = await getXAxisValues(page);
|
|
|
|
return xAxisValues.join(',') === parameterizedXAxisValues.join(',');
|
|
});
|
|
|
|
const parameterizedXAxisValuesWithUrlParameter = [
|
|
'Furniture',
|
|
'Office Supplies',
|
|
'parameter_title',
|
|
];
|
|
|
|
const secondPage: Page = await context.newPage();
|
|
|
|
const secondWizardPage = new WizardPage({page: secondPage});
|
|
|
|
await openTestPage(
|
|
secondPage,
|
|
RobotChartsWizardUrls.WizardWithParameterizedLocalField,
|
|
{
|
|
local_parameter: 'Technology',
|
|
},
|
|
);
|
|
|
|
await secondWizardPage.sectionVisualization.replaceFieldByDragAndDrop(
|
|
PlaceholderName.X,
|
|
'Category',
|
|
'parameterized_field',
|
|
);
|
|
|
|
await waitForCondition(async () => {
|
|
const xAxisValues = await getXAxisValues(secondPage);
|
|
|
|
return xAxisValues.join(',') === parameterizedXAxisValuesWithUrlParameter.join(',');
|
|
}).catch(() => {
|
|
throw new Error(
|
|
'The parameter from URLParams has not appeared in the parameterized formula',
|
|
);
|
|
});
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'Removing a parameter from the Parameters section from the dashboard will remove the parameter from URLParams as well',
|
|
async ({page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
|
|
await openTestPage(page, RobotChartsWizardUrls.WizardWithParameterizedLocalField, {
|
|
local_parameter: 'Technology',
|
|
});
|
|
|
|
await waitForValidSearchParams({
|
|
page,
|
|
error: 'URLParams do not contain the parameter',
|
|
param: 'local_parameter',
|
|
shouldIncludeParam: true,
|
|
});
|
|
|
|
await wizardPage.sectionVisualization.removeFieldByClick(
|
|
PlaceholderName.DashboardParameters,
|
|
'local_parameter',
|
|
);
|
|
|
|
await waitForValidSearchParams({
|
|
page,
|
|
error: 'The parameter from the dashboard has not been removed from URLParams',
|
|
shouldIncludeParam: false,
|
|
param: 'local_parameter',
|
|
});
|
|
},
|
|
);
|
|
});
|