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

49 lines
2.1 KiB
TypeScript

import {Page} from '@playwright/test';
import DashboardPage from '../../../page-objects/dashboard/DashboardPage';
import {clickSelectOption, openTestPage, slct} from '../../../utils';
import {RobotChartsDashboardUrls} from '../../../utils/constants';
import datalensTest from '../../../utils/playwright/globalTestDefinition';
const PARAM_NAME = 'eventx';
const PARAM_VALUE = ['eventmonth'];
const API_RUN_TIMEOUT = 3000;
const SELECTOR_KEY = 'chartkit-control-select';
datalensTest.describe('Dashboards - States', () => {
datalensTest(
'Checking the sending of correct data and the correct number of requests when changing the state for an external selector',
async ({page}: {page: Page}) => {
const dashboardPage = new DashboardPage({page});
await openTestPage(page, RobotChartsDashboardUrls.DashboardWithExternalSelector);
// We are waiting for the selector to be drawn and all the initial requests to be drawn, respectively
await page.waitForSelector(`${slct(SELECTOR_KEY)}`);
// Initialize subscription to requests during timeout
const promise = dashboardPage.waitForResponses('/api/run', API_RUN_TIMEOUT);
// Select the selector value
await clickSelectOption(page, SELECTOR_KEY, 'Month');
// Getting an array of requests /api/run
const responses = await promise;
// We check that only one request /api/run left when changing the state
expect(responses).toHaveLength(1);
const response = responses[0];
let requestData: {params: Record<string, string>} = {params: {}};
try {
const request = await response.request();
requestData = JSON.parse(request.postData() || '');
} catch (e) {
throw new Error(
'Incorrect parameters format for /api/run request after state change',
);
}
// Check that the /api/run request leaves with the necessary parameters when the state changes
expect(requestData.params[PARAM_NAME]).toEqual(PARAM_VALUE);
},
);
});