70 lines
2.6 KiB
TypeScript
70 lines
2.6 KiB
TypeScript
import {Page} from '@playwright/test';
|
|
|
|
import DashboardPage from '../../../page-objects/dashboard/DashboardPage';
|
|
import {openTestPage, waitForCondition} from '../../../utils';
|
|
import datalensTest from '../../../utils/playwright/globalTestDefinition';
|
|
import {DashRelationTypes} from '../../../../src/shared';
|
|
import {TestParametrizationConfig} from '../../../types/config';
|
|
|
|
const SELECTORS = {
|
|
CHART_LEGEND_ITEM: '.gcharts-legend__item',
|
|
CONTROL_SELECT_ITEMS_KEY: 'chartkit-control-select-items',
|
|
};
|
|
const PARAMS = {
|
|
CONTROL_TITLE: 'test-control',
|
|
CONTROL_FIELD_NAME: 'test-control-field',
|
|
CONTROL_ITEMS: ['Dallas', 'Chicago'],
|
|
CHART_FIELD: 'City',
|
|
};
|
|
|
|
datalensTest.describe('Dashboards - Basic functionality', () => {
|
|
datalensTest(
|
|
'Adding a chart and selector with manual input of values, creating a link',
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const dashboardPage = new DashboardPage({page});
|
|
// some page need to be loaded so we can get data of feature flag from DL var
|
|
await openTestPage(page, '/');
|
|
|
|
await dashboardPage.createDashboard({
|
|
editDash: async () => {
|
|
await dashboardPage.controlActions.addSelector({
|
|
appearance: {title: PARAMS.CONTROL_TITLE},
|
|
fieldName: PARAMS.CONTROL_FIELD_NAME,
|
|
items: PARAMS.CONTROL_ITEMS,
|
|
});
|
|
|
|
await dashboardPage.addChart(config.dash.charts.ChartCityPie);
|
|
|
|
await dashboardPage.setupNewLinks({
|
|
linkType: DashRelationTypes.output,
|
|
firstParamName: PARAMS.CONTROL_FIELD_NAME,
|
|
secondParamName: PARAMS.CHART_FIELD,
|
|
selectorName: PARAMS.CONTROL_TITLE,
|
|
});
|
|
},
|
|
});
|
|
|
|
await waitForCondition(async () => {
|
|
const elems = await page.$$(SELECTORS.CHART_LEGEND_ITEM);
|
|
return elems.length > 2;
|
|
});
|
|
|
|
const defaultSelectValue = PARAMS.CONTROL_ITEMS[PARAMS.CONTROL_ITEMS.length - 1];
|
|
|
|
await dashboardPage.setSelectWithTitle(
|
|
{title: PARAMS.CONTROL_TITLE},
|
|
defaultSelectValue,
|
|
);
|
|
|
|
// making sure that the request has then completed successfully
|
|
await waitForCondition(async () => {
|
|
const elems = await page.$$(SELECTORS.CHART_LEGEND_ITEM);
|
|
|
|
return elems.length === 1;
|
|
});
|
|
|
|
await dashboardPage.deleteDash();
|
|
},
|
|
);
|
|
});
|