151 lines
6.0 KiB
TypeScript
151 lines
6.0 KiB
TypeScript
import {Page, expect} from '@playwright/test';
|
|
|
|
import {WizardVisualizationId} from '../../../page-objects/common/Visualization';
|
|
import {CommonUrls} from '../../../page-objects/constants/common-urls';
|
|
import {RadioButtons} from '../../../page-objects/wizard/PlaceholderDialog';
|
|
import {PlaceholderName} from '../../../page-objects/wizard/SectionVisualization';
|
|
import WizardPage from '../../../page-objects/wizard/WizardPage';
|
|
import {RobotChartsWizardUrls} from '../../../utils/constants';
|
|
import datalensTest from '../../../utils/playwright/globalTestDefinition';
|
|
import {openTestPage} from '../../../utils';
|
|
import {AxisAutoScaleModes, PlaceholderId} from '../../../../src/shared';
|
|
|
|
datalensTest.describe('Wizard - placeholder dialog ("Autoscaling")', () => {
|
|
datalensTest.beforeEach(async ({page}: {page: Page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
|
|
await openTestPage(page, RobotChartsWizardUrls.WizardForDatasetSampleCh);
|
|
|
|
await wizardPage.setVisualization(WizardVisualizationId.Line);
|
|
|
|
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.X, 'Category');
|
|
});
|
|
|
|
// todo: remove along with GravityChartsForLineAreaAndBarX feature flag
|
|
datalensTest('Scaling from 0 to max works in the Y section', async ({page}: {page: Page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
const hcMinYAxisLabel = wizardPage.page
|
|
.locator('.highcharts-yaxis-labels')
|
|
.first()
|
|
.locator('text')
|
|
.first();
|
|
const minYAxisLabel = hcMinYAxisLabel.or(
|
|
wizardPage.page
|
|
.locator('.gcharts-y-axis')
|
|
.first()
|
|
.locator('.gcharts-y-axis__label')
|
|
.first(),
|
|
);
|
|
|
|
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Y, 'Sales');
|
|
|
|
await wizardPage.placeholderDialog.open(PlaceholderId.Y);
|
|
|
|
await wizardPage.placeholderDialog.toggleRadioButton(
|
|
RadioButtons.AutoScale,
|
|
AxisAutoScaleModes.ZeroMax,
|
|
);
|
|
|
|
await wizardPage.placeholderDialog.apply();
|
|
await wizardPage.chartkit.waitUntilLoaderExists();
|
|
|
|
await expect(minYAxisLabel).toHaveText('0');
|
|
});
|
|
|
|
datalensTest(
|
|
'Scaling from 0 to max works in the "Y2" section',
|
|
async ({page}: {page: Page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
const hcMinY2AxisLabel = wizardPage.page
|
|
.locator('.highcharts-yaxis-labels')
|
|
.last()
|
|
.locator('text')
|
|
.first();
|
|
const minY2AxisLabel = hcMinY2AxisLabel.or(
|
|
wizardPage.page
|
|
.locator('.gcharts-y-axis')
|
|
.last()
|
|
.locator('.gcharts-y-axis__label')
|
|
.first(),
|
|
);
|
|
|
|
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Y2, 'Sales');
|
|
|
|
await wizardPage.placeholderDialog.open(PlaceholderId.Y2);
|
|
|
|
await wizardPage.placeholderDialog.toggleRadioButton(
|
|
RadioButtons.AutoScale,
|
|
AxisAutoScaleModes.ZeroMax,
|
|
);
|
|
|
|
await wizardPage.placeholderDialog.apply();
|
|
await wizardPage.chartkit.waitUntilLoaderExists();
|
|
|
|
await expect(minY2AxisLabel).toHaveText('0');
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'If there is a field in "Y" and "Y2", then you can adjust the scaling for each axis separately',
|
|
async ({page}: {page: Page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
const hcYAxisLabelsLocator = wizardPage.page.locator('.highcharts-yaxis-labels');
|
|
const gravityChartsYAxisLocator = wizardPage.page.locator('.gcharts-y-axis');
|
|
const minYAxisLabel = hcYAxisLabelsLocator
|
|
.first()
|
|
.locator('text')
|
|
.first()
|
|
.or(gravityChartsYAxisLocator.first().locator('.gcharts-y-axis__label').first());
|
|
const minY2AxisLabel = hcYAxisLabelsLocator
|
|
.last()
|
|
.locator('text')
|
|
.first()
|
|
.or(gravityChartsYAxisLocator.last().locator('.gcharts-y-axis__label').first());
|
|
|
|
let successfulResponsePromise = wizardPage.waitForSuccessfulResponse(CommonUrls.ApiRun);
|
|
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Y, 'Sales');
|
|
await successfulResponsePromise;
|
|
|
|
successfulResponsePromise = wizardPage.waitForSuccessfulResponse(CommonUrls.ApiRun);
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.Y2,
|
|
'Customer ID',
|
|
);
|
|
// Sometimes tests fail due to slow server responses.
|
|
// Until the problem with canceling requests is fixed, we will wait for the response of api/run.
|
|
await successfulResponsePromise;
|
|
|
|
await expect(minYAxisLabel).not.toHaveText('0');
|
|
await expect(minY2AxisLabel).not.toHaveText('0');
|
|
|
|
await wizardPage.placeholderDialog.open(PlaceholderId.Y);
|
|
|
|
await wizardPage.placeholderDialog.toggleRadioButton(
|
|
RadioButtons.AutoScale,
|
|
AxisAutoScaleModes.ZeroMax,
|
|
);
|
|
|
|
successfulResponsePromise = wizardPage.waitForSuccessfulResponse(CommonUrls.ApiRun);
|
|
await wizardPage.placeholderDialog.apply();
|
|
await successfulResponsePromise;
|
|
|
|
await expect(minYAxisLabel).toHaveText('0');
|
|
await expect(minY2AxisLabel).not.toHaveText('0');
|
|
|
|
await wizardPage.placeholderDialog.open(PlaceholderId.Y2);
|
|
|
|
await wizardPage.placeholderDialog.toggleRadioButton(
|
|
RadioButtons.AutoScale,
|
|
AxisAutoScaleModes.ZeroMax,
|
|
);
|
|
|
|
await wizardPage.placeholderDialog.apply();
|
|
|
|
await wizardPage.chartkit.waitUntilLoaderExists();
|
|
|
|
await expect(minYAxisLabel).toHaveText('0');
|
|
await expect(minY2AxisLabel).toHaveText('0');
|
|
},
|
|
);
|
|
});
|