githubEdit

Test A Component That Uses React Portals

When using react-testing-libraryarrow-up-right to render a component that uses Portalsarrow-up-right, 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 solutionsarrow-up-right. One solutionarrow-up-right, 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.

sourcearrow-up-right

Last updated