140 lines
5.1 KiB
TypeScript
140 lines
5.1 KiB
TypeScript
import {Page} from '@playwright/test';
|
|
|
|
import {WizardVisualizationId} from '../../../page-objects/common/Visualization';
|
|
import {PlaceholderName} from '../../../page-objects/wizard/SectionVisualization';
|
|
import WizardPage from '../../../page-objects/wizard/WizardPage';
|
|
import {openTestPage, waitForCondition} from '../../../utils';
|
|
import {RobotChartsWizardUrls} from '../../../utils/constants';
|
|
import datalensTest from '../../../utils/playwright/globalTestDefinition';
|
|
|
|
import {pivotTableWithBigHeaderMock, pivotTableWithBigRowHeaderMock} from './mocks/headerMock';
|
|
|
|
datalensTest.describe('Wizard - Summary table, formation of columns and rows', () => {
|
|
datalensTest(
|
|
'The table must be successfully rendered with a complex three-level header in the header',
|
|
async ({page}: {page: Page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
|
|
await openTestPage(page, RobotChartsWizardUrls.PivotTableWithBigHeader);
|
|
|
|
const headRows = await wizardPage.chartkit.getHeadRowsTexts();
|
|
expect(headRows).toEqual(pivotTableWithBigHeaderMock.headRows);
|
|
|
|
const rows = await wizardPage.chartkit.getRowsTexts();
|
|
expect(rows).toEqual(pivotTableWithBigHeaderMock.rows);
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'The table must be successfully rendered with a complex three-level header in the rows',
|
|
async ({page}: {page: Page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
|
|
await openTestPage(page, RobotChartsWizardUrls.PivotTableWithBigRowHeader);
|
|
|
|
const headRows = await wizardPage.chartkit.getHeadRowsTexts();
|
|
expect(headRows).toEqual(pivotTableWithBigRowHeaderMock.headRows);
|
|
|
|
const rows = await wizardPage.chartkit.getRowsTexts();
|
|
expect(rows).toEqual(pivotTableWithBigRowHeaderMock.rows);
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'The table should be fully rendered if there is nothing in the columns',
|
|
async ({page}: {page: Page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
|
|
await openTestPage(page, RobotChartsWizardUrls.WizardForDatasetSampleCh);
|
|
|
|
await wizardPage.setVisualization(WizardVisualizationId.PivotTable);
|
|
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.Measures,
|
|
'Sales',
|
|
);
|
|
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.Measures,
|
|
'Profit',
|
|
);
|
|
|
|
await wizardPage.sectionVisualization.dragAndDropFieldBetweenPlaceholders({
|
|
from: PlaceholderName.PivotTableColumns,
|
|
to: PlaceholderName.Rows,
|
|
fieldName: 'Measure Names',
|
|
});
|
|
|
|
let rowsItems: string[] = [];
|
|
let headRowsItems: string[] = [];
|
|
|
|
await waitForCondition(async () => {
|
|
const headRows = await wizardPage.chartkit.getHeadRowsTexts();
|
|
|
|
const rows = await wizardPage.chartkit.getRowsTexts();
|
|
|
|
if (headRows.length && rows.length) {
|
|
headRowsItems = headRows[0];
|
|
rowsItems = rows[0];
|
|
}
|
|
|
|
return headRowsItems.length !== 0 && rowsItems.length !== 0;
|
|
}).catch(() => {
|
|
throw new Error('Table not rendered');
|
|
});
|
|
|
|
expect(headRowsItems.length).toEqual(rowsItems.length);
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'The table should draw all the indicators, even if they are repeated',
|
|
async ({page}: {page: Page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
|
|
await openTestPage(page, RobotChartsWizardUrls.WizardForDatasetSampleCh);
|
|
|
|
await wizardPage.setVisualization(WizardVisualizationId.PivotTable);
|
|
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.Measures,
|
|
'Profit',
|
|
);
|
|
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.Measures,
|
|
'Sales',
|
|
);
|
|
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.Measures,
|
|
'Profit',
|
|
);
|
|
|
|
let headRowsValues: string[] = [];
|
|
let rowsValues: string[] = [];
|
|
|
|
await waitForCondition(async () => {
|
|
const headRows = await wizardPage.chartkit.getHeadRowsTexts();
|
|
|
|
const rows = await wizardPage.chartkit.getRowsTexts();
|
|
|
|
headRowsValues = headRows[0];
|
|
rowsValues = rows[0];
|
|
|
|
const isProfitRenderedTwice =
|
|
headRowsValues[0] &&
|
|
headRowsValues[2] &&
|
|
headRowsValues[0] === headRowsValues[2] &&
|
|
rowsValues[0] === rowsValues[2];
|
|
|
|
return headRowsValues[1] === 'Sales' && isProfitRenderedTwice;
|
|
}).catch(() => {
|
|
throw new Error(
|
|
`The table was drawn with the wrong parameters: head:[${headRowsValues}], rows: [${rowsValues}]`,
|
|
);
|
|
});
|
|
},
|
|
);
|
|
});
|