Skip to content

Commit 2ba47ff

Browse files
rickhanloniiSebastian Silbermann
authored andcommitted
Add ReactDOMClient to ServerIntegration(Hooks|NewContext) (facebook#28135)
## Overview Branched off facebook#28130 ### ~Failing~ Fixed by @eps1lon Most of the tests pass, but there are 3 tests that have additional warnings due to client render error retries. For example, before we would log: ``` Warning: Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. Warning: Expected server HTML to contain a matching text node for "0" in <div>. ``` And now we log ``` Warning: Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. Warning: Expected server HTML to contain a matching text node for "0" in <div>. Warning: Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ``` We can't just update the expected error count for these tests, because the additional error only happens on the client. So I need some guidance on how to fix these. --------- Co-authored-by: Sebastian Silbermann <[email protected]>
1 parent f44539f commit 2ba47ff

File tree

2 files changed

+51
-17
lines changed

2 files changed

+51
-17
lines changed

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

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
1616

1717
let React;
18-
let ReactDOM;
18+
let ReactDOMClient;
1919
let ReactDOMServer;
2020
let ReactTestUtils;
2121
let useState;
@@ -39,7 +39,7 @@ function initModules() {
3939
jest.resetModules();
4040

4141
React = require('react');
42-
ReactDOM = require('react-dom');
42+
ReactDOMClient = require('react-dom/client');
4343
ReactDOMServer = require('react-dom/server');
4444
ReactTestUtils = require('react-dom/test-utils');
4545
useState = React.useState;
@@ -67,14 +67,19 @@ function initModules() {
6767

6868
// Make them available to the helpers.
6969
return {
70-
ReactDOM,
70+
ReactDOMClient,
7171
ReactDOMServer,
7272
ReactTestUtils,
7373
};
7474
}
7575

76-
const {resetModules, itRenders, itThrowsWhenRendering, serverRender} =
77-
ReactDOMServerIntegrationUtils(initModules);
76+
const {
77+
resetModules,
78+
itRenders,
79+
itThrowsWhenRendering,
80+
clientRenderOnBadMarkup,
81+
serverRender,
82+
} = ReactDOMServerIntegrationUtils(initModules);
7883

7984
describe('ReactDOMServerHooks', () => {
8085
beforeEach(() => {
@@ -422,8 +427,13 @@ describe('ReactDOMServerHooks', () => {
422427
});
423428
return 'hi';
424429
}
425-
426-
const domNode = await render(<App />, 1);
430+
const domNode = await render(
431+
<App />,
432+
render === clientRenderOnBadMarkup
433+
? // On hydration mismatch we retry and therefore log the warning again.
434+
2
435+
: 1,
436+
);
427437
expect(domNode.textContent).toEqual('hi');
428438
});
429439

@@ -436,7 +446,13 @@ describe('ReactDOMServerHooks', () => {
436446
return value;
437447
}
438448

439-
const domNode = await render(<App />, 1);
449+
const domNode = await render(
450+
<App />,
451+
render === clientRenderOnBadMarkup
452+
? // On hydration mismatch we retry and therefore log the warning again.
453+
2
454+
: 1,
455+
);
440456
expect(domNode.textContent).toEqual('0');
441457
});
442458
});
@@ -859,7 +875,13 @@ describe('ReactDOMServerHooks', () => {
859875
return <Text text={count} />;
860876
}
861877

862-
const domNode1 = await render(<ReadInMemo />, 1);
878+
const domNode1 = await render(
879+
<ReadInMemo />,
880+
render === clientRenderOnBadMarkup
881+
? // On hydration mismatch we retry and therefore log the warning again.
882+
2
883+
: 1,
884+
);
863885
expect(domNode1.textContent).toEqual('42');
864886

865887
const domNode2 = await render(<ReadInReducer />, 1);

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

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,28 @@
1313
const ReactDOMServerIntegrationUtils = require('./utils/ReactDOMServerIntegrationTestUtils');
1414

1515
let React;
16-
let ReactDOM;
16+
let ReactDOMClient;
1717
let ReactDOMServer;
1818
let ReactTestUtils;
1919

2020
function initModules() {
2121
// Reset warning cache.
2222
jest.resetModules();
2323
React = require('react');
24-
ReactDOM = require('react-dom');
24+
ReactDOMClient = require('react-dom/client');
2525
ReactDOMServer = require('react-dom/server');
2626
ReactTestUtils = require('react-dom/test-utils');
2727

2828
// Make them available to the helpers.
2929
return {
30-
ReactDOM,
30+
ReactDOMClient,
3131
ReactDOMServer,
3232
ReactTestUtils,
3333
};
3434
}
3535

36-
const {resetModules, itRenders} = ReactDOMServerIntegrationUtils(initModules);
36+
const {resetModules, itRenders, clientRenderOnBadMarkup} =
37+
ReactDOMServerIntegrationUtils(initModules);
3738

3839
describe('ReactDOMServerIntegration', () => {
3940
beforeEach(() => {
@@ -365,8 +366,13 @@ describe('ReactDOMServerIntegration', () => {
365366
</div>
366367
);
367368
};
368-
// We expect 1 error.
369-
await render(<App />, 1);
369+
await render(
370+
<App />,
371+
render === clientRenderOnBadMarkup
372+
? // On hydration mismatch we retry and therefore log the warning again.
373+
2
374+
: 1,
375+
);
370376
},
371377
);
372378

@@ -391,8 +397,14 @@ describe('ReactDOMServerIntegration', () => {
391397
</div>
392398
);
393399
};
394-
// We expect 1 error.
395-
await render(<App />, 1);
400+
401+
await render(
402+
<App />,
403+
render === clientRenderOnBadMarkup
404+
? // On hydration mismatch we retry and therefore log the warning again.
405+
2
406+
: 1,
407+
);
396408
},
397409
);
398410

0 commit comments

Comments
 (0)