124 lines
4.9 KiB
TypeScript
124 lines
4.9 KiB
TypeScript
import {expect} from '@playwright/test';
|
|
|
|
import datalensTest from '../../utils/playwright/globalTestDefinition';
|
|
import DatasetPage from '../../page-objects/dataset/DatasetPage';
|
|
import {openTestPage, slct} from '../../utils';
|
|
import {COMMON_SELECTORS} from '../../utils/constants';
|
|
import {AvatarQA, DatasetSourcesTableQa, DatasetFieldsTabQa} from '../../../src/shared';
|
|
|
|
const datasetUrl = '/gateway/root/bi/getSources';
|
|
const revisionsUrl = '/gateway/root/us/getRevisions';
|
|
const dsNamePattern = 'e2e-ds-rev-test';
|
|
|
|
const TEST_CONNECTION_ID = '7abw3lfp9e6ex';
|
|
const DEFAULT_YT_DATASETS_PATH = 'Users/robot-charts/E2E_TMP_DS/';
|
|
|
|
const getName = () => {
|
|
return `${dsNamePattern}-${Date.now()}`;
|
|
};
|
|
|
|
datalensTest.describe('Dataset revision interactions', () => {
|
|
datalensTest.beforeEach(async ({page}) => {
|
|
const datasetPage = new DatasetPage({page});
|
|
const url = `datasets/new?id=${TEST_CONNECTION_ID}¤tPath=${DEFAULT_YT_DATASETS_PATH}`;
|
|
|
|
await openTestPage(page, url);
|
|
|
|
// Wait for source to load and add avatar
|
|
await datasetPage.waitForSelector(slct(DatasetSourcesTableQa.Source));
|
|
await datasetPage.addAvatarByDragAndDrop();
|
|
await datasetPage.waitForSelector(slct(AvatarQA.Avatar));
|
|
|
|
// Create dataset in folder
|
|
await datasetPage.createDatasetInFolder({name: getName()});
|
|
});
|
|
|
|
datalensTest.afterEach(async ({page}) => {
|
|
await page.reload();
|
|
const pageUrl = page.url();
|
|
|
|
if (pageUrl.includes(dsNamePattern)) {
|
|
const datasetPage = new DatasetPage({page});
|
|
await datasetPage.deleteEntry();
|
|
}
|
|
});
|
|
|
|
datalensTest('Revision should be shown in supported dataset', async ({page}) => {
|
|
const datasetPage = new DatasetPage({page});
|
|
|
|
await datasetPage.revisions.openList();
|
|
|
|
const items = await page.$$(slct(COMMON_SELECTORS.REVISIONS_LIST_ROW));
|
|
// check that the dataset was created with one revision
|
|
expect(items).toHaveLength(1);
|
|
});
|
|
|
|
datalensTest('Revision should be update after set to actual revision', async ({page}) => {
|
|
const datasetPage = new DatasetPage({page});
|
|
|
|
// Wait for dataset fields to load
|
|
await datasetPage.waitForSelector(slct(DatasetFieldsTabQa.FieldNameColumnInput));
|
|
const {originalValue} = await datasetPage.renameFirstField();
|
|
await datasetPage.saveUpdatedDataset();
|
|
await datasetPage.revisions.openList();
|
|
|
|
const items = await page.$$(slct(COMMON_SELECTORS.REVISIONS_LIST_ROW));
|
|
// check that the dataset now has two revisions
|
|
expect(items).toHaveLength(2);
|
|
|
|
// change revision to previous
|
|
const getDatasetSuccessfulPromise = datasetPage.waitForSuccessfulResponse(datasetUrl);
|
|
await items[items.length - 1].click();
|
|
await getDatasetSuccessfulPromise;
|
|
|
|
await datasetPage.waitForSelector(slct(DatasetFieldsTabQa.FieldNameColumnInput));
|
|
const restoredFieldInput = page
|
|
.locator(slct(DatasetFieldsTabQa.FieldNameColumnInput))
|
|
.first();
|
|
const restoredValue = await restoredFieldInput.locator('input').inputValue();
|
|
|
|
// value must be equal to initial value
|
|
expect(restoredValue).toBe(originalValue);
|
|
|
|
// make old revision actual
|
|
await datasetPage.revisions.makeRevisionActual();
|
|
await datasetPage.revisions.waitUntilRevisionPanelDisappear();
|
|
|
|
await datasetPage.revisions.validateRevisions(3);
|
|
|
|
const revId = await datasetPage.revisions.getRevisionIdFromUrl();
|
|
|
|
expect(revId).toBe(null);
|
|
expect(restoredValue).toBe(originalValue);
|
|
});
|
|
|
|
datalensTest('Revision should be update after save not actual revision', async ({page}) => {
|
|
const datasetPage = new DatasetPage({page});
|
|
|
|
await datasetPage.waitForSelector(slct(DatasetFieldsTabQa.FieldNameColumnInput));
|
|
const {originalValue} = await datasetPage.renameFirstField();
|
|
await datasetPage.saveUpdatedDataset();
|
|
|
|
await datasetPage.revisions.openList();
|
|
|
|
let items = await page.$$(slct(COMMON_SELECTORS.REVISIONS_LIST_ROW));
|
|
// check that the dataset now has two revisions
|
|
expect(items).toHaveLength(2);
|
|
|
|
// change revision to previous
|
|
let getDatasetSuccessfulPromise = datasetPage.waitForSuccessfulResponse(datasetUrl);
|
|
await items[items.length - 1].click();
|
|
await getDatasetSuccessfulPromise;
|
|
|
|
await datasetPage.waitForSelector(slct(DatasetFieldsTabQa.FieldNameColumnInput));
|
|
await datasetPage.renameFirstField({value: `${originalValue}_third`});
|
|
|
|
getDatasetSuccessfulPromise = datasetPage.waitForSuccessfulResponse(revisionsUrl);
|
|
await datasetPage.saveUpdatedDataset();
|
|
await getDatasetSuccessfulPromise;
|
|
|
|
items = await page.$$(slct(COMMON_SELECTORS.REVISIONS_LIST_ROW));
|
|
expect(items).toHaveLength(3);
|
|
});
|
|
});
|