Skip to content

Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. It includes many web standards from WHATWG DOM and HTML.

License

Notifications You must be signed in to change notification settings

whatyoubendoing/happy-dom

This branch is 1270 commits behind capricorn86/happy-dom:master.

Folders and files

NameName
Last commit message
Last commit date
Oct 10, 2022
Apr 28, 2021
Apr 28, 2021
Jul 10, 2022
Dec 7, 2022
Oct 4, 2020
Jan 3, 2021
Oct 4, 2020
Oct 10, 2022
Sep 9, 2019
Mar 14, 2022
Oct 4, 2020
Dec 7, 2022
Oct 7, 2022

Repository files navigation

Happy DOM Logo

About

Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. It includes many web standards from WHATWG DOM and HTML.

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.

Happy DOM focuses heavily on performance and can be used as an alternative to JSDOM.

Read more about how to use Happy DOM

DOM Features

  • Custom Elements (Web Components)

  • Shadow Root (Shadow DOM)

  • Declarative Shadow DOM

  • Mutation Observer

  • Tree Walker

  • Fetch

And much more..

Works With

Packages

This repository is a Monorepo. Each package lives under packages/<package>.

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.


This package has been deprecated.

Happy DOM now supports Declarative Shadow DOM which can be used for server-side rendering of web components.

Performance

Operation JSDOM Happy DOM
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

Contributing

Read more about how to develop and contribute

About

Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. It includes many web standards from WHATWG DOM and HTML.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 98.3%
  • JavaScript 1.7%