diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataQualityAndProfiler.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataQualityAndProfiler.spec.ts index f0fe0808d36..c6be17ad849 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataQualityAndProfiler.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataQualityAndProfiler.spec.ts @@ -33,7 +33,11 @@ import { import { getCurrentMillis } from '../../utils/dateTime'; import { visitEntityPage } from '../../utils/entity'; import { sidebarClick } from '../../utils/sidebar'; -import { deleteTestCase, visitDataQualityTab } from '../../utils/testCases'; +import { + deleteTestCase, + verifyIncidentBreadcrumbsFromTablePageRedirect, + visitDataQualityTab, +} from '../../utils/testCases'; import { test } from '../fixtures/pages'; const table1 = new TableClass(); @@ -269,6 +273,17 @@ test('Table test case', PLAYWRIGHT_INGESTION_TAG_OBJ, async ({ page }) => { await page.getByRole('button', { name: 'Cancel' }).click(); }); + await test.step( + 'Redirect to IncidentPage and verify breadcrumb', + async () => { + await verifyIncidentBreadcrumbsFromTablePageRedirect( + page, + table1, + NEW_TABLE_TEST_CASE.name + ); + } + ); + await test.step('Delete', async () => { await deleteTestCase(page, NEW_TABLE_TEST_CASE.name); }); @@ -429,6 +444,17 @@ test('Column test case', PLAYWRIGHT_INGESTION_TAG_OBJ, async ({ page }) => { await page.locator('button').getByText('Cancel').click(); }); + await test.step( + 'Redirect to IncidentPage and verify breadcrumb', + async () => { + await verifyIncidentBreadcrumbsFromTablePageRedirect( + page, + table1, + NEW_COLUMN_TEST_CASE.name + ); + } + ); + await test.step('Delete', async () => { await deleteTestCase(page, NEW_COLUMN_TEST_CASE.name); }); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/testCases.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/testCases.ts index e62046f5752..da3fc57232b 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/testCases.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/testCases.ts @@ -39,3 +39,40 @@ export const visitDataQualityTab = async (page: Page, table: TableClass) => { await page.getByRole('tab', { name: 'Data Quality' }).click(); await testCaseResponse; }; + +export const verifyIncidentBreadcrumbsFromTablePageRedirect = async ( + page: Page, + table: TableClass, + testCaseName: string +) => { + await page + .getByRole('link', { + name: testCaseName, + }) + .click(); + + await page.waitForLoadState('networkidle'); + await page.waitForSelector('[data-testid="loader"]', { + state: 'detached', + }); + + await expect(page.getByTestId('breadcrumb-link').nth(0)).toHaveText( + `${table.entityResponseData.service.displayName}/` + ); + await expect(page.getByTestId('breadcrumb-link').nth(1)).toHaveText( + `${table.entityResponseData?.['database'].displayName}/` + ); + await expect(page.getByTestId('breadcrumb-link').nth(2)).toHaveText( + `${table.entityResponseData?.['databaseSchema'].displayName}/` + ); + await expect(page.getByTestId('breadcrumb-link').nth(3)).toHaveText( + `${table.entityResponseData?.displayName}/` + ); + + await page.getByTestId('breadcrumb-link').nth(3).click(); + + await page.waitForLoadState('networkidle'); + await page.waitForSelector('[data-testid="loader"]', { + state: 'detached', + }); +}; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/DataQualityTab/DataQualityTab.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/DataQualityTab/DataQualityTab.tsx index 902b60311f1..682dd918033 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/DataQualityTab/DataQualityTab.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/DataQualityTab/DataQualityTab.tsx @@ -269,7 +269,6 @@ const DataQualityTab: React.FC = ({ pathname: getTestCaseDetailPagePath( record.fullyQualifiedName ?? '' ), - state: { breadcrumbData }, }; return ( @@ -277,7 +276,9 @@ const DataQualityTab: React.FC = ({ className="m-0" data-testid={name} style={{ maxWidth: 280 }}> - {getEntityName(record)} + + {getEntityName(record)} + ); }, diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/IncidentManager/IncidentManagerDetailPage/IncidentManagerDetailPage.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/IncidentManager/IncidentManagerDetailPage/IncidentManagerDetailPage.tsx index c79273180cd..90eeb604047 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/IncidentManager/IncidentManagerDetailPage/IncidentManagerDetailPage.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/IncidentManager/IncidentManagerDetailPage/IncidentManagerDetailPage.tsx @@ -212,7 +212,7 @@ const IncidentManagerDetailPage = ({ const breadcrumb = useMemo(() => { const data: TitleBreadcrumbProps['titleLinks'] = location.state ?.breadcrumbData - ? location.state.breadcrumbData + ? [...location.state.breadcrumbData] : [ { name: t('label.incident-manager'), @@ -221,33 +221,33 @@ const IncidentManagerDetailPage = ({ ]; if (isDimensionPage) { - data.push( - ...[ - { - name: testCase?.name ?? '', - url: getTestCaseDetailPagePath( - testCaseFQN, - activeTab as TestCasePageTabs - ), - activeTitle: false, - }, - { - name: dimensionKey || '', - url: '', - activeTitle: true, - }, - ] - ); - } else { - data.push({ + return [ + ...data, + { + name: testCase?.name ?? '', + url: getTestCaseDetailPagePath( + testCaseFQN, + activeTab as TestCasePageTabs + ), + activeTitle: false, + }, + { + name: dimensionKey || '', + url: '', + activeTitle: true, + }, + ]; + } + + return [ + ...data, + { name: testCase?.name ?? '', url: '', activeTitle: true, - }); - } - - return data; - }, [testCase, location, isDimensionPage, dimensionKey]); + }, + ]; + }, [testCase, location.state, isDimensionPage, dimensionKey]); const handleTabChange = (activeKey: string) => { if (activeKey !== activeTab) {