Skip to main content
Coverage · existence pass

Every web API, checked for existence

1,054 interfaces and 8,832 members from 271 specs: everything the Web IDL says a browser window exposes, looked up in each engine. Shown by default: the 33 specs (3,614 members) that matter most for unit tests.

Existence is not behavior. “Present” means the name is defined where Web IDL puts it; the member can still do nothing or the wrong thing. The featured checks test what the standards say for the APIs tests use most.

By group

Web IDL lists everything browsers expose, WebGL, WebGPU and WebRTC included, which no test DOM aims for. Each spec is in one group (spec-groups.json, with the reason for each group); every percentage below is of the group shown.

Test DOM core: 33 specs, 359 interfaces, 3,614 members. What unit and component tests touch: DOM, all of HTML (forms, dialog, custom elements, Web Storage, structured clone, Page Visibility, timers), Web IDL's DOMException, CSSOM and CSSOM View (matchMedia, scrolling, geometry of elements), CSS animation and transition events, CSS.supports, UI, pointer, touch, input and clipboard events, SVG, Resize and Intersection Observer, Selection, Fullscreen, ARIA reflection, Web Animations, URL, Encoding, Fetch, XHR, File API, Streams, Console, Web Crypto, Geometry, High Resolution Time, Performance Timeline, User Timing and requestIdleCallback. Specs are grouped whole, so HTML's canvas and media element members count here too.

warpdom

version 0.1.6maintainer's engine
Members present1,989 / 3,614
55% (1989 of 3614)

of 3,614 test-DOM-core members

Interfaces present187 / 359
52% (187 of 359)

of 359 test-DOM-core interfaces

1 of them is Node.js's own global.

happy-dom

version 21.0.3
Members present1,971 / 3,614
55% (1971 of 3614)

of 3,614 test-DOM-core members

Interfaces present253 / 359
70% (253 of 359)

of 359 test-DOM-core interfaces

6 of them are Node.js's own globals.

jsdom

version 30.1.3
Members present2,063 / 3,614
57% (2063 of 3614)

of 3,614 test-DOM-core members

Interfaces present202 / 359
56% (202 of 359)

of 359 test-DOM-core interfaces

linkedom

version 0.18.13
Members present645 / 3,614
18% (645 of 3614)

of 3,614 test-DOM-core members

Interfaces present131 / 359
36% (131 of 359)

of 359 test-DOM-core interfaces

43 of them are Node.js's own globals.

By spec

Share of each spec's members present per engine. Members count in the spec that defines them (a partial interface in CSSOM View counts for CSSOM View).

Present in at least one engine32 specs
Test DOM core: specs present in at least one engine
SpecMemberswarpdommaintainer's enginehappy-domjsdomlinkedom
HTML180162% (1111 of 1801)49% (891 of 1801)61% (1095 of 1801)11% (191 of 1801)
DOM38494% (362 of 384)72% (275 of 384)93% (357 of 384)44% (168 of 384)
Scalable Vector Graphics (SVG) 1.1 (Second Edition)317<1% (1 of 317)86% (274 of 317)15% (48 of 317)<1% (1 of 317)
Geometry Interfaces Module Level 111913% (15 of 119)92% (109 of 119)13% (15 of 119)0% (0 of 119)
Accessible Rich Internet Applications (WAI-ARIA)10642% (44 of 106)<1% (1 of 106)79% (84 of 106)0% (0 of 106)
CSSOM View Module10150% (50 of 101)41% (41 of 101)48% (48 of 101)<1% (1 of 101)
Pointer Events9782% (80 of 97)52% (50 of 97)81% (79 of 97)10% (10 of 97)
CSS Object Model (CSSOM)9093% (84 of 90)43% (39 of 90)76% (68 of 90)3% (3 of 90)
Streams640% (0 of 64)17% (11 of 64)0% (0 of 64)94% (60 of 64)
Fetch6018% (11 of 60)65% (39 of 60)18% (11 of 60)93% (56 of 60)
Touch Events4556% (25 of 45)9% (4 of 45)51% (23 of 45)0% (0 of 45)
XMLHttpRequest4531% (14 of 45)84% (38 of 45)100% (45 of 45)24% (11 of 45)
Selection API3773% (27 of 37)81% (30 of 37)65% (24 of 37)0% (0 of 37)
CSS Animations Level 13330% (10 of 33)73% (24 of 33)30% (10 of 33)0% (0 of 33)
Web Animations330% (0 of 33)55% (18 of 33)0% (0 of 33)0% (0 of 33)
File API3187% (27 of 31)45% (14 of 31)87% (27 of 31)35% (11 of 31)
URL30100% (30 of 30)100% (30 of 30)100% (30 of 30)100% (30 of 30)
Web IDL30100% (30 of 30)7% (2 of 30)100% (30 of 30)93% (28 of 30)
UI Events2993% (27 of 29)17% (5 of 29)93% (27 of 29)0% (0 of 29)
CSS Transitions Module Level 12313% (3 of 23)70% (16 of 23)13% (3 of 23)0% (0 of 23)
Web Cryptography Level 22015% (3 of 20)5% (1 of 20)15% (3 of 20)100% (20 of 20)
Console19100% (19 of 19)100% (19 of 19)100% (19 of 19)100% (19 of 19)
Intersection Observer180% (0 of 18)22% (4 of 18)0% (0 of 18)0% (0 of 18)
Performance Timeline170% (0 of 17)53% (9 of 17)0% (0 of 17)88% (15 of 17)
Clipboard API and events120% (0 of 12)58% (7 of 12)0% (0 of 12)0% (0 of 12)
Encoding1164% (7 of 11)64% (7 of 11)64% (7 of 11)100% (11 of 11)
Fullscreen API100% (0 of 10)50% (5 of 10)0% (0 of 10)0% (0 of 10)
Resize Observer100% (0 of 10)30% (3 of 10)0% (0 of 10)0% (0 of 10)
CSS Conditional Rules Module Level 3667% (4 of 6)67% (4 of 6)100% (6 of 6)0% (0 of 6)
User Timing60% (0 of 6)0% (0 of 6)0% (0 of 6)100% (6 of 6)
High Resolution Time4100% (4 of 4)25% (1 of 4)100% (4 of 4)100% (4 of 4)
Input Events Level 2250% (1 of 2)0% (0 of 2)0% (0 of 2)0% (0 of 2)
Not present in any engine1 specs

Search

Type at least two characters.

How it is measured

  • Web IDL from @webref/idl 3.85.2, spec titles from browser-specs 5.3.0. Interfaces and namespaces exposed on Window, with partial interfaces and mixins.
  • Interface statuses: Present (Defined on the window.) Node.js (Defined, but it is Node.js's own global (the very same object), not the engine's.) Stub (Defined, but constructing it reports "not implemented".) Missing (Not defined on the window.)
  • Members are looked up on the interface prototype (covering its prototype chain), on the interface object for constants and static members, on the window for Window's own members; members inherited only from Object.prototype do not count. Each engine runs in its own process; probed 2026-10-19 on Node.js v22.23.3.
  • Data: idl.json and spec-groups.json (CC BY 4.0). See also About and method.