2026-06-24 21:10:34 +05:00

66 lines
2.4 KiB
TypeScript

import {Page} from '@playwright/test';
import {TestParametrizationConfig} from '../../../types/config';
import {CommonUrls} from '../../../page-objects/constants/common-urls';
import QLPage from '../../../page-objects/ql/QLPage';
import {openTestPage, slct} from '../../../utils';
import datalensTest from '../../../utils/playwright/globalTestDefinition';
import {VisualizationsQa} from '../../../../src/shared';
const visualizationList = [
VisualizationsQa.Line,
VisualizationsQa.Area,
VisualizationsQa.Area100p,
VisualizationsQa.Column,
VisualizationsQa.Column100p,
VisualizationsQa.Bar,
VisualizationsQa.Bar100p,
VisualizationsQa.Scatter,
VisualizationsQa.Pie,
VisualizationsQa.Donut,
VisualizationsQa.Treemap,
VisualizationsQa.Metric,
VisualizationsQa.FlatTable,
];
datalensTest.describe('SQL validation of visualizations', () => {
datalensTest(
'Checking the list of available visualizations, a basic test should be written for each one',
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
const qlPage = new QLPage({page});
await openTestPage(page, config.ql.urls.NewQLChartWithConnection);
const visualizations = await qlPage.getVisualizations();
expect([...visualizationList].sort()).toEqual(visualizations.sort());
},
);
datalensTest(
`Correct draw for all available visualizations`,
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
for (const visualizationName of visualizationList) {
const qlPage = new QLPage({page});
await openTestPage(page, config.ql.urls.NewQLChartWithConnection);
await qlPage.page.click(`${slct('visualization-select-btn')}`);
await qlPage.page
.locator('.g-menu__list-item')
.getByTestId(visualizationName)
.click();
const apiRunRequest = qlPage.page.waitForRequest(
(request) => new URL(request.url()).pathname === CommonUrls.ApiRun,
);
await qlPage.setScript(config.ql.queries.salesBySalesFloat);
await qlPage.runScript();
await (await apiRunRequest).response();
await qlPage.waitForSomeSuccessfulRender();
}
},
);
});