From e861318c2d49bc86ec60b0fe52a1a93c6f83c2d7 Mon Sep 17 00:00:00 2001 From: Ashley Harrison Date: Mon, 8 Dec 2025 13:52:42 +0000 Subject: [PATCH] almost fix PublicDashboardScenePage --- .../pages/PublicDashboardScenePage.test.tsx | 49 ++++++++++++------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/public/app/features/dashboard-scene/pages/PublicDashboardScenePage.test.tsx b/public/app/features/dashboard-scene/pages/PublicDashboardScenePage.test.tsx index 24ce8398e14..634587f48ba 100644 --- a/public/app/features/dashboard-scene/pages/PublicDashboardScenePage.test.tsx +++ b/public/app/features/dashboard-scene/pages/PublicDashboardScenePage.test.tsx @@ -1,4 +1,4 @@ -import { screen, waitForElementToBeRemoved } from '@testing-library/react'; +import { act, screen } from '@testing-library/react'; import { Route, Routes } from 'react-router-dom-v5-compat'; import { of } from 'rxjs'; import { render } from 'test/test-utils'; @@ -26,7 +26,7 @@ jest.mock('@grafana/runtime', () => ({ }, })); -function setup(token = 'an-access-token') { +async function setup(token = 'an-access-token') { const pubdashProps: PublicDashboardSceneProps = { ...getRouteComponentProps({ route: { @@ -37,11 +37,19 @@ function setup(token = 'an-access-token') { }), }; - return render( - - } /> - , - { historyOptions: { initialEntries: [`/public-dashboards/${token}`] } } + // TODO investigate why act is needed here + // see https://github.com/testing-library/react-testing-library/issues/1375 + return await act(() => + render( + + } + key={token} + /> + , + { historyOptions: { initialEntries: [`/public-dashboards/${token}`] } } + ) ); } @@ -115,7 +123,6 @@ const publicDashboardSceneSelector = e2eSelectors.pages.PublicDashboardScene; describe('PublicDashboardScenePage', () => { beforeEach(() => { - config.publicDashboardAccessToken = 'an-access-token'; getDashboardScenePageStateManager().clearDashboardCache(); setupLoadDashboardMock({ dashboard: simpleDashboard, meta: {} }); @@ -125,7 +132,9 @@ describe('PublicDashboardScenePage', () => { }); it('can render public dashboard', async () => { - setup(); + const accessToken = 'an-access-token'; + config.publicDashboardAccessToken = accessToken; + await setup(accessToken); await waitForDashboardGridToRender(); @@ -139,7 +148,9 @@ describe('PublicDashboardScenePage', () => { }); it('cannot see menu panel', async () => { - setup(); + const accessToken = 'cannot-see-menu-panel'; + config.publicDashboardAccessToken = accessToken; + await setup(accessToken); await waitForDashboardGridToRender(); @@ -148,7 +159,9 @@ describe('PublicDashboardScenePage', () => { }); it('shows time controls when it is not hidden', async () => { - setup(); + const accessToken = 'shows-time-controls'; + config.publicDashboardAccessToken = accessToken; + await setup(accessToken); await waitForDashboardGridToRender(); @@ -158,7 +171,9 @@ describe('PublicDashboardScenePage', () => { }); it('does not render paused or deleted screen', async () => { - setup(); + const accessToken = 'does-not-render-paused-or-deleted-screen'; + config.publicDashboardAccessToken = accessToken; + await setup(accessToken); await waitForDashboardGridToRender(); @@ -172,7 +187,7 @@ describe('PublicDashboardScenePage', () => { dashboard: { ...simpleDashboard, timepicker: { hidden: true } }, meta: {}, }); - setup(accessToken); + await setup(accessToken); await waitForDashboardGridToRender(); @@ -207,9 +222,7 @@ describe('given unavailable public dashboard', () => { }, }); - setup(accessToken); - - await waitForElementToBeRemoved(screen.getByTestId(publicDashboardSceneSelector.loadingPage)); + await setup(accessToken); expect(screen.queryByTestId(publicDashboardSceneSelector.page)).not.toBeInTheDocument(); expect(screen.getByTestId(publicDashboardSelector.NotAvailable.title)).toBeInTheDocument(); @@ -239,9 +252,7 @@ describe('given unavailable public dashboard', () => { }, }); - setup(accessToken); - - await waitForElementToBeRemoved(screen.getByTestId(publicDashboardSceneSelector.loadingPage)); + await setup(accessToken); expect(screen.queryByTestId(publicDashboardSelector.page)).not.toBeInTheDocument(); expect(screen.queryByTestId(publicDashboardSelector.NotAvailable.pausedDescription)).not.toBeInTheDocument();