Skip to content

Latest commit

 

History

History
37 lines (30 loc) · 1.32 KB

test-a-component-that-uses-react-portals.md

File metadata and controls

37 lines (30 loc) · 1.32 KB

Test A Component That Uses React Portals

When using react-testing-library to render a component that uses Portals, you'll probably run into an issue with your Portal code. When trying to set up the portal, it will fail to find the portal's root element in the DOM.

const portalRoot =
  global.document && global.document.getElementById("portal-root");
// portalRoot is null 😱

There are a number of solutions. One solution, recommended by KCD, is to add the portal's root element to the document if it's not already there.

let portalRoot =
  global.document && global.document.getElementById("portal-root");

if (!portalRoot) {
  portalRoot = global.document.createElement("div");
  portalRoot.setAttribute("id", "portal-root");
  global.document.body.appendChild(portalRoot);
}

By solving this issue directly in the portal's source code, you are making it more reliable and don't have to add extra boilerplate to your test setup.

source