Skip to content

Commit 1b4b4dc

Browse files
author
Sebastian Silbermann
committed
Change in behavior is gated behind enableClientRenderFallbackOnTextMismatch
1 parent 4312b1f commit 1b4b4dc

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

packages/react-dom/src/__tests__/ReactDOMServerIntegrationElements-test.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ let React;
1818
let ReactDOM;
1919
let ReactDOMClient;
2020
let ReactDOMServer;
21+
let ReactFeatureFlags;
2122
let ReactTestUtils;
2223

2324
function initModules() {
@@ -26,6 +27,7 @@ function initModules() {
2627
ReactDOM = require('react-dom');
2728
ReactDOMClient = require('react-dom/client');
2829
ReactDOMServer = require('react-dom/server');
30+
ReactFeatureFlags = require('shared/ReactFeatureFlags');
2931
ReactTestUtils = require('react-dom/test-utils');
3032

3133
// Make them available to the helpers.
@@ -844,15 +846,16 @@ describe('ReactDOMServerIntegration', () => {
844846
if (
845847
render === serverRender ||
846848
render === streamRender ||
847-
render === clientRenderOnServerString
849+
(render === clientRenderOnServerString &&
850+
ReactFeatureFlags.enableClientRenderFallbackOnTextMismatch)
848851
) {
849852
expect(e.childNodes.length).toBe(1);
850-
// Everything becomes LF when parsed from server HTML or hydrated.
853+
// Everything becomes LF when parsed from server HTML or hydrated if enableClientRenderFallbackOnTextMismatch is on.
851854
// Null character is ignored.
852855
expectNode(e.childNodes[0], TEXT_NODE_TYPE, 'foo\nbar\nbaz\nqux');
853856
} else {
854857
expect(e.childNodes.length).toBe(1);
855-
// Client rendering uses JS value with CR.
858+
// Client rendering (or hydration without enableClientRenderFallbackOnTextMismatch) uses JS value with CR.
856859
// Null character stays.
857860

858861
expectNode(
@@ -876,14 +879,22 @@ describe('ReactDOMServerIntegration', () => {
876879
if (
877880
render === serverRender ||
878881
render === streamRender ||
879-
render === clientRenderOnServerString
882+
(render === clientRenderOnServerString &&
883+
ReactFeatureFlags.enableClientRenderFallbackOnTextMismatch)
880884
) {
881885
// We have three nodes because there is a comment between them.
882886
expect(e.childNodes.length).toBe(3);
883-
// Everything becomes LF when parsed from server HTML or hydrated.
887+
// Everything becomes LF when parsed from server HTML or hydrated if enableClientRenderFallbackOnTextMismatch is on.
884888
// Null character is ignored.
885889
expectNode(e.childNodes[0], TEXT_NODE_TYPE, 'foo\nbar');
886890
expectNode(e.childNodes[2], TEXT_NODE_TYPE, '\nbaz\nqux');
891+
} else if (render === clientRenderOnServerString) {
892+
// We have three nodes because there is a comment between them.
893+
expect(e.childNodes.length).toBe(3);
894+
// Hydration without enableClientRenderFallbackOnTextMismatch uses JS value with CR and null character.
895+
896+
expectNode(e.childNodes[0], TEXT_NODE_TYPE, 'foo\rbar');
897+
expectNode(e.childNodes[2], TEXT_NODE_TYPE, '\r\nbaz\nqux\u0000');
887898
} else {
888899
expect(e.childNodes.length).toBe(2);
889900
// Client rendering uses JS value with CR and null character.

0 commit comments

Comments
 (0)