https://github.com/capricorn86/happy-dom
パフォーマンス比較を見るとかなり高速みたいです
2, 3 倍程度のもあれば 10 倍近いものまで
速いだけではなく WebComponents 機能など新しい機能もサポートしてるようです
軽く触れてみましたが どちらもブラウザの DOM 操作をエミュレートするものなのでどっちも同じ感じで使えました
ただ最初の window を取得するまでの手順は違いがありました
jsdom は JSDOM クラスのインスタンスを作成して そのプロパティとして window オブジェクトが入っています
JSDOM クラスのコンストラクタに HTML 文字列を渡せば DOM の初期状態にセットできます
const { JSDOM } = require("jsdom")
const jsdom = new JSDOM()
jsdom.window.document.documentElement.outerHTML
// '<html><head></head><body></body></html>'
const jsdom2 = new JSDOM(`<h1>a</h1>`)
jsdom2.window.document.querySelector("h1").innerHTML
// 'a'
happy-dom では Window クラスのインスタンスを作成します
それがそのまま window オブジェクトです
作成時に初期状態をセットする機能はなさそうなので 初期値を設定するには window を経由した DOM の API を使います
const { Window } = require("happy-dom")
const window = new Window()
window.document.documentElement.outerHTML
// '<html><head></head><body></body></html>'
window.document.body.innerHTML = `<h1>a</h1>`
window.document.querySelector("h1").innerHTML
// 'a'