The goal of Happy DOM is to emulate enough of a web browser to be useful for testing, scraping web sites and server-side rendering.
Custom Elements (Web Components)
Shadow Root (Shadow DOM)
Declarative Shadow DOM
And much more..
Read more about how to use Happy DOM in our Wiki.
This repository is a Monorepo. Each package lives under
This package contains the core functionality of Happy DOM.
This package makes it possible to use Happy DOM with Jest.
A utility that registers Happy DOM globally, which makes it possible to use Happy DOM for testing in a Node environment.
A utility for observing uncaught exceptions thrown in Happy DOM and dispatch them as events on the Happy DOM window.
|Import / Require||333 ms||45 ms|
|Parse HTML||256 ms||26 ms|
|Serialize HTML||65 ms||8 ms|
|Render custom element||214 ms||19 ms|
|querySelectorAll('tagname')||4.9 ms||0.7 ms|
|querySelectorAll('.class')||6.4 ms||3.7 ms|
|querySelectorAll('[attribute]')||4.0 ms||1.7 ms|
|querySelectorAll('[class~="name"]')||5.5 ms||2.9 ms|
|querySelectorAll(':nth-child(2n+1)')||10.4 ms||3.8 ms|
See how the test was done here
See Contributing Guide.