Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

532 lines
16 KiB
TypeScript
Raw Normal View History

/*
* Copyright 2025 Collate.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { expect, Page, test as base } from '@playwright/test';
import {
ECustomizedDataAssets,
ECustomizedGovernance,
} from '../../constant/customizeDetail';
import { GlobalSettingOptions } from '../../constant/settings';
import { SidebarItem } from '../../constant/sidebar';
import { EntityDataClass } from '../../support/entity/EntityDataClass';
import { EntityDataClassCreationConfig } from '../../support/entity/EntityDataClass.interface';
import { PersonaClass } from '../../support/persona/PersonaClass';
import { AdminClass } from '../../support/user/AdminClass';
import { UserClass } from '../../support/user/UserClass';
import { performAdminLogin } from '../../utils/admin';
import { redirectToHomePage, toastNotification } from '../../utils/common';
import {
getCustomizeDetailsDefaultTabs,
getCustomizeDetailsEntity,
} from '../../utils/customizeDetails';
import {
checkDefaultStateForNavigationTree,
selectPersona,
validateLeftSidebarWithHiddenItems,
} from '../../utils/customizeNavigation';
import { settingClick } from '../../utils/sidebar';
const persona = new PersonaClass();
// Keeping it separate so that it won't affect other tests
const navigationPersona = new PersonaClass();
const adminUser = new AdminClass();
const user = new UserClass();
const creationConfig: EntityDataClassCreationConfig = {
table: true,
entityDetails: true,
topic: true,
dashboard: true,
mlModel: true,
pipeline: true,
dashboardDataModel: true,
apiCollection: true,
searchIndex: true,
container: true,
storedProcedure: true,
apiEndpoint: true,
database: true,
databaseSchema: true,
};
const test = base.extend<{
adminPage: Page;
userPage: Page;
}>({
adminPage: async ({ browser }, use) => {
const adminPage = await browser.newPage();
await adminUser.login(adminPage);
await use(adminPage);
await adminPage.close();
},
userPage: async ({ browser }, use) => {
const page = await browser.newPage();
await user.login(page);
await use(page);
await page.close();
},
});
test.beforeAll('Setup Customize tests', async ({ browser }) => {
const { apiContext, afterAction } = await performAdminLogin(browser);
await adminUser.create(apiContext);
await adminUser.setAdminRole(apiContext);
await user.create(apiContext);
await user.setAdminRole(apiContext);
await persona.create(apiContext);
await navigationPersona.create(apiContext);
// Assign persona to user to validate page changes
await user.patch({
apiContext,
patchData: [
{
op: 'add',
path: '/personas/0',
value: {
id: persona.responseData.id,
name: persona.responseData.name,
displayName: persona.responseData.displayName,
fullyQualifiedName: persona.responseData.fullyQualifiedName,
type: 'persona',
},
},
{
op: 'add',
path: '/personas/1',
value: {
id: navigationPersona.responseData.id,
name: navigationPersona.responseData.name,
displayName: navigationPersona.responseData.displayName,
fullyQualifiedName: navigationPersona.responseData.fullyQualifiedName,
type: 'persona',
},
},
{
op: 'add',
path: '/defaultPersona',
value: {
id: persona.responseData.id,
name: persona.responseData.name,
displayName: persona.responseData.displayName,
fullyQualifiedName: persona.responseData.fullyQualifiedName,
type: 'persona',
},
},
],
});
await afterAction();
});
test.afterAll('Cleanup Customize tests', async ({ browser }) => {
test.slow();
const { apiContext, afterAction } = await performAdminLogin(browser);
await adminUser.delete(apiContext);
await user.delete(apiContext);
await persona.delete(apiContext);
await navigationPersona.delete(apiContext);
await afterAction();
});
test.describe('Persona customize UI tab', async () => {
test.beforeEach(async ({ adminPage }) => {
await redirectToHomePage(adminPage);
// Navigate to persona page
await settingClick(adminPage, GlobalSettingOptions.PERSONA);
await adminPage.waitForLoadState('networkidle');
await adminPage.waitForSelector('[data-testid="loader"]', {
state: 'detached',
});
await adminPage.getByText(persona.responseData.displayName).click();
await adminPage.getByRole('tab', { name: 'Customize UI' }).click();
});
test('should show all the customize options', async ({ adminPage }) => {
await expect(adminPage.getByText('Navigation')).toBeVisible();
await expect(adminPage.getByText('Homepage')).toBeVisible();
await expect(adminPage.getByText('Governance')).toBeVisible();
await expect(adminPage.getByText('Data Assets')).toBeVisible();
});
test('should show all the data assets customize options', async ({
adminPage,
}) => {
await adminPage.getByText('Data Assets').click();
for (const type of Object.values(ECustomizedDataAssets)) {
await expect(adminPage.getByText(type, { exact: true })).toBeVisible();
}
});
test('should show all the governance customize options', async ({
adminPage,
}) => {
await adminPage.getByText('Governance').click();
for (const type of Object.values(ECustomizedGovernance)) {
await expect(adminPage.getByText(type, { exact: true })).toBeVisible();
}
});
test('Navigation check default state', async ({ adminPage }) => {
await adminPage.getByText('Navigation').click();
await checkDefaultStateForNavigationTree(adminPage);
});
test('customize navigation should work', async ({ adminPage, userPage }) => {
test.slow();
await adminPage.getByText('Navigation').click();
await test.step(
'hide navigation items and validate with persona',
async () => {
// Hide Explore
await adminPage
.getByTestId('page-layout-v1')
.getByText('Explore')
.getByRole('switch')
.click();
await expect(
adminPage
.getByTestId('page-layout-v1')
.getByText('Explore')
.getByRole('switch')
).not.toBeChecked();
// Hide Metrics
await adminPage
.getByTestId('page-layout-v1')
.getByText('Metrics')
.getByRole('switch')
.click();
await expect(
adminPage
.getByTestId('page-layout-v1')
.getByText('Metrics')
.getByRole('switch')
).not.toBeChecked();
await adminPage.getByTestId('save-button').click();
await toastNotification(
adminPage,
/^Page layout (created|updated) successfully\.$/
);
// Select navigation persona
await redirectToHomePage(userPage);
await selectPersona(userPage, navigationPersona);
await userPage.reload();
await userPage.waitForLoadState('networkidle');
// Validate changes in navigation tree
await validateLeftSidebarWithHiddenItems(userPage, [
SidebarItem.EXPLORE,
SidebarItem.METRICS,
]);
}
);
await test.step(
'show navigation items and validate with persona',
async () => {
// Show Explore
await adminPage
.getByTestId('page-layout-v1')
.getByText('Explore')
.getByRole('switch')
.click();
await expect(
adminPage
.getByTestId('page-layout-v1')
.getByText('Explore')
.getByRole('switch')
).toBeChecked();
// Show Metrics
await adminPage
.getByTestId('page-layout-v1')
.getByText('Metrics')
.getByRole('switch')
.click();
await expect(
adminPage
.getByTestId('page-layout-v1')
.getByText('Metrics')
.getByRole('switch')
).toBeChecked();
// Hide Glossary
await adminPage
.getByTestId('page-layout-v1')
.getByText('Glossary')
.getByRole('switch')
.click();
await expect(
adminPage
.getByTestId('page-layout-v1')
.getByText('Glossary')
.getByRole('switch')
).not.toBeChecked();
// Hide Incident Manager
await adminPage
.getByTestId('page-layout-v1')
.getByText('Incident Manager')
.getByRole('switch')
.click();
await adminPage.getByTestId('save-button').click();
await toastNotification(
adminPage,
/^Page layout (created|updated) successfully\.$/
);
// Reload user page to validate changes
await userPage.reload();
await userPage.waitForLoadState('networkidle');
// Validate changes in navigation tree
await validateLeftSidebarWithHiddenItems(userPage, [
SidebarItem.GLOSSARY,
SidebarItem.INCIDENT_MANAGER,
]);
}
);
});
});
test.describe('Persona customization', () => {
test.beforeAll(async ({ browser }) => {
test.slow();
const { apiContext, afterAction } = await performAdminLogin(browser);
await EntityDataClass.preRequisitesForTests(apiContext, creationConfig);
await afterAction();
});
test.afterAll(async ({ browser }) => {
test.slow();
const { apiContext, afterAction } = await performAdminLogin(browser);
await EntityDataClass.postRequisitesForTests(apiContext, creationConfig);
await afterAction();
});
Object.values(ECustomizedDataAssets).forEach(async (type) => {
test(`${type} - customization should work`, async ({
adminPage,
userPage,
}) => {
test.slow();
await test.step(
`should show all the tabs & widget as default when no customization is done`,
async () => {
await settingClick(adminPage, GlobalSettingOptions.PERSONA);
await adminPage.waitForLoadState('networkidle');
await adminPage
.getByTestId(`persona-details-card-${persona.data.name}`)
.click();
await adminPage.getByRole('tab', { name: 'Customize UI' }).click();
await adminPage.waitForLoadState('networkidle');
await adminPage.getByText('Data Assets').click();
await adminPage.getByText(type, { exact: true }).click();
await adminPage.waitForSelector('[data-testid="loader"]', {
state: 'detached',
});
const expectedTabs = getCustomizeDetailsDefaultTabs(type);
const tabs = adminPage
.getByTestId('customize-tab-card')
.getByRole('button')
.filter({ hasNotText: 'Add Tab' });
await expect(tabs).toHaveCount(expectedTabs.length);
for (const tabName of expectedTabs) {
await expect(
adminPage
.getByTestId('customize-tab-card')
.getByTestId(`tab-${tabName}`)
).toBeVisible();
}
}
);
await test.step('apply customization', async () => {
expect(
adminPage.locator('#KnowledgePanel\\.Description')
).toBeVisible();
await adminPage
.locator('#KnowledgePanel\\.Description')
.getByTestId('remove-widget-button')
.click();
await adminPage.getByRole('button', { name: 'Add tab' }).click();
await adminPage
.getByRole('dialog')
.getByRole('button', { name: 'Add' })
.click();
await adminPage.getByTestId('add-widget-button').click();
await adminPage.getByTestId('Description-widget').click();
await adminPage
.getByTestId('add-widget-modal')
.getByTestId('add-widget-button')
.click();
await adminPage.getByTestId('save-button').click();
await toastNotification(
adminPage,
/^Page layout (created|updated) successfully\.$/
);
});
await test.step('Validate customization', async () => {
await redirectToHomePage(userPage);
const entity = getCustomizeDetailsEntity(type);
feat(ui): revamp landing page (#21691) * fix: minor style for customisation pages * feat(ui): customisation of landing page (#21692) * add customise header section * fix react grid layout for widgets * fix widget height and refactor code * fix tests * address pr comments and added unit test * fix unit test * fix spacing issues and addressed pr comments * feat(ui): customise home page banner (#21793) * add structure for customise home modal * feat: customise banner background color * refactor css * add unit tests * fix color change functionality * minor fix * refactor code * minor refector * feat(ui): new layout for home page (#21901) * update new layout for home page * add unit tests * feat(ui): widgets selection modal (#21974) * add selection widgets to modal * implement add widgets functionality * fix placeholderWidgetKey for addWidget * fix handleApply call * fix erros after merging to main for react upgrade * add tests * refactor css for widget card * fix tests * add images for widgets * add localisation * fix test * Add json files for new landing page (#22116) * chore(ci): improve e2e runners with conditions (#22084) * MINOR: Fix pytest 3.9 (#22085) * feat: add support for DBX system metrics (#22044) * feat: add support for DBX system metrics * feat: add support for DBX system metrics * fix: added WRITE back * fix: failing test cases * fix: failing test * Doc: Meta Description Updation (#22074) * Doc: 404 Images Fixing (#22083) * Doc: Version change along with 404 Error Fixing (#22053) Co-authored-by: “Rounak <“rounakpreet.d@deuexsolutions.com”> * Minor: Fix the token expiry options order (#22049) * Fix the token expiry options order * Improve the logic and fix playwright tests * fix sonar cloud issue * Fix the type error * Feature #20137 Move Glossary Terms to any level including other glossaries (#21867) * allow changing of glossary term * Draft ES Index Update for Glossary term move * ES Upates in a more faster one shot bulk update * Remove validations on Parent Glossary Hierarchy and Include Circular Glossary Term Validations * Introduced a new PUT api for glossaryTerms move operation * Optimised moveGlossaryTerm * Added Transaction Scope in moveAndStore in updater * Remove Consolidate and revert changes for move operation * Improved Change Description and Versioning for move operation * Improvise request payload to have only parent and optimise the flow * Implement async functionality of Glossary Terms move * mvn spotless:apply * MoveGlossaryTermChannel, Get only the required fields * Fix: Update Parent for Glossary Term during Bulk Import * allow glossary term to be moved across glossaries * update locales * move socket listening to hierarchy dialog * Added fqn to move message for the websocket response * fix tests * add glossary tests * cleanup * fix tests * Refactor code: Resolve Conflicts * fix tests * fix permissions * cleanup * Update generated TypeScript types * Abstraction Logic in place of instanceOf logic for bulkImportExportGlossary to update the parent * Update generated TypeScript types --------- Co-authored-by: karanh37 <karanh37@gmail.com> Co-authored-by: Karan Hotchandani <33024356+karanh37@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Aniket Katkar <aniketkatkar97@gmail.com> * update the snapshots url for ossrh migration (#22090) * Update README and Ingestion Framework Documentation (#22080) * Add my task json for new landing page * update description * add domain.json * fix test --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> Co-authored-by: Mayur Singal <39544459+ulixius9@users.noreply.github.com> Co-authored-by: Teddy <teddy.crepineau@gmail.com> Co-authored-by: Rounak Dhillon <162090200+RounakDhillon@users.noreply.github.com> Co-authored-by: “Rounak <“rounakpreet.d@deuexsolutions.com”> Co-authored-by: Aniket Katkar <aniketkatkar97@gmail.com> Co-authored-by: Ram Narayan Balaji <81347100+yan-3005@users.noreply.github.com> Co-authored-by: karanh37 <karanh37@gmail.com> Co-authored-by: Karan Hotchandani <33024356+karanh37@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: sonika-shah <58761340+sonika-shah@users.noreply.github.com> Co-authored-by: Ayush Shah <ayush@getcollate.io> * feat(ui): Add support to create curated assets widget (#21870) * feat(ui): Add support to create curated assets widget * revert settings.json * fix: minor style for customisation pages * feat(ui): customisation of landing page (#21692) * add customise header section * fix react grid layout for widgets * fix widget height and refactor code * fix tests * address pr comments and added unit test * fix unit test * fix spacing issues and addressed pr comments * fix locale * update icons and styles * fix view more * fix footer * add unit tests and minor fixes * add curatedAssets.json * format json file * address comments * address comments * remove unnecessary indentation and fix locale * minor fix * address comments * update json * remove unnecessary changes * update imports * add sort and size options * add unit test * fix test * revert test changes * fix unit tests * Fix failing test * fix sonar nullish operator issue * address feedback --------- Co-authored-by: Pranita <pfulsundar8@gmail.com> Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> * feat(ui): create widgets with new layout having sizes small and medium (#22082) * fix customise home modal for home page * redesign widget * fix following widget * data assets widget * fix conflicting styles --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> * Remove global search bar and add functionality to new search bar (#22156) * Remove global search bar and add functionality to new search bar * add unit tests * Add support for My Task widget (#22161) * Add support for My Task widget * address comments * minor fix * fix failing tests * Hide non configured curated asset from my data page (#22209) * Hide non configured curated asset from my data page * address comments --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> * Disable save button and fix UI discrepencies (#22152) * Disable save button and miscellaneous changes * fix ui * Fix failing test * address comments --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> * add persona preference to uiCustomisation * Add support to update persona preferences for the user (#22235) * Add support to update persona preferences for the user * add loader * add success toast * Fix failing unit test * Update generated TypeScript types * Support background update by admin for customized landing page (#22301) * Fix failing e2e tests (#22248) * Fix failing e2e tests * fix activity feed tests * fix failing e2e tests * fix EntityDataSteward and Entity tests * fix failing tests * Fix metric tests * Fix lineage and my data page * update uuid * Add support for domains widget (#22318) * Add support for domains widget * code cleanup * minor fix * fix failing test * address comments * update .less file * import t from utils --------- Co-authored-by: Sriharsha Chintalapani <harshach@users.noreply.github.com> * Update curated assets widget for full size (#22343) * Fix customize search functionality (#22349) * Fix customize search functionality * update-my-task-icon * fix failing tests * Redesign Data Assets widget (#22353) * Redesign Data Assets widget * remove comments * add footer and its unit tests * Add new announcement widget (#22373) * Add new announcement widget * fix badge color * fix styles * address comments * fix failing test * minor fix * fix css * fix color variable * Fix KPI and Total Data Assets widgets (#22359) * fix dropdown styles * fix minor styles * remove recently viewed widget * fix kpi widget and added tests * fix total data assets widget and add tests * minor style fix * remove kpi filters * fix total data assets chart colors * add filters for total data assets * fix kpi widget styles * minor style fix * addressed pr comments * Feat(UI): Added Feed , Assets Following and My data widget (#22375) * added feeds widget * addressed comments * fixed padding * addressed comments and added new tests * addressed comments and added new tests * removed unncessary slice condition * added sorting for follwing and my data widget * fixed truncate and overflow edge condtions * fixed sonar test * remove unwanted options * Fix UI cosmetic issues (#22439) * fix: failing e2e tests (#22427) * fix Entity.spec * fix metric tests from Entity.spec * minor fix * minor fix * Fix CSS for data assets, KPI and total data assets widget (#22458) * Fix failing e2e tests (#22396) * Fix failing e2e tests * Fix tour and data quality tests * Fix description suggestion * fix customMetric tests * fix tests * fix tests * fix navbar and bulk import tests * Fix entity service tests * Fix ExploreQuickFilters.spec.ts * fix metric tests * update config * minor fix * Fix domain rbac * Fix test * fix unit test --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> * fix tests * Fix failing E2E tests (#22462) * Fix failing E2E tests * Fix service entity tests * fix tests * fix kpi widget test id * fix schema definition and frequently joined tests * fix domains.spec * fix tests * fix tests and address ui feedbacks * fix unit tests --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> Co-authored-by: Harshit Shah <dinkushah169@gmail.com> Co-authored-by: Mayur Singal <39544459+ulixius9@users.noreply.github.com> Co-authored-by: Teddy <teddy.crepineau@gmail.com> Co-authored-by: Rounak Dhillon <162090200+RounakDhillon@users.noreply.github.com> Co-authored-by: “Rounak <“rounakpreet.d@deuexsolutions.com”> Co-authored-by: Aniket Katkar <aniketkatkar97@gmail.com> Co-authored-by: Ram Narayan Balaji <81347100+yan-3005@users.noreply.github.com> Co-authored-by: karanh37 <karanh37@gmail.com> Co-authored-by: Karan Hotchandani <33024356+karanh37@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: sonika-shah <58761340+sonika-shah@users.noreply.github.com> Co-authored-by: Ayush Shah <ayush@getcollate.io> Co-authored-by: Sriharsha Chintalapani <harshach@users.noreply.github.com> Co-authored-by: Dhruv Parmar <83108871+dhruvjsx@users.noreply.github.com>
2025-07-19 17:59:14 +05:30
await entity.visitEntityPageWithCustomSearchBox(userPage);
await userPage.waitForLoadState('networkidle');
await userPage.waitForSelector('[data-testid="loader"]', {
state: 'detached',
});
expect(userPage.getByRole('tab', { name: 'New Tab' })).toBeVisible();
await userPage.getByRole('tab', { name: 'New Tab' }).click();
const visibleDescription = userPage
.getByTestId(/KnowledgePanel.Description-/)
.locator('visible=true');
await expect(visibleDescription).toBeVisible();
});
});
});
Object.values(ECustomizedGovernance).forEach(async (type) => {
test(`${type} - customization should work`, async ({
adminPage,
userPage,
}) => {
test.slow();
await test.step(
`should show all the tabs & widget as default when no customization is done`,
async () => {
await settingClick(adminPage, GlobalSettingOptions.PERSONA);
await adminPage.waitForLoadState('networkidle');
await adminPage
.getByTestId(`persona-details-card-${persona.data.name}`)
.click();
await adminPage.getByRole('tab', { name: 'Customize UI' }).click();
await adminPage.waitForLoadState('networkidle');
await adminPage.getByText('Governance').click();
await adminPage.getByText(type, { exact: true }).click();
await adminPage.waitForSelector('[data-testid="loader"]', {
state: 'detached',
});
const expectedTabs = getCustomizeDetailsDefaultTabs(type);
const tabs = adminPage
.getByTestId('customize-tab-card')
.getByRole('button')
.filter({ hasNotText: 'Add Tab' });
await expect(tabs).toHaveCount(expectedTabs.length);
for (const tabName of expectedTabs) {
await expect(
adminPage.getByTestId('customize-tab-card').getByRole('button', {
name: tabName,
})
).toBeVisible();
}
}
);
await test.step('apply customization', async () => {
expect(
adminPage.locator('#KnowledgePanel\\.Description')
).toBeVisible();
await adminPage
.locator('#KnowledgePanel\\.Description')
.getByTestId('remove-widget-button')
.click();
await adminPage.getByRole('button', { name: 'Add tab' }).click();
await adminPage
.getByRole('dialog')
.getByRole('button', { name: 'Add' })
.click();
await adminPage.getByTestId('add-widget-button').click();
await adminPage.getByTestId('Description-widget').click();
await adminPage
.getByTestId('add-widget-modal')
.getByTestId('add-widget-button')
.click();
await adminPage.getByTestId('save-button').click();
await toastNotification(
adminPage,
/^Page layout (created|updated) successfully\.$/
);
});
await test.step('Validate customization', async () => {
await redirectToHomePage(userPage);
const entity = getCustomizeDetailsEntity(type);
feat(ui): revamp landing page (#21691) * fix: minor style for customisation pages * feat(ui): customisation of landing page (#21692) * add customise header section * fix react grid layout for widgets * fix widget height and refactor code * fix tests * address pr comments and added unit test * fix unit test * fix spacing issues and addressed pr comments * feat(ui): customise home page banner (#21793) * add structure for customise home modal * feat: customise banner background color * refactor css * add unit tests * fix color change functionality * minor fix * refactor code * minor refector * feat(ui): new layout for home page (#21901) * update new layout for home page * add unit tests * feat(ui): widgets selection modal (#21974) * add selection widgets to modal * implement add widgets functionality * fix placeholderWidgetKey for addWidget * fix handleApply call * fix erros after merging to main for react upgrade * add tests * refactor css for widget card * fix tests * add images for widgets * add localisation * fix test * Add json files for new landing page (#22116) * chore(ci): improve e2e runners with conditions (#22084) * MINOR: Fix pytest 3.9 (#22085) * feat: add support for DBX system metrics (#22044) * feat: add support for DBX system metrics * feat: add support for DBX system metrics * fix: added WRITE back * fix: failing test cases * fix: failing test * Doc: Meta Description Updation (#22074) * Doc: 404 Images Fixing (#22083) * Doc: Version change along with 404 Error Fixing (#22053) Co-authored-by: “Rounak <“rounakpreet.d@deuexsolutions.com”> * Minor: Fix the token expiry options order (#22049) * Fix the token expiry options order * Improve the logic and fix playwright tests * fix sonar cloud issue * Fix the type error * Feature #20137 Move Glossary Terms to any level including other glossaries (#21867) * allow changing of glossary term * Draft ES Index Update for Glossary term move * ES Upates in a more faster one shot bulk update * Remove validations on Parent Glossary Hierarchy and Include Circular Glossary Term Validations * Introduced a new PUT api for glossaryTerms move operation * Optimised moveGlossaryTerm * Added Transaction Scope in moveAndStore in updater * Remove Consolidate and revert changes for move operation * Improved Change Description and Versioning for move operation * Improvise request payload to have only parent and optimise the flow * Implement async functionality of Glossary Terms move * mvn spotless:apply * MoveGlossaryTermChannel, Get only the required fields * Fix: Update Parent for Glossary Term during Bulk Import * allow glossary term to be moved across glossaries * update locales * move socket listening to hierarchy dialog * Added fqn to move message for the websocket response * fix tests * add glossary tests * cleanup * fix tests * Refactor code: Resolve Conflicts * fix tests * fix permissions * cleanup * Update generated TypeScript types * Abstraction Logic in place of instanceOf logic for bulkImportExportGlossary to update the parent * Update generated TypeScript types --------- Co-authored-by: karanh37 <karanh37@gmail.com> Co-authored-by: Karan Hotchandani <33024356+karanh37@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Aniket Katkar <aniketkatkar97@gmail.com> * update the snapshots url for ossrh migration (#22090) * Update README and Ingestion Framework Documentation (#22080) * Add my task json for new landing page * update description * add domain.json * fix test --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> Co-authored-by: Mayur Singal <39544459+ulixius9@users.noreply.github.com> Co-authored-by: Teddy <teddy.crepineau@gmail.com> Co-authored-by: Rounak Dhillon <162090200+RounakDhillon@users.noreply.github.com> Co-authored-by: “Rounak <“rounakpreet.d@deuexsolutions.com”> Co-authored-by: Aniket Katkar <aniketkatkar97@gmail.com> Co-authored-by: Ram Narayan Balaji <81347100+yan-3005@users.noreply.github.com> Co-authored-by: karanh37 <karanh37@gmail.com> Co-authored-by: Karan Hotchandani <33024356+karanh37@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: sonika-shah <58761340+sonika-shah@users.noreply.github.com> Co-authored-by: Ayush Shah <ayush@getcollate.io> * feat(ui): Add support to create curated assets widget (#21870) * feat(ui): Add support to create curated assets widget * revert settings.json * fix: minor style for customisation pages * feat(ui): customisation of landing page (#21692) * add customise header section * fix react grid layout for widgets * fix widget height and refactor code * fix tests * address pr comments and added unit test * fix unit test * fix spacing issues and addressed pr comments * fix locale * update icons and styles * fix view more * fix footer * add unit tests and minor fixes * add curatedAssets.json * format json file * address comments * address comments * remove unnecessary indentation and fix locale * minor fix * address comments * update json * remove unnecessary changes * update imports * add sort and size options * add unit test * fix test * revert test changes * fix unit tests * Fix failing test * fix sonar nullish operator issue * address feedback --------- Co-authored-by: Pranita <pfulsundar8@gmail.com> Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> * feat(ui): create widgets with new layout having sizes small and medium (#22082) * fix customise home modal for home page * redesign widget * fix following widget * data assets widget * fix conflicting styles --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> * Remove global search bar and add functionality to new search bar (#22156) * Remove global search bar and add functionality to new search bar * add unit tests * Add support for My Task widget (#22161) * Add support for My Task widget * address comments * minor fix * fix failing tests * Hide non configured curated asset from my data page (#22209) * Hide non configured curated asset from my data page * address comments --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> * Disable save button and fix UI discrepencies (#22152) * Disable save button and miscellaneous changes * fix ui * Fix failing test * address comments --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> * add persona preference to uiCustomisation * Add support to update persona preferences for the user (#22235) * Add support to update persona preferences for the user * add loader * add success toast * Fix failing unit test * Update generated TypeScript types * Support background update by admin for customized landing page (#22301) * Fix failing e2e tests (#22248) * Fix failing e2e tests * fix activity feed tests * fix failing e2e tests * fix EntityDataSteward and Entity tests * fix failing tests * Fix metric tests * Fix lineage and my data page * update uuid * Add support for domains widget (#22318) * Add support for domains widget * code cleanup * minor fix * fix failing test * address comments * update .less file * import t from utils --------- Co-authored-by: Sriharsha Chintalapani <harshach@users.noreply.github.com> * Update curated assets widget for full size (#22343) * Fix customize search functionality (#22349) * Fix customize search functionality * update-my-task-icon * fix failing tests * Redesign Data Assets widget (#22353) * Redesign Data Assets widget * remove comments * add footer and its unit tests * Add new announcement widget (#22373) * Add new announcement widget * fix badge color * fix styles * address comments * fix failing test * minor fix * fix css * fix color variable * Fix KPI and Total Data Assets widgets (#22359) * fix dropdown styles * fix minor styles * remove recently viewed widget * fix kpi widget and added tests * fix total data assets widget and add tests * minor style fix * remove kpi filters * fix total data assets chart colors * add filters for total data assets * fix kpi widget styles * minor style fix * addressed pr comments * Feat(UI): Added Feed , Assets Following and My data widget (#22375) * added feeds widget * addressed comments * fixed padding * addressed comments and added new tests * addressed comments and added new tests * removed unncessary slice condition * added sorting for follwing and my data widget * fixed truncate and overflow edge condtions * fixed sonar test * remove unwanted options * Fix UI cosmetic issues (#22439) * fix: failing e2e tests (#22427) * fix Entity.spec * fix metric tests from Entity.spec * minor fix * minor fix * Fix CSS for data assets, KPI and total data assets widget (#22458) * Fix failing e2e tests (#22396) * Fix failing e2e tests * Fix tour and data quality tests * Fix description suggestion * fix customMetric tests * fix tests * fix tests * fix navbar and bulk import tests * Fix entity service tests * Fix ExploreQuickFilters.spec.ts * fix metric tests * update config * minor fix * Fix domain rbac * Fix test * fix unit test --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> * fix tests * Fix failing E2E tests (#22462) * Fix failing E2E tests * Fix service entity tests * fix tests * fix kpi widget test id * fix schema definition and frequently joined tests * fix domains.spec * fix tests * fix tests and address ui feedbacks * fix unit tests --------- Co-authored-by: Chirag Madlani <12962843+chirag-madlani@users.noreply.github.com> Co-authored-by: Harshit Shah <dinkushah169@gmail.com> Co-authored-by: Mayur Singal <39544459+ulixius9@users.noreply.github.com> Co-authored-by: Teddy <teddy.crepineau@gmail.com> Co-authored-by: Rounak Dhillon <162090200+RounakDhillon@users.noreply.github.com> Co-authored-by: “Rounak <“rounakpreet.d@deuexsolutions.com”> Co-authored-by: Aniket Katkar <aniketkatkar97@gmail.com> Co-authored-by: Ram Narayan Balaji <81347100+yan-3005@users.noreply.github.com> Co-authored-by: karanh37 <karanh37@gmail.com> Co-authored-by: Karan Hotchandani <33024356+karanh37@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: sonika-shah <58761340+sonika-shah@users.noreply.github.com> Co-authored-by: Ayush Shah <ayush@getcollate.io> Co-authored-by: Sriharsha Chintalapani <harshach@users.noreply.github.com> Co-authored-by: Dhruv Parmar <83108871+dhruvjsx@users.noreply.github.com>
2025-07-19 17:59:14 +05:30
await entity.visitEntityPageWithCustomSearchBox(userPage);
await userPage.waitForLoadState('networkidle');
await userPage.waitForSelector('[data-testid="loader"]', {
state: 'detached',
});
expect(userPage.getByRole('tab', { name: 'New Tab' })).toBeVisible();
await userPage.getByRole('tab', { name: 'New Tab' }).click();
const visibleDescription = userPage
.getByTestId(/KnowledgePanel.Description-/)
.locator('visible=true');
await expect(visibleDescription).toBeVisible();
});
});
});
});