Engines at a glance
warpdom
version 0.1.6maintainer's engine13/ 22
featured APIs fully supported
Members present1,989 / 3,614
of 3,614 test-DOM-core members
Interfaces present187 / 359
of 359 test-DOM-core interfaces
1 of them is Node.js's own global.
happy-dom
version 21.0.310/ 22
featured APIs fully supported
Members present1,971 / 3,614
of 3,614 test-DOM-core members
Interfaces present253 / 359
of 359 test-DOM-core interfaces
6 of them are Node.js's own globals.
jsdom
version 30.1.312/ 22
featured APIs fully supported
Members present2,063 / 3,614
of 3,614 test-DOM-core members
Interfaces present202 / 359
of 359 test-DOM-core interfaces
linkedom
version 0.18.136/ 22
featured APIs fully supported
Members present645 / 3,614
of 3,614 test-DOM-core members
Interfaces present131 / 359
of 359 test-DOM-core interfaces
43 of them are Node.js's own globals.
Featured checks
- Supported Exists and every check passes.
- Partial Exists; some checks work, at least one does not.
- Stub Exists, but no check works (each fails, or the engine reports "not implemented").
- Missing Not defined.
22 of 22 APIs
| API | warpdom0.1.6maintainer's engine | happy-dom21.0.3 | jsdom30.1.3 | linkedom0.18.13 |
|---|---|---|---|---|
| <dialog> showModal() / close() | Missing | Partial 2/3 | Missing | Missing |
| AbortController / AbortSignal.timeout() | Supported | Supported | Supported | SupportedNode.js global |
| attachShadow() and <slot> | Supported | Partial 3/5 | Supported | Partial 1/5 |
| checkValidity() / validity | Supported | Partial 4/5 | Supported | Missing |
| crypto.getRandomValues() / randomUUID() | Supported | SupportedNode.js global | Supported | SupportedNode.js global |
| CSS :has() in selectors | Supported | Supported | Supported | Supported |
| CSS custom properties (--*) and var() | Partial 2/3 | Partial 1/3 | Partial 2/3 | Partial 1/3 |
| customElements.define() and lifecycle callbacks | Supported | Supported | Supported | Supported |
| element.animate() / getAnimations() | Missing | Supported | Missing | Missing |
| element.innerText | Supported | Partial 2/3 | Missing | Partial 1/3 |
| element.scrollIntoView() | Missing | Supported | Missing | Missing |
| form.requestSubmit() | Supported | Supported | Supported | Missing |
| getComputedStyle() | Supported | Partial 1/3 | Supported | Missing |
| IntersectionObserver | Missing | Stub | Missing | Missing |
| MutationObserver | Supported | Supported | Supported | Partial 2/3 |
| new FormData(form) | Supported | Partial 1/2 | Supported | StubNode.js global |
| requestAnimationFrame() | Supported | Partial 1/2 | Supported | Missing |
| ResizeObserver | Missing | Partial 1/2 | Missing | Missing |
| structuredClone() | Missing | Missing | Missing | SupportedNode.js global |
| TextEncoder / TextDecoder | Supported | SupportedNode.js global | Supported | SupportedNode.js global |
| window.matchMedia() | Missing | Supported | Missing | Missing |
| window.scrollTo() | Stub | Partial 1/2 | Stub | Missing |