130 lines
4.8 KiB
TypeScript
130 lines
4.8 KiB
TypeScript
import {Page} from '@playwright/test';
|
|
|
|
import DashboardPage from '../../../page-objects/dashboard/DashboardPage';
|
|
import {slct, waitForCondition} from '../../../utils';
|
|
import datalensTest from '../../../utils/playwright/globalTestDefinition';
|
|
import {DashCommonQa, 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 - Relations (new)', () => {
|
|
datalensTest.beforeEach(
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const dashboardPage = new DashboardPage({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({
|
|
name: config.dash.charts.ChartCityPie.name,
|
|
url: config.dash.charts.ChartCityPie.url,
|
|
hideTitle: true,
|
|
});
|
|
},
|
|
});
|
|
},
|
|
);
|
|
datalensTest.afterEach(async ({page}: {page: Page}) => {
|
|
const dashboardPage = new DashboardPage({page});
|
|
await dashboardPage.deleteDash();
|
|
});
|
|
datalensTest(
|
|
'Adding a chart and selector with manual input of values, creating a link (new relations)',
|
|
async ({page}: {page: Page}) => {
|
|
const dashboardPage = new DashboardPage({page});
|
|
await dashboardPage.enterEditMode();
|
|
|
|
const selectorElem = await dashboardPage.controlActions.getDashControlLinksIconElem();
|
|
|
|
await dashboardPage.setupNewLinks({
|
|
linkType: DashRelationTypes.output,
|
|
firstParamName: PARAMS.CONTROL_FIELD_NAME,
|
|
secondParamName: PARAMS.CHART_FIELD,
|
|
widgetElem: selectorElem,
|
|
});
|
|
|
|
await dashboardPage.clickSaveButton();
|
|
|
|
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;
|
|
});
|
|
},
|
|
);
|
|
datalensTest('Remove alias (new relations)', async ({page}: {page: Page}) => {
|
|
const dashboardPage = new DashboardPage({page});
|
|
await dashboardPage.enterEditMode();
|
|
|
|
const selectorElem = await dashboardPage.controlActions.getDashControlLinksIconElem();
|
|
|
|
await dashboardPage.setupNewLinks({
|
|
linkType: DashRelationTypes.output,
|
|
firstParamName: PARAMS.CONTROL_FIELD_NAME,
|
|
secondParamName: PARAMS.CHART_FIELD,
|
|
widgetElem: selectorElem,
|
|
});
|
|
|
|
await dashboardPage.saveChanges();
|
|
await dashboardPage.page.reload();
|
|
|
|
await dashboardPage.enterEditMode();
|
|
|
|
// open dialog relations by click on control item links icon
|
|
await selectorElem.click();
|
|
// open aliases list popup
|
|
await page.locator(slct(DashCommonQa.AliasShowBtn)).first().click();
|
|
// expand added aliases list
|
|
await page.locator(slct(DashCommonQa.AliasesListCollapse)).click();
|
|
|
|
// hover to show controls
|
|
await page.hover(slct(DashCommonQa.AliasItem));
|
|
// remove alias
|
|
await page.locator(slct(DashCommonQa.AliasRemoveBtn)).click();
|
|
|
|
// apply all
|
|
await dashboardPage.applyAliasesChanges();
|
|
await dashboardPage.applyRelationsChanges();
|
|
await dashboardPage.saveChanges();
|
|
|
|
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 > 2;
|
|
});
|
|
});
|
|
});
|