About
A JSDOM alternative with support for server side rendering of web components.
Happy DOM aims to support the most common functionality of a web browser.
This package makes it possible to use Happy DOM with Jest.
DOM Features
And much more..
Works With
Installation
npm install @happy-dom/jest-environment --save-dev
Setup
Jest uses JSDOM as test environment by default. In order to tell Jest to use a different environment we will either have to set a CLI attribute, define it in "package.json" or add a property to your Jest config file.
CLI
-
Edit your "package.json" file.
-
Add "--env=@happy-dom/jest-environment" as an attribute to your Jest command.
{
"scripts": {
"test": "jest --env=@happy-dom/jest-environment"
}
}
-
Save the file.
In "package.json"
-
Edit your "package.json" file.
-
Add the following to it:
{
"jest": {
"testEnvironment": "@happy-dom/jest-environment"
}
}
-
Save the file.
Configuration File
-
Edit your Jest config file (usually jest.config.js)
-
Add the following to it:
{
"testEnvironment": "@happy-dom/jest-environment"
}
-
Save the file.
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