• Stars
    star
    3,158
  • Rank 14,232 (Top 0.3 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created about 5 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A JavaScript implementation of a web browser without its graphical user interface

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>.

Published on npm happy-dom

This package contains the core functionality of Happy DOM.


Published on npm jest-environment

This package makes it possible to use Happy DOM with Jest.


Published on npm global-registrator

A utility that registers Happy DOM globally, which makes it possible to use Happy DOM for testing in a Node environment.


Published on npm server-rendering

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

Sponsors

RTVision