123 lines
4.9 KiB
TypeScript
123 lines
4.9 KiB
TypeScript
import {Page} from '@playwright/test';
|
|
|
|
import DashboardPage from '../../../page-objects/dashboard/DashboardPage';
|
|
import {RobotChartsDashboardUrls} from '../../../utils/constants';
|
|
import datalensTest from '../../../utils/playwright/globalTestDefinition';
|
|
import {getUniqueTimestamp, openTestPage, slct} from '../../../utils';
|
|
import {dragAndDropListItem, openTabPopupWidgetOrder} from '../helpers';
|
|
import {DashkitQa, DialogTabsQA, EntryDialogQA} from '../../../../src/shared/constants';
|
|
import {ActionPanelDashSaveControlsQa} from '../../../../src/shared/constants/qa/action-panel';
|
|
|
|
const SELECTORS = {
|
|
SELECTOR_LIST_ITEMS: '.g-list__item',
|
|
};
|
|
|
|
datalensTest.describe(`Dashboards - Change widgets order on tab`, () => {
|
|
datalensTest.beforeEach(async ({page}: {page: Page}) => {
|
|
const dashName = `e2e-test-dash-tabs-widget-order-copy-${getUniqueTimestamp()}`;
|
|
const dashboardPage = new DashboardPage({page});
|
|
await openTestPage(page, RobotChartsDashboardUrls.DashboardWithTabsAndSelectors);
|
|
await dashboardPage.copyDashboard(dashName);
|
|
await dashboardPage.enterEditMode();
|
|
});
|
|
|
|
datalensTest.afterEach(async ({page}: {page: Page}) => {
|
|
const dashboardPage = new DashboardPage({page});
|
|
await dashboardPage.deleteDashFromEditMode();
|
|
});
|
|
|
|
datalensTest(
|
|
'Widget order is successfully reset when order changes are undone',
|
|
async ({page}: {page: Page}) => {
|
|
const dashboardPage = new DashboardPage({page});
|
|
|
|
// When there are changes while client migration saving changes before tabs order check
|
|
if (await dashboardPage.hasChanges()) {
|
|
await dashboardPage.clickSaveButton();
|
|
await dashboardPage.enterEditMode();
|
|
}
|
|
|
|
const popupWidgetOrderList = await openTabPopupWidgetOrder(dashboardPage, 0);
|
|
|
|
const widgetOrderListItems = await popupWidgetOrderList.$$(
|
|
SELECTORS.SELECTOR_LIST_ITEMS,
|
|
);
|
|
const factWidgetOrder = await Promise.all(
|
|
widgetOrderListItems.map((widget) => widget.textContent()),
|
|
);
|
|
|
|
await dragAndDropListItem(page, {
|
|
listSelector: slct(DialogTabsQA.PopupWidgetOrderList),
|
|
sourceIndex: 0,
|
|
targetIndex: 1,
|
|
});
|
|
|
|
const actualWidgetOrderListItems = await popupWidgetOrderList.$$(
|
|
SELECTORS.SELECTOR_LIST_ITEMS,
|
|
);
|
|
const actualWidgetOrder = await Promise.all(
|
|
actualWidgetOrderListItems.map((widget) => widget.textContent()),
|
|
);
|
|
expect(factWidgetOrder.reverse()).toEqual(actualWidgetOrder);
|
|
|
|
await page.click(slct(EntryDialogQA.Apply));
|
|
await page.click(slct(DialogTabsQA.Cancel));
|
|
|
|
await dashboardPage.waitForSelector(
|
|
`${slct(ActionPanelDashSaveControlsQa.Save)}[disabled]`,
|
|
);
|
|
},
|
|
);
|
|
|
|
datalensTest(
|
|
'Widget order is successfully reset when exiting dashboard editing mode',
|
|
async ({page}: {page: Page}) => {
|
|
const dashboardPage = new DashboardPage({page});
|
|
|
|
let popupWidgetOrderList = await openTabPopupWidgetOrder(dashboardPage, 0);
|
|
|
|
const widgetOrderListItems = await popupWidgetOrderList.$$(
|
|
SELECTORS.SELECTOR_LIST_ITEMS,
|
|
);
|
|
const factWidgetOrder = await Promise.all(
|
|
widgetOrderListItems.map((widget) => widget.textContent()),
|
|
);
|
|
expect(factWidgetOrder.length).toBeGreaterThan(0);
|
|
|
|
await dragAndDropListItem(page, {
|
|
listSelector: slct(DialogTabsQA.PopupWidgetOrderList),
|
|
sourceIndex: 0,
|
|
targetIndex: 1,
|
|
});
|
|
|
|
await page.click(slct(EntryDialogQA.Apply));
|
|
await page.click(slct(DialogTabsQA.Save));
|
|
|
|
await dashboardPage.waitForSelector(
|
|
`${slct(ActionPanelDashSaveControlsQa.Save)}:not([disabled])`,
|
|
);
|
|
await dashboardPage.exitEditMode();
|
|
|
|
const dashGridItems = await page.$$(slct(DashkitQa.GRID_ITEM));
|
|
const dashWidgetsCount = dashGridItems.length;
|
|
expect(dashWidgetsCount).toEqual(factWidgetOrder.length);
|
|
|
|
await dashboardPage.enterEditMode();
|
|
|
|
// open popup widget order again
|
|
popupWidgetOrderList = await openTabPopupWidgetOrder(dashboardPage, 0);
|
|
|
|
const actualWidgetOrderListItems = await popupWidgetOrderList.$$(
|
|
SELECTORS.SELECTOR_LIST_ITEMS,
|
|
);
|
|
const actualWidgetOrder = await Promise.all(
|
|
actualWidgetOrderListItems.map((widget) => widget.textContent()),
|
|
);
|
|
expect(factWidgetOrder).toEqual(actualWidgetOrder);
|
|
|
|
await page.click(slct(EntryDialogQA.Cancel));
|
|
await page.click(slct(DialogTabsQA.Cancel));
|
|
},
|
|
);
|
|
});
|