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

154 lines
5.2 KiB
TypeScript

import {expect} from '@playwright/test';
import {DialogFieldSubTotalsQa, WizardVisualizationId} from '../../../../src/shared';
import {ChartSettingsItems} from '../../../page-objects/wizard/ChartSettings';
import {PlaceholderName} from '../../../page-objects/wizard/SectionVisualization';
import WizardPage from '../../../page-objects/wizard/WizardPage';
import {openTestPage, slct, waitForCondition} from '../../../utils';
import {RobotChartsWizardUrls} from '../../../utils/constants';
import datalensTest from '../../../utils/playwright/globalTestDefinition';
datalensTest.describe('Wizard pagination in the pivot table', () => {
datalensTest.beforeEach(async ({page}) => {
const wizardPage = new WizardPage({page});
await openTestPage(page, RobotChartsWizardUrls.WizardForDatasetSampleCh);
await wizardPage.setVisualization(WizardVisualizationId.PivotTable);
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Measures, 'Sales');
});
datalensTest('Pagination should work for new pivot tables', async ({page}) => {
const wizardPage = new WizardPage({page});
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.PivotTableColumns,
'Region',
);
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Rows, 'Sub-Category');
await wizardPage.chartSettings.open();
await wizardPage.chartSettings.toggleSettingItem(ChartSettingsItems.Pagination, 'on');
await wizardPage.chartSettings.setLimit(10);
const apiRunPromise = wizardPage.waitForSuccessfulResponse('/api/run');
await wizardPage.chartSettings.apply();
await apiRunPromise;
const paginator = wizardPage.page.locator('.chartkit-table-paginator');
await expect(paginator).toBeVisible();
const rows = await wizardPage.chartkit.getTableRowsCount();
expect(rows).toEqual(10);
await wizardPage.chartkit.navigateToNextTablePage(1);
await waitForCondition(async () => {
const rowsPage2 = await wizardPage.chartkit.getTableRowsCount();
return rowsPage2 === 7;
}).catch(() => {
throw new Error('Pagination did not redraw the table');
});
});
datalensTest(
'If only totals are drawn on the last page, then there should be only 1 line',
async ({page}) => {
const wizardPage = new WizardPage({page});
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.PivotTableColumns,
'Region',
);
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Rows, 'Category');
await wizardPage.chartSettings.open();
await wizardPage.chartSettings.toggleSettingItem(ChartSettingsItems.Pagination, 'on');
await wizardPage.chartSettings.setLimit(3);
await wizardPage.chartSettings.apply();
await wizardPage.visualizationItemDialog.open(
PlaceholderName.PivotTableColumns,
'Region',
);
await wizardPage.visualizationItemDialog.toggleSwitch(
slct(DialogFieldSubTotalsQa.SubTotalsSwitch),
);
await wizardPage.visualizationItemDialog.clickOnApplyButton();
await wizardPage.chartkit.waitForPaginationExist();
await wizardPage.chartkit.navigateToNextTablePage(1);
const rows = wizardPage.chartkit.getTableLocator().locator('tbody tr');
await expect(rows).toHaveCount(1);
},
);
datalensTest('When enabling fallback, pagination should be disabled', async ({page}) => {
const wizardPage = new WizardPage({page});
await wizardPage.sectionVisualization.addFieldByClick(
PlaceholderName.PivotTableColumns,
'Region',
);
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Rows, 'Sub-Category');
await wizardPage.chartSettings.open();
await wizardPage.chartSettings.toggleSettingItem(ChartSettingsItems.Pagination, 'on');
await wizardPage.chartSettings.setLimit(3);
const apiRunPromise = wizardPage.waitForSuccessfulResponse('/api/run');
await wizardPage.chartSettings.apply();
await apiRunPromise;
const paginator = wizardPage.page.locator('.chartkit-table-paginator');
await expect(paginator).toBeVisible();
const rows = await wizardPage.chartkit.getTableRowsCount();
expect(rows).toEqual(3);
await wizardPage.chartSettings.open();
await wizardPage.chartSettings.toggleSettingItem(
ChartSettingsItems.PivotTableFallback,
'on',
);
const apiRunPromiseWithFallback = wizardPage.waitForSuccessfulResponse('/api/run');
await wizardPage.chartSettings.apply();
await apiRunPromiseWithFallback;
const paginatorWithFallback = wizardPage.page.locator('.chartkit-table-paginator');
await expect(paginatorWithFallback).not.toBeVisible();
const rowsWithFallback = await wizardPage.chartkit.getTableRowsCount();
expect(rowsWithFallback).toEqual(17);
});
});