@@ -18,6 +18,7 @@ let React;
18
18
let ReactDOM ;
19
19
let ReactDOMClient ;
20
20
let ReactDOMServer ;
21
+ let ReactFeatureFlags ;
21
22
let ReactTestUtils ;
22
23
23
24
function initModules ( ) {
@@ -26,6 +27,7 @@ function initModules() {
26
27
ReactDOM = require ( 'react-dom' ) ;
27
28
ReactDOMClient = require ( 'react-dom/client' ) ;
28
29
ReactDOMServer = require ( 'react-dom/server' ) ;
30
+ ReactFeatureFlags = require ( 'shared/ReactFeatureFlags' ) ;
29
31
ReactTestUtils = require ( 'react-dom/test-utils' ) ;
30
32
31
33
// Make them available to the helpers.
@@ -844,15 +846,16 @@ describe('ReactDOMServerIntegration', () => {
844
846
if (
845
847
render === serverRender ||
846
848
render === streamRender ||
847
- render === clientRenderOnServerString
849
+ ( render === clientRenderOnServerString &&
850
+ ReactFeatureFlags . enableClientRenderFallbackOnTextMismatch )
848
851
) {
849
852
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 .
851
854
// Null character is ignored.
852
855
expectNode ( e . childNodes [ 0 ] , TEXT_NODE_TYPE , 'foo\nbar\nbaz\nqux' ) ;
853
856
} else {
854
857
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.
856
859
// Null character stays.
857
860
858
861
expectNode (
@@ -876,14 +879,22 @@ describe('ReactDOMServerIntegration', () => {
876
879
if (
877
880
render === serverRender ||
878
881
render === streamRender ||
879
- render === clientRenderOnServerString
882
+ ( render === clientRenderOnServerString &&
883
+ ReactFeatureFlags . enableClientRenderFallbackOnTextMismatch )
880
884
) {
881
885
// We have three nodes because there is a comment between them.
882
886
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 .
884
888
// Null character is ignored.
885
889
expectNode ( e . childNodes [ 0 ] , TEXT_NODE_TYPE , 'foo\nbar' ) ;
886
890
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' ) ;
887
898
} else {
888
899
expect ( e . childNodes . length ) . toBe ( 2 ) ;
889
900
// Client rendering uses JS value with CR and null character.
0 commit comments