diff --git a/packages/frontend-test-utils/src/app/renderInTestApp.tsx b/packages/frontend-test-utils/src/app/renderInTestApp.tsx index d599bdca01..e45bd9a8ca 100644 --- a/packages/frontend-test-utils/src/app/renderInTestApp.tsx +++ b/packages/frontend-test-utils/src/app/renderInTestApp.tsx @@ -15,7 +15,7 @@ */ import { Fragment } from 'react'; -import { MemoryRouter } from 'react-router-dom'; +import { MemoryRouter, Route, Routes } from 'react-router-dom'; import { prepareSpecializedApp } from '@backstage/frontend-app-api'; import { RenderResult, render } from '@testing-library/react'; import { ConfigReader } from '@backstage/config'; @@ -125,11 +125,31 @@ export function renderInTestApp( element: JSX.Element, options?: TestAppOptions, ): RenderResult { + const mountedPaths = options?.mountedRoutes + ? Object.keys(options.mountedRoutes) + : []; + const extensions: Array = [ createExtension({ attachTo: { id: 'app/root', input: 'children' }, output: [coreExtensionData.reactElement], factory: () => { + if (mountedPaths.length > 0) { + return [ + coreExtensionData.reactElement( + + {mountedPaths.map(path => ( + + ))} + + , + ), + ]; + } return [coreExtensionData.reactElement(element)]; }, }), diff --git a/plugins/catalog/src/alpha/pages.test.tsx b/plugins/catalog/src/alpha/pages.test.tsx index 3cd14cb510..6ed586abd0 100644 --- a/plugins/catalog/src/alpha/pages.test.tsx +++ b/plugins/catalog/src/alpha/pages.test.tsx @@ -176,11 +176,17 @@ describe('Entity page', () => { await expect( screen.findByRole('button', { name: /TechDocs/ }), - ).resolves.toHaveAttribute('href', '/techdocs'); + ).resolves.toHaveAttribute( + 'href', + '/catalog/default/component/artist-lookup/techdocs', + ); await expect( screen.findByRole('button', { name: /ApiDocs/ }), - ).resolves.toHaveAttribute('href', '/apidocs'); + ).resolves.toHaveAttribute( + 'href', + '/catalog/default/component/artist-lookup/apidocs', + ); }); it('Should rename a default group', async () => { @@ -222,11 +228,17 @@ describe('Entity page', () => { await expect( screen.findByRole('button', { name: /TechDocs/ }), - ).resolves.toHaveAttribute('href', '/techdocs'); + ).resolves.toHaveAttribute( + 'href', + '/catalog/default/component/artist-lookup/techdocs', + ); await expect( screen.findByRole('button', { name: /ApiDocs/ }), - ).resolves.toHaveAttribute('href', '/apidocs'); + ).resolves.toHaveAttribute( + 'href', + '/catalog/default/component/artist-lookup/apidocs', + ); }); it('Should disassociate a content with a default group', async () => { @@ -317,11 +329,17 @@ describe('Entity page', () => { await expect( screen.findByRole('button', { name: /TechDocs/ }), - ).resolves.toHaveAttribute('href', '/techdocs'); + ).resolves.toHaveAttribute( + 'href', + '/catalog/default/component/artist-lookup/techdocs', + ); await expect( screen.findByRole('button', { name: /ApiDocs/ }), - ).resolves.toHaveAttribute('href', '/apidocs'); + ).resolves.toHaveAttribute( + 'href', + '/catalog/default/component/artist-lookup/apidocs', + ); }); it('Should render a single-content groups as a normal tab', async () => { @@ -441,11 +459,17 @@ describe('Entity page', () => { await expect( screen.findByRole('button', { name: /TechDocs/ }), - ).resolves.toHaveAttribute('href', '/techdocs'); + ).resolves.toHaveAttribute( + 'href', + '/catalog/default/component/artist-lookup/techdocs', + ); await expect( screen.findByRole('button', { name: /ApiDocs/ }), - ).resolves.toHaveAttribute('href', '/apidocs'); + ).resolves.toHaveAttribute( + 'href', + '/catalog/default/component/artist-lookup/apidocs', + ); }); it('Should sort content by title by default', async () => { @@ -816,14 +840,14 @@ describe('Entity page', () => { screen.findByText(/artist-lookup/), ).resolves.toBeInTheDocument(); - await userEvent.click(screen.getByTestId('menu-button')); + await userEvent.click(await screen.findByTestId('menu-button')); await expect( screen.findByText('Test Title'), ).resolves.toBeInTheDocument(); await expect(screen.findByText('Test Icon')).resolves.toBeInTheDocument(); - const listItem = screen.getByText('Test Title').closest('li'); + const listItem = (await screen.findByText('Test Title')).closest('li'); expect(listItem).toHaveAttribute('aria-disabled', disabled.toString()); if (!disabled) { await userEvent.click(screen.getByText('Test Title'));