/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @emails react-core
*/
'use strict';
describe('ReactDOM.browser', () => {
beforeEach(() => {
jest.resetModules();
});
// @gate enableBrowserAPI
it('can create browser-only content before the browser renderer is initialized', async () => {
const React = require('react');
const ReactDOM = require('react-dom');
const initializeReason = jest.fn(
() => new Error('Only render this content in a browser'),
);
const browserOnly = ReactDOM.browser(initializeReason);
const ReactDOMClient = require('react-dom/client');
const {act} = require('internal-test-utils');
function BrowserOnly() {
React.use(browserOnly);
return Browser;
}
const container = document.createElement('div');
const root = ReactDOMClient.createRoot(container);
await act(() => {
root.render(
Fallback}>
,
);
});
expect(container.innerHTML).toBe('Browser');
expect(initializeReason).not.toHaveBeenCalled();
});
});