main
js 64 lines 1.6 KB
Raw
1 /**
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 * @emails react-core
8 * @jest-environment node
9 */
10
11 'use strict';
12
13 let act;
14 let ViewTransition;
15 let React;
16 let ReactServer;
17 let ReactNoop;
18 let ReactNoopFlightClient;
19 let ReactNoopFlightServer;
20
21 describe('ViewTransitionReactServer', () => {
22 beforeEach(() => {
23 jest.resetModules();
24 jest.mock('react', () => require('react/react.react-server'));
25 ReactServer = require('react');
26 ViewTransition = ReactServer.ViewTransition;
27 ReactNoopFlightServer = require('react-noop-renderer/flight-server');
28
29 jest.resetModules();
30 __unmockReact();
31 React = require('react');
32 ReactNoopFlightClient = require('react-noop-renderer/flight-client');
33 ReactNoop = require('react-noop-renderer');
34 const InternalTestUtils = require('internal-test-utils');
35 act = InternalTestUtils.act;
36 });
37
38 afterEach(() => {
39 jest.restoreAllMocks();
40 });
41
42 // @gate enableViewTransition
43 it('can be rendered in React Server', async () => {
44 function App() {
45 return ReactServer.createElement(
46 ViewTransition,
47 {},
48 ReactServer.createElement('div', null, 'Hello, Dave!'),
49 );
50 }
51
52 const transport = ReactNoopFlightServer.render(
53 ReactServer.createElement(App, null),
54 );
55
56 await act(async () => {
57 const app = await ReactNoopFlightClient.read(transport);
58
59 ReactNoop.render(app);
60 });
61
62 expect(ReactNoop).toMatchRenderedOutput(<div>Hello, Dave!</div>);
63 });
64 });