108 lines
4.7 KiB
TypeScript
108 lines
4.7 KiB
TypeScript
import {Browser, Page} from '@playwright/test';
|
|
|
|
import {Workbook} from '../../../page-objects/workbook/Workbook';
|
|
import {ControlQA} from '../../../../src/shared/constants/qa/control';
|
|
import {DashKitOverlayMenuQa} from '../../../../src/shared/constants/qa/dash';
|
|
import Revisions from '../../../page-objects/common/Revisions';
|
|
import DashboardPage from '../../../page-objects/dashboard/DashboardPage';
|
|
import {slct} from '../../../utils';
|
|
import {COMMON_SELECTORS} from '../../../utils/constants';
|
|
import datalensTest from '../../../utils/playwright/globalTestDefinition';
|
|
import {arbitraryText} from '../constants';
|
|
import {RevisionsPanelQa} from '../../../../src/shared/constants/qa';
|
|
|
|
const revTexts = ['Revision 1', 'Revision 2', 'Revision 3'];
|
|
|
|
let page: Page;
|
|
datalensTest.describe('Dashboards - Versioning', () => {
|
|
datalensTest.beforeAll(async ({browser}: {browser: Browser}) => {
|
|
page = await browser.newPage();
|
|
const workbookPO = new Workbook(page);
|
|
const dashboardPage = new DashboardPage({page});
|
|
|
|
await dashboardPage.createDashboard({
|
|
editDash: async () => {
|
|
await dashboardPage.addText({text: arbitraryText.first});
|
|
},
|
|
});
|
|
|
|
for (const text of revTexts) {
|
|
await dashboardPage.enterEditMode();
|
|
const controlSwitcher = page.locator(slct(ControlQA.controlMenu));
|
|
expect(controlSwitcher).toBeVisible();
|
|
await controlSwitcher.click();
|
|
await page.click(slct(DashKitOverlayMenuQa.RemoveButton));
|
|
await dashboardPage.addText({text});
|
|
await dashboardPage.clickSaveButton();
|
|
await workbookPO.editEntityButton.waitForVisible();
|
|
}
|
|
});
|
|
|
|
datalensTest.afterAll(async () => {
|
|
const dashboardPage = new DashboardPage({page});
|
|
await dashboardPage.deleteDash();
|
|
await page.close();
|
|
});
|
|
|
|
datalensTest.beforeEach(async () => {
|
|
await page.reload();
|
|
});
|
|
|
|
datalensTest('Dashboard with multiple revisions, checking revision switching', async () => {
|
|
const dashboardPage = new DashboardPage({page});
|
|
|
|
// opening the revision list
|
|
await dashboardPage.revisions.openList();
|
|
//click on the dashboard version
|
|
const revIdFromList = await dashboardPage.revisions.getRevisionIdByIdx(2);
|
|
await dashboardPage.revisions.getRevisionByIdx(2).click();
|
|
// we are waiting for the drawing of the blue upper panel with the author and the revision date
|
|
await page.waitForSelector(slct(COMMON_SELECTORS.REVISIONS_TOP_PANEL));
|
|
// Check that the revision has changed, because there is a header and the corresponding get parameter
|
|
await page.waitForSelector(DashboardPage.selectors.text);
|
|
const selector = await page.$(DashboardPage.selectors.text);
|
|
const selectorText = await selector?.innerText();
|
|
|
|
expect(selectorText).toMatch(revTexts[0]);
|
|
|
|
const revId = Revisions.getUrlRevIdParam(page);
|
|
expect(revId).toEqual(revIdFromList);
|
|
});
|
|
|
|
datalensTest(
|
|
'Dashboard with several revisions, check the correctness of the selected items and reset to the current version',
|
|
async () => {
|
|
const dashboardPage = new DashboardPage({page});
|
|
// opening the revision list
|
|
await dashboardPage.waitForOpeningRevisionsList();
|
|
await page.waitForSelector(slct(COMMON_SELECTORS.REVISIONS_LIST_ROW));
|
|
|
|
// click on the dashboard version
|
|
await dashboardPage.revisions.getRevisionByIdx(2).click();
|
|
// we are waiting for the drawing of the blue upper panel with the author and the revision date
|
|
await page.waitForSelector(slct(COMMON_SELECTORS.REVISIONS_TOP_PANEL));
|
|
|
|
// waiting for the loader to appear and disappear (for the case of a slow network)
|
|
await dashboardPage.waitForLoaderDisappear();
|
|
|
|
//click on the "open current" button
|
|
await page.click(
|
|
`${slct(COMMON_SELECTORS.REVISIONS_TOP_PANEL)} ${slct(
|
|
RevisionsPanelQa.ButtonOpenActual,
|
|
)}`,
|
|
);
|
|
|
|
// waiting for the loader to appear and disappear (for the case of a slow network)
|
|
await dashboardPage.waitForLoaderDisappear();
|
|
|
|
// Check that the revision has changed, because there is a new header and there is no get parameter
|
|
await page.waitForSelector(DashboardPage.selectors.text);
|
|
const selector = await page.$(DashboardPage.selectors.text);
|
|
const selectorText = await selector?.innerText();
|
|
expect(selectorText).toMatch(revTexts[2]);
|
|
const revId = Revisions.getUrlRevIdParam(page);
|
|
expect(revId).toBeNull();
|
|
},
|
|
);
|
|
});
|