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.  */
    
  9. 
    
  10. 'use strict';
    
  11. 
    
  12. // Polyfills for test environment
    
  13. global.ReadableStream =
    
  14.   require('web-streams-polyfill/ponyfill/es6').ReadableStream;
    
  15. global.TextEncoder = require('util').TextEncoder;
    
  16. global.TextDecoder = require('util').TextDecoder;
    
  17. 
    
  18. let React;
    
  19. let ReactServerDOMServer;
    
  20. let ReactServerDOMClient;
    
  21. 
    
  22. describe('ReactFlightDOMBrowser', () => {
    
  23.   beforeEach(() => {
    
  24.     jest.resetModules();
    
  25. 
    
  26.     // Simulate the condition resolution
    
  27.     jest.mock('react', () => require('react/react.shared-subset'));
    
  28.     jest.mock('react-server-dom-turbopack/server', () =>
    
  29.       require('react-server-dom-turbopack/server.browser'),
    
  30.     );
    
  31. 
    
  32.     ReactServerDOMServer = require('react-server-dom-turbopack/server.browser');
    
  33. 
    
  34.     __unmockReact();
    
  35.     jest.resetModules();
    
  36. 
    
  37.     React = require('react');
    
  38.     ReactServerDOMClient = require('react-server-dom-turbopack/client');
    
  39.   });
    
  40. 
    
  41.   it('should resolve HTML using W3C streams', async () => {
    
  42.     function Text({children}) {
    
  43.       return <span>{children}</span>;
    
  44.     }
    
  45.     function HTML() {
    
  46.       return (
    
  47.         <div>
    
  48.           <Text>hello</Text>
    
  49.           <Text>world</Text>
    
  50.         </div>
    
  51.       );
    
  52.     }
    
  53. 
    
  54.     function App() {
    
  55.       const model = {
    
  56.         html: <HTML />,
    
  57.       };
    
  58.       return model;
    
  59.     }
    
  60. 
    
  61.     const stream = ReactServerDOMServer.renderToReadableStream(<App />);
    
  62.     const response = ReactServerDOMClient.createFromReadableStream(stream);
    
  63.     const model = await response;
    
  64.     expect(model).toEqual({
    
  65.       html: (
    
  66.         <div>
    
  67.           <span>hello</span>
    
  68.           <span>world</span>
    
  69.         </div>
    
  70.       ),
    
  71.     });
    
  72.   });
    
  73. });