261 lines
12 KiB
TypeScript
261 lines
12 KiB
TypeScript
import {Page, expect} from '@playwright/test';
|
|
import {ChartkitMenuDialogsQA} from '../../../../src/shared/constants';
|
|
|
|
import WizardPage from '../../../page-objects/wizard/WizardPage';
|
|
import {openTestPage, slct} from '../../../utils';
|
|
import datalensTest from '../../../utils/playwright/globalTestDefinition';
|
|
import {MenuItemsIds} from '../../../../src/shared';
|
|
import type {TestParametrizationConfig} from '../../../types/config';
|
|
|
|
const PARAMS = {
|
|
// the number of menu items of chart including separators with non-displayed export
|
|
WIZARD_EDIT_MENU_ITEMS_COUNT: 5,
|
|
WIZARD_PREVIEW_MENU_ITEMS_COUNT: 7,
|
|
QL_EDIT_MENU_ITEMS_COUNT: 5,
|
|
QL_PREVIEW_MENU_ITEMS_COUNT: 7,
|
|
|
|
WIZARD_ENABLED_EXPORT_ITEMS_COUNT: 6,
|
|
WIZARD_PREVIEW_ENABLED_EXPORT_ITEMS_COUNT: 8,
|
|
|
|
QL_ENABLED_EXPORT_ITEMS_COUNT: 6,
|
|
QL_PREVIEW_ENABLED_EXPORT_ITEMS_COUNT: 8,
|
|
};
|
|
|
|
datalensTest.describe('Chart export availability', () => {
|
|
datalensTest.describe('Wizard with forbidden export', () => {
|
|
datalensTest(
|
|
'Export menu item is disabled if export is forbidden on connection',
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
await openTestPage(page, config.charts.urls.WizardWithForbiddenOnConnectionExport);
|
|
await wizardPage.waitForSuccessfulResponse('/api/run');
|
|
|
|
await wizardPage.chartkit.openChartMenu();
|
|
|
|
const menuItemsCount = await page
|
|
.locator(`${slct(ChartkitMenuDialogsQA.chartMenuDropDown)} > li`)
|
|
.count();
|
|
|
|
const exportMenuItem = page.locator(slct(MenuItemsIds.EXPORT));
|
|
const openAsTableMenuItem = page.locator(slct(MenuItemsIds.OPEN_AS_TABLE));
|
|
|
|
expect(menuItemsCount).toEqual(PARAMS.WIZARD_EDIT_MENU_ITEMS_COUNT);
|
|
expect(await exportMenuItem.getAttribute('tabindex')).toBe('-1');
|
|
await expect(openAsTableMenuItem).toHaveCount(0);
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'Export menu item is disabled if export is forbidden on dataset',
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
await openTestPage(page, config.charts.urls.WizardWithForbiddenOnDatasetExport);
|
|
await wizardPage.waitForSuccessfulResponse('/api/run');
|
|
|
|
await wizardPage.chartkit.openChartMenu();
|
|
|
|
const menuItemsCount = await page
|
|
.locator(`${slct(ChartkitMenuDialogsQA.chartMenuDropDown)} > li`)
|
|
.count();
|
|
|
|
const exportMenuItem = page.locator(slct(MenuItemsIds.EXPORT));
|
|
const openAsTableMenuItem = page.locator(slct(MenuItemsIds.OPEN_AS_TABLE));
|
|
|
|
expect(menuItemsCount).toEqual(PARAMS.WIZARD_EDIT_MENU_ITEMS_COUNT);
|
|
expect(await exportMenuItem.getAttribute('tabindex')).toBe('-1');
|
|
await expect(openAsTableMenuItem).toHaveCount(0);
|
|
},
|
|
);
|
|
});
|
|
|
|
datalensTest(
|
|
'Ql - Export menu item is disabled if export is forbidden on connection',
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
const apiRunPromise = wizardPage.waitForSuccessfulResponse('/api/run');
|
|
await openTestPage(page, config.charts.urls.QLWithForbiddenOnConnectionExport);
|
|
await apiRunPromise;
|
|
|
|
await wizardPage.chartkit.openChartMenu();
|
|
|
|
const menuItemsCount = await page
|
|
.locator(`${slct(ChartkitMenuDialogsQA.chartMenuDropDown)} > li`)
|
|
.count();
|
|
|
|
const exportMenuItem = page.locator(slct(MenuItemsIds.EXPORT));
|
|
const openAsTableMenuItem = page.locator(slct(MenuItemsIds.OPEN_AS_TABLE));
|
|
|
|
expect(menuItemsCount).toEqual(PARAMS.QL_EDIT_MENU_ITEMS_COUNT);
|
|
expect(await exportMenuItem.getAttribute('tabindex')).toBe('-1');
|
|
await expect(openAsTableMenuItem).toHaveCount(0);
|
|
},
|
|
);
|
|
|
|
datalensTest.describe('Preview with forbidden export', () => {
|
|
datalensTest(
|
|
'Wizard preview - Export menu item is disabled if export is forbidden on connection',
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
await openTestPage(
|
|
page,
|
|
config.charts.urls.PreviewWizardWithForbiddenOnConnectionExport,
|
|
);
|
|
await wizardPage.waitForSuccessfulResponse('/api/run');
|
|
|
|
await wizardPage.chartkit.openChartMenu();
|
|
|
|
const menuItemsCount = await page
|
|
.locator(`${slct(ChartkitMenuDialogsQA.chartMenuDropDown)} > li`)
|
|
.count();
|
|
|
|
const exportMenuItem = page.locator(slct(MenuItemsIds.EXPORT));
|
|
const openAsTableMenuItem = page.locator(slct(MenuItemsIds.OPEN_AS_TABLE));
|
|
|
|
expect(menuItemsCount).toEqual(PARAMS.WIZARD_PREVIEW_MENU_ITEMS_COUNT);
|
|
expect(await exportMenuItem.getAttribute('tabindex')).toBe('-1');
|
|
await expect(openAsTableMenuItem).toHaveCount(0);
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'Wizard preview - Export menu item is disabled if export is forbidden on dataset',
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
await openTestPage(
|
|
page,
|
|
config.charts.urls.PreviewWizardWithForbiddenOnDatasetExport,
|
|
);
|
|
await wizardPage.waitForSuccessfulResponse('/api/run');
|
|
|
|
await wizardPage.chartkit.openChartMenu();
|
|
|
|
const menuItemsCount = await page
|
|
.locator(`${slct(ChartkitMenuDialogsQA.chartMenuDropDown)} > li`)
|
|
.count();
|
|
|
|
const exportMenuItem = page.locator(slct(MenuItemsIds.EXPORT));
|
|
const openAsTableMenuItem = page.locator(slct(MenuItemsIds.OPEN_AS_TABLE));
|
|
|
|
expect(menuItemsCount).toEqual(PARAMS.WIZARD_PREVIEW_MENU_ITEMS_COUNT);
|
|
expect(await exportMenuItem.getAttribute('tabindex')).toBe('-1');
|
|
await expect(openAsTableMenuItem).toHaveCount(0);
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'Ql preview - Export menu item is disabled if export is forbidden on connection',
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
const apiRunPromise = wizardPage.waitForSuccessfulResponse('/api/run');
|
|
await openTestPage(page, config.charts.urls.PreviewQLWithForbiddenExport);
|
|
await apiRunPromise;
|
|
|
|
await wizardPage.chartkit.openChartMenu();
|
|
|
|
const menuItemsCount = await page
|
|
.locator(`${slct(ChartkitMenuDialogsQA.chartMenuDropDown)} > li`)
|
|
.count();
|
|
|
|
const exportMenuItem = page.locator(slct(MenuItemsIds.EXPORT));
|
|
const openAsTableMenuItem = page.locator(slct(MenuItemsIds.OPEN_AS_TABLE));
|
|
|
|
expect(menuItemsCount).toEqual(PARAMS.QL_PREVIEW_MENU_ITEMS_COUNT);
|
|
expect(await exportMenuItem.getAttribute('tabindex')).toBe('-1');
|
|
await expect(openAsTableMenuItem).toHaveCount(0);
|
|
},
|
|
);
|
|
});
|
|
|
|
datalensTest.describe('Export available', () => {
|
|
datalensTest(
|
|
'Wizard preview - Export menu item is enabled, open as table menu item is enabled',
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
await openTestPage(page, config.charts.urls.PreviewWizardWithEnabledExport);
|
|
await wizardPage.waitForSuccessfulResponse('/api/run');
|
|
|
|
await wizardPage.chartkit.openChartMenu();
|
|
|
|
const menuItemsCount = await page
|
|
.locator(`${slct(ChartkitMenuDialogsQA.chartMenuDropDown)} > li`)
|
|
.count();
|
|
|
|
const exportMenuItem = page.locator(slct(MenuItemsIds.EXPORT));
|
|
const openAsTableMenuItem = page.locator(slct(MenuItemsIds.OPEN_AS_TABLE));
|
|
|
|
expect(menuItemsCount).toEqual(PARAMS.WIZARD_PREVIEW_ENABLED_EXPORT_ITEMS_COUNT);
|
|
expect(await exportMenuItem.getAttribute('tabindex')).not.toBe('-1');
|
|
expect(await openAsTableMenuItem.getAttribute('tabindex')).not.toBe('-1');
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'Wizard - Export menu item is enabled, open as table menu item is enabled',
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
await openTestPage(page, config.charts.urls.WizardWithEnabledExport);
|
|
await wizardPage.waitForSuccessfulResponse('/api/run');
|
|
|
|
await wizardPage.chartkit.openChartMenu();
|
|
|
|
const menuItemsCount = await page
|
|
.locator(`${slct(ChartkitMenuDialogsQA.chartMenuDropDown)} > li`)
|
|
.count();
|
|
|
|
const exportMenuItem = page.locator(slct(MenuItemsIds.EXPORT));
|
|
const openAsTableMenuItem = page.locator(slct(MenuItemsIds.OPEN_AS_TABLE));
|
|
|
|
expect(menuItemsCount).toEqual(PARAMS.WIZARD_ENABLED_EXPORT_ITEMS_COUNT);
|
|
expect(await exportMenuItem.getAttribute('tabindex')).not.toBe('-1');
|
|
expect(await openAsTableMenuItem.getAttribute('tabindex')).not.toBe('-1');
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'QL preview - Export menu item is enabled, open as table menu item is enabled',
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
const apiRunPromise = wizardPage.waitForSuccessfulResponse('/api/run');
|
|
await openTestPage(page, config.charts.urls.PreviewQLColumnChart);
|
|
await apiRunPromise;
|
|
|
|
await wizardPage.chartkit.openChartMenu();
|
|
|
|
const menuItemsCount = await page
|
|
.locator(`${slct(ChartkitMenuDialogsQA.chartMenuDropDown)} > li`)
|
|
.count();
|
|
|
|
const exportMenuItem = page.locator(slct(MenuItemsIds.EXPORT));
|
|
const openAsTableMenuItem = page.locator(slct(MenuItemsIds.OPEN_AS_TABLE));
|
|
|
|
expect(menuItemsCount).toEqual(PARAMS.QL_PREVIEW_ENABLED_EXPORT_ITEMS_COUNT);
|
|
expect(await exportMenuItem.getAttribute('tabindex')).not.toBe('-1');
|
|
expect(await openAsTableMenuItem.getAttribute('tabindex')).not.toBe('-1');
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'QL - Export menu item is enabled, open as table menu item is enabled',
|
|
async ({page, config}: {page: Page; config: TestParametrizationConfig}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
const apiRunPromise = wizardPage.waitForSuccessfulResponse('/api/run');
|
|
await openTestPage(page, config.charts.urls.QLColumnChart);
|
|
await apiRunPromise;
|
|
|
|
await wizardPage.chartkit.openChartMenu();
|
|
|
|
const menuItemsCount = await page
|
|
.locator(`${slct(ChartkitMenuDialogsQA.chartMenuDropDown)} > li`)
|
|
.count();
|
|
|
|
const exportMenuItem = page.locator(slct(MenuItemsIds.EXPORT));
|
|
const openAsTableMenuItem = page.locator(slct(MenuItemsIds.OPEN_AS_TABLE));
|
|
|
|
expect(menuItemsCount).toEqual(PARAMS.QL_ENABLED_EXPORT_ITEMS_COUNT);
|
|
expect(await exportMenuItem.getAttribute('tabindex')).not.toBe('-1');
|
|
expect(await openAsTableMenuItem.getAttribute('tabindex')).not.toBe('-1');
|
|
},
|
|
);
|
|
});
|
|
});
|