WPT
wpt / uievents / idlharness.window.html
Spec: UI Events ↗
Runs: Chrome 155.0.8041.0 (wpt@18be93235, 2026-09-04) | Firefox 157.0a1 (wpt@1b4bc17cf, 2026-09-04) | Safari 251 preview (wpt@e7122b73f, 2026-09-04) | Ladybird 1.0-17043 (wpt@25681acff, 2026-09-04) | Servo Servo 0.6 (wpt@2c385f65e, 2026-09-04) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 163/163 | 163/163 | 163/163 | 163/163 | 143/163 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| idl_test setup | PASS | PASS | PASS | PASS | PASS | — |
| idl_test validation | PASS | PASS | PASS | PASS | PASS | — |
| Partial interface UIEvent: original interface defined | PASS | PASS | PASS | PASS | PASS | — |
| Partial interface UIEvent: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Partial interface KeyboardEvent: original interface defined | PASS | PASS | PASS | PASS | PASS | — |
| Partial interface KeyboardEvent: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Partial interface CompositionEvent: original interface defined | PASS | PASS | PASS | PASS | PASS | — |
| Partial interface CompositionEvent: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Partial interface UIEvent[2]: original interface defined | PASS | PASS | PASS | PASS | PASS | — |
| Partial interface UIEvent[2]: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Partial dictionary UIEventInit: original dictionary defined | PASS | PASS | PASS | PASS | PASS | — |
| Partial dictionary UIEventInit: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Partial interface KeyboardEvent[2]: original interface defined | PASS | PASS | PASS | PASS | PASS | — |
| Partial interface KeyboardEvent[2]: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Partial dictionary KeyboardEventInit: original dictionary defined | PASS | PASS | PASS | PASS | PASS | — |
| Partial dictionary KeyboardEventInit: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Partial interface Window: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Window includes GlobalEventHandlers: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Window includes WindowEventHandlers: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Window includes WindowOrWorkerGlobalScope: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Window includes AnimationFrameProvider: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Window includes WindowSessionStorage: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| Window includes WindowLocalStorage: member names are unique | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: existence and properties of interface object | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface object length | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface object name | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: existence and properties of interface prototype object | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: attribute view | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: attribute detail | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: operation initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long) | PASS | PASS | PASS | PASS | FAIL | — |
| UIEvent interface: attribute which | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent must be primary interface of new UIEvent("event") | PASS | PASS | PASS | PASS | PASS | — |
| Stringification of new UIEvent("event") | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new UIEvent("event") must inherit property "view" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new UIEvent("event") must inherit property "detail" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new UIEvent("event") must inherit property "initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long)" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: calling initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long) on new UIEvent("event") with too few arguments must throw TypeError | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new UIEvent("event") must inherit property "which" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| FocusEvent interface: existence and properties of interface object | PASS | PASS | PASS | PASS | PASS | — |
| FocusEvent interface object length | PASS | PASS | PASS | PASS | PASS | — |
| FocusEvent interface object name | PASS | PASS | PASS | PASS | PASS | — |
| FocusEvent interface: existence and properties of interface prototype object | PASS | PASS | PASS | PASS | PASS | — |
| FocusEvent interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | PASS | PASS | — |
| FocusEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | PASS | PASS | — |
| FocusEvent interface: attribute relatedTarget | PASS | PASS | PASS | PASS | PASS | — |
| FocusEvent must be primary interface of new FocusEvent("event") | PASS | PASS | PASS | PASS | PASS | — |
| Stringification of new FocusEvent("event") | PASS | PASS | PASS | PASS | PASS | — |
| FocusEvent interface: new FocusEvent("event") must inherit property "relatedTarget" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new FocusEvent("event") must inherit property "view" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new FocusEvent("event") must inherit property "detail" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new FocusEvent("event") must inherit property "initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long)" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: calling initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long) on new FocusEvent("event") with too few arguments must throw TypeError | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new FocusEvent("event") must inherit property "which" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface: existence and properties of interface object | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface object length | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface object name | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface: existence and properties of interface prototype object | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface: attribute data | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface: attribute isComposing | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface: attribute inputType | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent must be primary interface of new InputEvent("event") | PASS | PASS | PASS | PASS | PASS | — |
| Stringification of new InputEvent("event") | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface: new InputEvent("event") must inherit property "data" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface: new InputEvent("event") must inherit property "isComposing" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| InputEvent interface: new InputEvent("event") must inherit property "inputType" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new InputEvent("event") must inherit property "view" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new InputEvent("event") must inherit property "detail" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new InputEvent("event") must inherit property "initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long)" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: calling initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long) on new InputEvent("event") with too few arguments must throw TypeError | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new InputEvent("event") must inherit property "which" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: existence and properties of interface object | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface object length | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface object name | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: existence and properties of interface prototype object | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: constant DOM_KEY_LOCATION_STANDARD on interface object | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: constant DOM_KEY_LOCATION_STANDARD on interface prototype object | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: constant DOM_KEY_LOCATION_LEFT on interface object | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: constant DOM_KEY_LOCATION_LEFT on interface prototype object | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: constant DOM_KEY_LOCATION_RIGHT on interface object | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: constant DOM_KEY_LOCATION_RIGHT on interface prototype object | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: constant DOM_KEY_LOCATION_NUMPAD on interface object | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: constant DOM_KEY_LOCATION_NUMPAD on interface prototype object | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: attribute key | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: attribute code | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: attribute location | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: attribute ctrlKey | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: attribute shiftKey | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: attribute altKey | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: attribute metaKey | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: attribute repeat | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: attribute isComposing | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: operation getModifierState(DOMString) | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: operation initKeyboardEvent(DOMString, optional boolean, optional boolean, optional Window?, optional DOMString, optional unsigned long, optional boolean, optional boolean, optional boolean, optional boolean) | PASS | PASS | PASS | PASS | FAIL | — |
| KeyboardEvent interface: attribute charCode | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: attribute keyCode | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent must be primary interface of new KeyboardEvent("event") | PASS | PASS | PASS | PASS | PASS | — |
| Stringification of new KeyboardEvent("event") | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "DOM_KEY_LOCATION_STANDARD" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "DOM_KEY_LOCATION_LEFT" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "DOM_KEY_LOCATION_RIGHT" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "DOM_KEY_LOCATION_NUMPAD" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "key" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "code" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "location" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "ctrlKey" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "shiftKey" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "altKey" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "metaKey" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "repeat" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "isComposing" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "getModifierState(DOMString)" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: calling getModifierState(DOMString) on new KeyboardEvent("event") with too few arguments must throw TypeError | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "initKeyboardEvent(DOMString, optional boolean, optional boolean, optional Window?, optional DOMString, optional unsigned long, optional boolean, optional boolean, optional boolean, optional boolean)" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: calling initKeyboardEvent(DOMString, optional boolean, optional boolean, optional Window?, optional DOMString, optional unsigned long, optional boolean, optional boolean, optional boolean, optional boolean) on new KeyboardEvent("event") with too few arguments must throw TypeError | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "charCode" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| KeyboardEvent interface: new KeyboardEvent("event") must inherit property "keyCode" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new KeyboardEvent("event") must inherit property "view" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new KeyboardEvent("event") must inherit property "detail" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new KeyboardEvent("event") must inherit property "initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long)" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: calling initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long) on new KeyboardEvent("event") with too few arguments must throw TypeError | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: new KeyboardEvent("event") must inherit property "which" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| CompositionEvent interface: existence and properties of interface object | PASS | PASS | PASS | PASS | FAIL | — |
| CompositionEvent interface object length | PASS | PASS | PASS | PASS | FAIL | — |
| CompositionEvent interface object name | PASS | PASS | PASS | PASS | FAIL | — |
| CompositionEvent interface: existence and properties of interface prototype object | PASS | PASS | PASS | PASS | FAIL | — |
| CompositionEvent interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | PASS | FAIL | — |
| CompositionEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | PASS | FAIL | — |
| CompositionEvent interface: attribute data | PASS | PASS | PASS | PASS | FAIL | — |
| CompositionEvent interface: operation initCompositionEvent(DOMString, optional boolean, optional boolean, optional WindowProxy?, optional DOMString) | PASS | PASS | PASS | PASS | FAIL | — |
| CompositionEvent must be primary interface of new CompositionEvent("event") | PASS | PASS | PASS | PASS | FAIL | — |
| Stringification of new CompositionEvent("event") | PASS | PASS | PASS | PASS | FAIL | — |
| CompositionEvent interface: new CompositionEvent("event") must inherit property "data" with the proper type | PASS | PASS | PASS | PASS | FAIL | — |
| CompositionEvent interface: new CompositionEvent("event") must inherit property "initCompositionEvent(DOMString, optional boolean, optional boolean, optional WindowProxy?, optional DOMString)" with the proper type | PASS | PASS | PASS | PASS | FAIL | — |
| CompositionEvent interface: calling initCompositionEvent(DOMString, optional boolean, optional boolean, optional WindowProxy?, optional DOMString) on new CompositionEvent("event") with too few arguments must throw TypeError | PASS | PASS | PASS | PASS | FAIL | — |
| UIEvent interface: new CompositionEvent("event") must inherit property "view" with the proper type | PASS | PASS | PASS | PASS | FAIL | — |
| UIEvent interface: new CompositionEvent("event") must inherit property "detail" with the proper type | PASS | PASS | PASS | PASS | FAIL | — |
| UIEvent interface: new CompositionEvent("event") must inherit property "initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long)" with the proper type | PASS | PASS | PASS | PASS | FAIL | — |
| UIEvent interface: calling initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long) on new CompositionEvent("event") with too few arguments must throw TypeError | PASS | PASS | PASS | PASS | FAIL | — |
| UIEvent interface: new CompositionEvent("event") must inherit property "which" with the proper type | PASS | PASS | PASS | PASS | FAIL | — |
| TextEvent interface: existence and properties of interface object | PASS | PASS | PASS | PASS | PASS | — |
| TextEvent interface object length | PASS | PASS | PASS | PASS | PASS | — |
| TextEvent interface object name | PASS | PASS | PASS | PASS | PASS | — |
| TextEvent interface: existence and properties of interface prototype object | PASS | PASS | PASS | PASS | PASS | — |
| TextEvent interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | PASS | PASS | — |
| TextEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | PASS | PASS | — |
| TextEvent interface: attribute data | PASS | PASS | PASS | PASS | PASS | — |
| TextEvent interface: operation initTextEvent(DOMString, optional boolean, optional boolean, optional Window?, optional DOMString) | PASS | PASS | PASS | PASS | PASS | — |
| TextEvent must be primary interface of (() => { const ev = document.createEvent("TextEvent"); ev.initTextEvent("event"); return ev; })() | PASS | PASS | PASS | PASS | PASS | — |
| Stringification of (() => { const ev = document.createEvent("TextEvent"); ev.initTextEvent("event"); return ev; })() | PASS | PASS | PASS | PASS | PASS | — |
| TextEvent interface: (() => { const ev = document.createEvent("TextEvent"); ev.initTextEvent("event"); return ev; })() must inherit property "data" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| TextEvent interface: (() => { const ev = document.createEvent("TextEvent"); ev.initTextEvent("event"); return ev; })() must inherit property "initTextEvent(DOMString, optional boolean, optional boolean, optional Window?, optional DOMString)" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| TextEvent interface: calling initTextEvent(DOMString, optional boolean, optional boolean, optional Window?, optional DOMString) on (() => { const ev = document.createEvent("TextEvent"); ev.initTextEvent("event"); return ev; })() with too few arguments must throw TypeError | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: (() => { const ev = document.createEvent("TextEvent"); ev.initTextEvent("event"); return ev; })() must inherit property "view" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: (() => { const ev = document.createEvent("TextEvent"); ev.initTextEvent("event"); return ev; })() must inherit property "detail" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: (() => { const ev = document.createEvent("TextEvent"); ev.initTextEvent("event"); return ev; })() must inherit property "initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long)" with the proper type | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: calling initUIEvent(DOMString, optional boolean, optional boolean, optional Window?, optional long) on (() => { const ev = document.createEvent("TextEvent"); ev.initTextEvent("event"); return ev; })() with too few arguments must throw TypeError | PASS | PASS | PASS | PASS | PASS | — |
| UIEvent interface: (() => { const ev = document.createEvent("TextEvent"); ev.initTextEvent("event"); return ev; })() must inherit property "which" with the proper type | PASS | PASS | PASS | PASS | PASS | — |