From 6982781efe8e3f27de0accd1e86feeadeaf72951 Mon Sep 17 00:00:00 2001 From: wanxiankai Date: Tue, 28 Jul 2026 16:10:23 +0800 Subject: [PATCH] fix: wait for inline stories before rerendering docs --- .../modules/preview-web/PreviewWeb.test.ts | 23 ++++++++++++++++++- .../preview-web/PreviewWithSelection.tsx | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/code/core/src/preview-api/modules/preview-web/PreviewWeb.test.ts b/code/core/src/preview-api/modules/preview-web/PreviewWeb.test.ts index 70e2aff9a555..ca7aede5d962 100644 --- a/code/core/src/preview-api/modules/preview-web/PreviewWeb.test.ts +++ b/code/core/src/preview-api/modules/preview-web/PreviewWeb.test.ts @@ -963,10 +963,31 @@ describe('PreviewWeb', () => { mockChannel.emit.mockClear(); docsRenderer.render.mockClear(); emitter.emit(UPDATE_GLOBALS, { globals: { a: 'd' } }); - await waitForEvents([GLOBALS_UPDATED]); + await waitForEvents([DOCS_RENDERED]); expect(docsRenderer.render).toHaveBeenCalled(); }); + + it('waits for inline stories to rerender before rerendering the docs container', async () => { + document.location.search = '?id=component-one--docs&viewMode=docs'; + const preview = await createAndRenderPreview(); + const [inlineStoryRerender, finishInlineStoryRerender] = createGate(); + const rerenderInlineStory = vi.fn(() => inlineStoryRerender); + preview.storyRenders.push({ + rerender: rerenderInlineStory, + } as unknown as (typeof preview.storyRenders)[number]); + const rerenderDocs = vi.spyOn(preview.currentRender!, 'rerender'); + + const updateGlobals = preview.onUpdateGlobals({ globals: { a: 'd' } }); + await vi.waitFor(() => expect(rerenderInlineStory).toHaveBeenCalled()); + + expect(rerenderDocs).not.toHaveBeenCalled(); + + finishInlineStoryRerender(); + await updateGlobals; + + expect(rerenderDocs).toHaveBeenCalledOnce(); + }); }); }); diff --git a/code/core/src/preview-api/modules/preview-web/PreviewWithSelection.tsx b/code/core/src/preview-api/modules/preview-web/PreviewWithSelection.tsx index f06144df17f1..37cc66e1887c 100644 --- a/code/core/src/preview-api/modules/preview-web/PreviewWithSelection.tsx +++ b/code/core/src/preview-api/modules/preview-web/PreviewWithSelection.tsx @@ -256,7 +256,7 @@ export class PreviewWithSelection extends Preview