From e03dfa845edded567154024460272c6419d26e0f Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 25 Jun 2025 19:27:17 +0200 Subject: [PATCH 1/9] Add edge test for component and owner stacks in halted components Co-authored-by: Sebastian "Sebbie" Silbermann --- .../src/__tests__/ReactFlightDOMEdge-test.js | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js index 0c31177f1db49..311c2975e48f8 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js @@ -32,6 +32,7 @@ let webpackModuleLoading; let React; let ReactServer; let ReactDOMServer; +let ReactDOMServerStatic; let ReactServerDOMServer; let ReactServerDOMStaticServer; let ReactServerDOMClient; @@ -102,6 +103,7 @@ describe('ReactFlightDOMEdge', () => { ); React = require('react'); ReactDOMServer = require('react-dom/server.edge'); + ReactDOMServerStatic = require('react-dom/static.edge'); ReactServerDOMClient = require('react-server-dom-webpack/client'); use = React.use; }); @@ -1777,4 +1779,127 @@ describe('ReactFlightDOMEdge', () => { expect(error).not.toBe(null); expect(error.message).toBe(expectedMessage); }); + + // @gate __DEV__ && enableHalt && enableAsyncDebugInfo + it.failing( + 'includes source locations in component stacks for halted components', + async () => { + async function Component() { + await new Promise(() => {}); + return null; + } + + function App() { + return ReactServer.createElement( + 'html', + null, + ReactServer.createElement( + 'body', + null, + ReactServer.createElement( + ReactServer.Suspense, + {fallback: 'Loading...'}, + ReactServer.createElement(Component, null), + ), + ), + ); + } + + const serverAbortController = new AbortController(); + const errors = []; + const prerenderResult = ReactServerDOMStaticServer.unstable_prerender( + ReactServer.createElement(App, null), + webpackMap, + { + signal: serverAbortController.signal, + onError(err) { + errors.push(err); + }, + }, + ); + + await new Promise(resolve => { + setImmediate(() => { + serverAbortController.abort(); + resolve(); + }); + }); + + const {prelude} = await prerenderResult; + + expect(errors).toEqual([]); + + function ClientRoot({response}) { + return use(response); + } + + const prerenderResponse = ReactServerDOMClient.createFromReadableStream( + await createBufferedUnclosingStream(prelude), + { + serverConsumerManifest: { + moduleMap: null, + moduleLoading: null, + }, + }, + ); + + let componentStack; + let ownerStack; + + const clientAbortController = new AbortController(); + + const fizzPrerenderStreamResult = ReactDOMServerStatic.prerender( + React.createElement(ClientRoot, {response: prerenderResponse}), + { + signal: clientAbortController.signal, + onError(error, errorInfo) { + componentStack = errorInfo.componentStack; + ownerStack = ReactServer.captureOwnerStack(); + }, + }, + ); + + await new Promise(resolve => { + setImmediate(() => { + clientAbortController.abort(); + resolve(); + }); + }); + + const fizzPrerenderStream = await fizzPrerenderStreamResult; + const prerenderHTML = await readResult(fizzPrerenderStream.prelude); + + expect(prerenderHTML).toContain('Loading...'); + + expect(normalizeCodeLocInfo(componentStack)).toBe( + '\n in Component (at **)\n in Suspense\n in body\n in html\n in ClientRoot (at **)', + ); + + expect(normalizeCodeLocInfo(ownerStack)).toBe('\n in App (at **)'); + }, + ); }); + +async function createBufferedUnclosingStream( + prelude: ReadableStream, +): ReadableStream { + const chunks: Array = []; + const reader = prelude.getReader(); + while (true) { + const {done, value} = await reader.read(); + if (done) { + break; + } else { + chunks.push(value); + } + } + + let i = 0; + return new ReadableStream({ + async pull(controller) { + if (i < chunks.length) { + controller.enqueue(chunks[i++]); + } + }, + }); +} From ff38819935bf1e9c09617918a2ab23784cf6feca Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 25 Jun 2025 20:46:05 +0200 Subject: [PATCH 2/9] Fix assertions for edge test --- .../src/__tests__/ReactFlightDOMEdge-test.js | 147 +++++++++--------- 1 file changed, 73 insertions(+), 74 deletions(-) diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js index 311c2975e48f8..1d11952f88118 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js @@ -1781,103 +1781,102 @@ describe('ReactFlightDOMEdge', () => { }); // @gate __DEV__ && enableHalt && enableAsyncDebugInfo - it.failing( - 'includes source locations in component stacks for halted components', - async () => { - async function Component() { - await new Promise(() => {}); - return null; - } + it('does not include source locations in component stacks for halted components', async () => { + // We only support adding source locations for halted components in the Node.js builds. + + async function Component() { + await new Promise(() => {}); + return null; + } - function App() { - return ReactServer.createElement( - 'html', + function App() { + return ReactServer.createElement( + 'html', + null, + ReactServer.createElement( + 'body', null, ReactServer.createElement( - 'body', - null, - ReactServer.createElement( - ReactServer.Suspense, - {fallback: 'Loading...'}, - ReactServer.createElement(Component, null), - ), + ReactServer.Suspense, + {fallback: 'Loading...'}, + ReactServer.createElement(Component, null), ), - ); - } + ), + ); + } - const serverAbortController = new AbortController(); - const errors = []; - const prerenderResult = ReactServerDOMStaticServer.unstable_prerender( - ReactServer.createElement(App, null), - webpackMap, - { - signal: serverAbortController.signal, - onError(err) { - errors.push(err); - }, + const serverAbortController = new AbortController(); + const errors = []; + const prerenderResult = ReactServerDOMStaticServer.unstable_prerender( + ReactServer.createElement(App, null), + webpackMap, + { + signal: serverAbortController.signal, + onError(err) { + errors.push(err); }, - ); + }, + ); - await new Promise(resolve => { - setImmediate(() => { - serverAbortController.abort(); - resolve(); - }); + await new Promise(resolve => { + setImmediate(() => { + serverAbortController.abort(); + resolve(); }); + }); - const {prelude} = await prerenderResult; + const {prelude} = await prerenderResult; - expect(errors).toEqual([]); + expect(errors).toEqual([]); - function ClientRoot({response}) { - return use(response); - } + function ClientRoot({response}) { + return use(response); + } - const prerenderResponse = ReactServerDOMClient.createFromReadableStream( - await createBufferedUnclosingStream(prelude), - { - serverConsumerManifest: { - moduleMap: null, - moduleLoading: null, - }, + const prerenderResponse = ReactServerDOMClient.createFromReadableStream( + await createBufferedUnclosingStream(prelude), + { + serverConsumerManifest: { + moduleMap: null, + moduleLoading: null, }, - ); + }, + ); - let componentStack; - let ownerStack; + let componentStack; + let ownerStack; - const clientAbortController = new AbortController(); + const clientAbortController = new AbortController(); - const fizzPrerenderStreamResult = ReactDOMServerStatic.prerender( - React.createElement(ClientRoot, {response: prerenderResponse}), - { - signal: clientAbortController.signal, - onError(error, errorInfo) { - componentStack = errorInfo.componentStack; - ownerStack = ReactServer.captureOwnerStack(); - }, + const fizzPrerenderStreamResult = ReactDOMServerStatic.prerender( + React.createElement(ClientRoot, {response: prerenderResponse}), + { + signal: clientAbortController.signal, + onError(error, errorInfo) { + componentStack = errorInfo.componentStack; + ownerStack = React.captureOwnerStack(); }, - ); + }, + ); - await new Promise(resolve => { - setImmediate(() => { - clientAbortController.abort(); - resolve(); - }); + await new Promise(resolve => { + setImmediate(() => { + clientAbortController.abort(); + resolve(); }); + }); - const fizzPrerenderStream = await fizzPrerenderStreamResult; - const prerenderHTML = await readResult(fizzPrerenderStream.prelude); + const fizzPrerenderStream = await fizzPrerenderStreamResult; + const prerenderHTML = await readResult(fizzPrerenderStream.prelude); - expect(prerenderHTML).toContain('Loading...'); + expect(prerenderHTML).toContain('Loading...'); - expect(normalizeCodeLocInfo(componentStack)).toBe( - '\n in Component (at **)\n in Suspense\n in body\n in html\n in ClientRoot (at **)', - ); + expect(normalizeCodeLocInfo(componentStack)).toBe( + '\n in Component\n in Suspense\n in body\n in html\n in ClientRoot (at **)', + ); - expect(normalizeCodeLocInfo(ownerStack)).toBe('\n in App (at **)'); - }, - ); + expect(normalizeCodeLocInfo(ownerStack)).toBe('\n in App (at **)'); + }); }); async function createBufferedUnclosingStream( From 30434fb56dd1ea2aacdfaa65e9a17a2d58866319 Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 25 Jun 2025 20:47:26 +0200 Subject: [PATCH 3/9] Add Node test --- .../src/__tests__/ReactFlightDOMNode-test.js | 150 ++++++++++++++++++ 1 file changed, 150 insertions(+) diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js index 5840762a73c28..985609a4f6f15 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js @@ -21,6 +21,7 @@ let webpackModules; let webpackModuleLoading; let React; let ReactDOMServer; +let ReactDOMServerStatic; let ReactServer; let ReactServerDOMServer; let ReactServerDOMStaticServer; @@ -47,6 +48,7 @@ describe('ReactFlightDOMNode', () => { require('react-server-dom-webpack/server.node'), ); ReactServer = require('react'); + ReactDOMServerStatic = require('react-dom/static.node'); ReactServerDOMServer = require('react-server-dom-webpack/server'); if (__EXPERIMENTAL__) { jest.mock('react-server-dom-webpack/static', () => @@ -75,6 +77,15 @@ describe('ReactFlightDOMNode', () => { use = React.use; }); + function normalizeCodeLocInfo(str) { + return ( + str && + str.replace(/^ +(?:at|in) ([\S]+)[^\n]*/gm, function (m, name) { + return ' in ' + name + (/\d/.test(m) ? ' (at **)' : ''); + }) + ); + } + function readResult(stream) { return new Promise((resolve, reject) => { let buffer = ''; @@ -93,6 +104,42 @@ describe('ReactFlightDOMNode', () => { }); } + async function readWebResult(webStream: ReadableStream) { + const reader = webStream.getReader(); + let result = ''; + while (true) { + const {done, value} = await reader.read(); + if (done) { + return result; + } + result += Buffer.from(value).toString('utf8'); + } + } + + async function createBufferedUnclosingStream( + prelude: ReadableStream, + ): ReadableStream { + const chunks: Array = []; + const reader = prelude.getReader(); + while (true) { + const {done, value} = await reader.read(); + if (done) { + break; + } else { + chunks.push(value); + } + } + + let i = 0; + return new ReadableStream({ + async pull(controller) { + if (i < chunks.length) { + controller.enqueue(chunks[i++]); + } + }, + }); + } + it('should support web streams in node', async () => { function Text({children}) { return {children}; @@ -543,4 +590,107 @@ describe('ReactFlightDOMNode', () => { const result = await readResult(ssrStream); expect(result).toContain('loading...'); }); + + // @gate __DEV__ && enableHalt && enableAsyncDebugInfo + it('includes source locations in component and owner stacks for halted components', async () => { + async function Component() { + await new Promise(() => {}); + return null; + } + + function App() { + return ReactServer.createElement( + 'html', + null, + ReactServer.createElement( + 'body', + null, + ReactServer.createElement( + ReactServer.Suspense, + {fallback: 'Loading...'}, + ReactServer.createElement(Component, null), + ), + ), + ); + } + + const serverAbortController = new AbortController(); + const {pendingResult} = await serverAct(async () => { + // destructure trick to avoid the act scope from awaiting the returned value + return { + pendingResult: ReactServerDOMStaticServer.unstable_prerender( + ReactServer.createElement(App, null), + webpackMap, + { + signal: serverAbortController.signal, + }, + ), + }; + }); + + await await serverAct( + async () => + new Promise(resolve => { + setImmediate(() => { + serverAbortController.abort(); + resolve(); + }); + }), + ); + + const {prelude} = await pendingResult; + + function ClientRoot({response}) { + return use(response); + } + + const prerenderResponse = ReactServerDOMClient.createFromReadableStream( + await createBufferedUnclosingStream(prelude), + { + serverConsumerManifest: { + moduleMap: null, + moduleLoading: null, + }, + }, + ); + + let componentStack; + let ownerStack; + + const clientAbortController = new AbortController(); + + const fizzPrerenderStreamResult = ReactDOMServerStatic.prerender( + React.createElement(ClientRoot, {response: prerenderResponse}), + { + signal: clientAbortController.signal, + onError(error, errorInfo) { + componentStack = errorInfo.componentStack; + ownerStack = React.captureOwnerStack(); + }, + }, + ); + + await await serverAct( + async () => + new Promise(resolve => { + setImmediate(() => { + clientAbortController.abort(); + resolve(); + }); + }), + ); + + const fizzPrerenderStream = await fizzPrerenderStreamResult; + const prerenderHTML = await readWebResult(fizzPrerenderStream.prelude); + + expect(prerenderHTML).toContain('Loading...'); + + expect(normalizeCodeLocInfo(componentStack)).toBe( + '\n in Component (at **)\n in Suspense\n in body\n in html\n in ClientRoot (at **)', + ); + + expect(normalizeCodeLocInfo(ownerStack)).toBe( + '\n in Component (at **)\n in App (at **)', + ); + }); }); From a04475540007a76937d73cc046c2efa3402555bc Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 25 Jun 2025 20:56:20 +0200 Subject: [PATCH 4/9] Adjust gating --- .../src/__tests__/ReactFlightDOMEdge-test.js | 24 ++++++++++++---- .../src/__tests__/ReactFlightDOMNode-test.js | 28 +++++++++++++------ 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js index 1d11952f88118..265c5dc023017 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js @@ -1780,7 +1780,7 @@ describe('ReactFlightDOMEdge', () => { expect(error.message).toBe(expectedMessage); }); - // @gate __DEV__ && enableHalt && enableAsyncDebugInfo + // @gate enableHalt && enableAsyncDebugInfo it('does not include source locations in component stacks for halted components', async () => { // We only support adding source locations for halted components in the Node.js builds. @@ -1854,7 +1854,9 @@ describe('ReactFlightDOMEdge', () => { signal: clientAbortController.signal, onError(error, errorInfo) { componentStack = errorInfo.componentStack; - ownerStack = React.captureOwnerStack(); + ownerStack = React.captureOwnerStack + ? React.captureOwnerStack() + : null; }, }, ); @@ -1871,11 +1873,21 @@ describe('ReactFlightDOMEdge', () => { expect(prerenderHTML).toContain('Loading...'); - expect(normalizeCodeLocInfo(componentStack)).toBe( - '\n in Component\n in Suspense\n in body\n in html\n in ClientRoot (at **)', - ); + if (__DEV__) { + expect(normalizeCodeLocInfo(componentStack)).toBe( + '\n in Component\n in Suspense\n in body\n in html\n in ClientRoot (at **)', + ); + } else { + expect(normalizeCodeLocInfo(componentStack)).toBe( + '\n in Suspense\n in body\n in html\n in ClientRoot (at **)', + ); + } - expect(normalizeCodeLocInfo(ownerStack)).toBe('\n in App (at **)'); + if (__DEV__) { + expect(normalizeCodeLocInfo(ownerStack)).toBe('\n in App (at **)'); + } else { + expect(ownerStack).toBeNull(); + } }); }); diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js index 985609a4f6f15..380646b454e01 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js @@ -591,7 +591,7 @@ describe('ReactFlightDOMNode', () => { expect(result).toContain('loading...'); }); - // @gate __DEV__ && enableHalt && enableAsyncDebugInfo + // @gate enableHalt && enableAsyncDebugInfo it('includes source locations in component and owner stacks for halted components', async () => { async function Component() { await new Promise(() => {}); @@ -665,7 +665,9 @@ describe('ReactFlightDOMNode', () => { signal: clientAbortController.signal, onError(error, errorInfo) { componentStack = errorInfo.componentStack; - ownerStack = React.captureOwnerStack(); + ownerStack = React.captureOwnerStack + ? React.captureOwnerStack() + : null; }, }, ); @@ -685,12 +687,22 @@ describe('ReactFlightDOMNode', () => { expect(prerenderHTML).toContain('Loading...'); - expect(normalizeCodeLocInfo(componentStack)).toBe( - '\n in Component (at **)\n in Suspense\n in body\n in html\n in ClientRoot (at **)', - ); + if (__DEV__) { + expect(normalizeCodeLocInfo(componentStack)).toBe( + '\n in Component (at **)\n in Suspense\n in body\n in html\n in ClientRoot (at **)', + ); + } else { + expect(normalizeCodeLocInfo(componentStack)).toBe( + '\n in Suspense\n in body\n in html\n in ClientRoot (at **)', + ); + } - expect(normalizeCodeLocInfo(ownerStack)).toBe( - '\n in Component (at **)\n in App (at **)', - ); + if (__DEV__) { + expect(normalizeCodeLocInfo(ownerStack)).toBe( + '\n in Component (at **)\n in App (at **)', + ); + } else { + expect(ownerStack).toBeNull(); + } }); }); From 6cf974726aa3c4f5806d00b95e69056cd4c0936a Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 25 Jun 2025 21:00:28 +0200 Subject: [PATCH 5/9] Move helper function to the top --- .../src/__tests__/ReactFlightDOMEdge-test.js | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js index 265c5dc023017..d085d3c96ed4b 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js @@ -230,6 +230,30 @@ describe('ReactFlightDOMEdge', () => { } } + async function createBufferedUnclosingStream( + prelude: ReadableStream, + ): ReadableStream { + const chunks: Array = []; + const reader = prelude.getReader(); + while (true) { + const {done, value} = await reader.read(); + if (done) { + break; + } else { + chunks.push(value); + } + } + + let i = 0; + return new ReadableStream({ + async pull(controller) { + if (i < chunks.length) { + controller.enqueue(chunks[i++]); + } + }, + }); + } + it('should allow an alternative module mapping to be used for SSR', async () => { function ClientComponent() { return Client Component; @@ -1890,27 +1914,3 @@ describe('ReactFlightDOMEdge', () => { } }); }); - -async function createBufferedUnclosingStream( - prelude: ReadableStream, -): ReadableStream { - const chunks: Array = []; - const reader = prelude.getReader(); - while (true) { - const {done, value} = await reader.read(); - if (done) { - break; - } else { - chunks.push(value); - } - } - - let i = 0; - return new ReadableStream({ - async pull(controller) { - if (i < chunks.length) { - controller.enqueue(chunks[i++]); - } - }, - }); -} From 96c9549a1ca69421031143a815b46081f6fdf0f5 Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 25 Jun 2025 21:02:43 +0200 Subject: [PATCH 6/9] Fix gate in Edge test --- .../src/__tests__/ReactFlightDOMEdge-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js index d085d3c96ed4b..53aeb9da4f580 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js @@ -1804,7 +1804,7 @@ describe('ReactFlightDOMEdge', () => { expect(error.message).toBe(expectedMessage); }); - // @gate enableHalt && enableAsyncDebugInfo + // @gate enableHalt it('does not include source locations in component stacks for halted components', async () => { // We only support adding source locations for halted components in the Node.js builds. From f35d58be7353840d9e4f5d626a3f8e8b0e3673a1 Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 25 Jun 2025 21:16:39 +0200 Subject: [PATCH 7/9] Make test fail for `www-modern` --- .../src/__tests__/ReactFlightDOMNode-test.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js index 380646b454e01..e2778006a442c 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js @@ -614,6 +614,7 @@ describe('ReactFlightDOMNode', () => { ); } + const errors = []; const serverAbortController = new AbortController(); const {pendingResult} = await serverAct(async () => { // destructure trick to avoid the act scope from awaiting the returned value @@ -623,6 +624,9 @@ describe('ReactFlightDOMNode', () => { webpackMap, { signal: serverAbortController.signal, + onError(error) { + errors.push(error); + }, }, ), }; @@ -640,6 +644,8 @@ describe('ReactFlightDOMNode', () => { const {prelude} = await pendingResult; + expect(errors).toEqual([]); + function ClientRoot({response}) { return use(response); } From c453bcfe5bc630b8e554dd459bb1875381067c42 Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 25 Jun 2025 21:25:02 +0200 Subject: [PATCH 8/9] Remove `.node` suffix require call --- .../src/__tests__/ReactFlightDOMNode-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js index e2778006a442c..6f0a18bbafe03 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js @@ -48,7 +48,7 @@ describe('ReactFlightDOMNode', () => { require('react-server-dom-webpack/server.node'), ); ReactServer = require('react'); - ReactDOMServerStatic = require('react-dom/static.node'); + ReactDOMServerStatic = require('react-dom/static'); ReactServerDOMServer = require('react-server-dom-webpack/server'); if (__EXPERIMENTAL__) { jest.mock('react-server-dom-webpack/static', () => From d0981a9e45fb470699456d07422c81f9fd650ae1 Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 25 Jun 2025 21:46:55 +0200 Subject: [PATCH 9/9] Fix Fizz import --- .../src/__tests__/ReactFlightDOMEdge-test.js | 6 +++--- .../src/__tests__/ReactFlightDOMNode-test.js | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js index 53aeb9da4f580..9e01c53ea0c45 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMEdge-test.js @@ -32,7 +32,7 @@ let webpackModuleLoading; let React; let ReactServer; let ReactDOMServer; -let ReactDOMServerStatic; +let ReactDOMFizzStatic; let ReactServerDOMServer; let ReactServerDOMStaticServer; let ReactServerDOMClient; @@ -103,7 +103,7 @@ describe('ReactFlightDOMEdge', () => { ); React = require('react'); ReactDOMServer = require('react-dom/server.edge'); - ReactDOMServerStatic = require('react-dom/static.edge'); + ReactDOMFizzStatic = require('react-dom/static.edge'); ReactServerDOMClient = require('react-server-dom-webpack/client'); use = React.use; }); @@ -1872,7 +1872,7 @@ describe('ReactFlightDOMEdge', () => { const clientAbortController = new AbortController(); - const fizzPrerenderStreamResult = ReactDOMServerStatic.prerender( + const fizzPrerenderStreamResult = ReactDOMFizzStatic.prerender( React.createElement(ClientRoot, {response: prerenderResponse}), { signal: clientAbortController.signal, diff --git a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js index 6f0a18bbafe03..aba7430bc2a34 100644 --- a/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js +++ b/packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js @@ -21,7 +21,7 @@ let webpackModules; let webpackModuleLoading; let React; let ReactDOMServer; -let ReactDOMServerStatic; +let ReactDOMFizzStatic; let ReactServer; let ReactServerDOMServer; let ReactServerDOMStaticServer; @@ -48,7 +48,6 @@ describe('ReactFlightDOMNode', () => { require('react-server-dom-webpack/server.node'), ); ReactServer = require('react'); - ReactDOMServerStatic = require('react-dom/static'); ReactServerDOMServer = require('react-server-dom-webpack/server'); if (__EXPERIMENTAL__) { jest.mock('react-server-dom-webpack/static', () => @@ -72,6 +71,7 @@ describe('ReactFlightDOMNode', () => { React = require('react'); ReactDOMServer = require('react-dom/server.node'); + ReactDOMFizzStatic = require('react-dom/static'); ReactServerDOMClient = require('react-server-dom-webpack/client'); Stream = require('stream'); use = React.use; @@ -665,7 +665,7 @@ describe('ReactFlightDOMNode', () => { const clientAbortController = new AbortController(); - const fizzPrerenderStreamResult = ReactDOMServerStatic.prerender( + const fizzPrerenderStreamResult = ReactDOMFizzStatic.prerender( React.createElement(ClientRoot, {response: prerenderResponse}), { signal: clientAbortController.signal,