WPT
wpt / push-api / idlharness.https.any.serviceworker.html
Spec: Push API ↗
Runs: Chrome 155.0.8039.0 (wpt@6ec9fd59f, 2026-09-03) | Firefox 157.0a1 (wpt@6ec9fd59f, 2026-09-03) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-795e1 (wpt@7e3d005d7, 2026-09-03) | Servo Servo 0.6 (wpt@09159dcb3, 2026-09-02) | Blitz 188486089 (wpt@a95401e4e, 2026-09-02)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 92/94 | 91/94 | 94/94 | 0/94 | 0/94 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| idl_test setup | PASS | PASS | PASS | — | — | — |
| idl_test validation | PASS | PASS | PASS | — | — | — |
| Partial interface ServiceWorkerGlobalScope: original interface defined | PASS | PASS | PASS | — | — | — |
| Partial interface ServiceWorkerGlobalScope: valid exposure set | PASS | PASS | PASS | — | — | — |
| Partial interface ServiceWorkerGlobalScope: member names are unique | PASS | PASS | PASS | — | — | — |
| Partial interface Window: member names are unique | PASS | PASS | PASS | — | — | — |
| Window includes PushManagerAttribute: member names are unique | PASS | PASS | PASS | — | — | — |
| ServiceWorkerRegistration includes PushManagerAttribute: member names are unique | PASS | PASS | PASS | — | — | — |
| Window includes GlobalEventHandlers: member names are unique | PASS | PASS | PASS | — | — | — |
| Window includes WindowEventHandlers: member names are unique | PASS | PASS | PASS | — | — | — |
| Window includes WindowOrWorkerGlobalScope: member names are unique | PASS | PASS | PASS | — | — | — |
| WorkerGlobalScope includes WindowOrWorkerGlobalScope: member names are unique | PASS | PASS | PASS | — | — | — |
| Window includes AnimationFrameProvider: member names are unique | PASS | PASS | PASS | — | — | — |
| Window includes WindowSessionStorage: member names are unique | PASS | PASS | PASS | — | — | — |
| Window includes WindowLocalStorage: member names are unique | PASS | PASS | PASS | — | — | — |
| PushManager interface: existence and properties of interface object | PASS | PASS | PASS | — | — | — |
| PushManager interface object length | PASS | PASS | PASS | — | — | — |
| PushManager interface object name | PASS | PASS | PASS | — | — | — |
| PushManager interface: existence and properties of interface prototype object | PASS | PASS | PASS | — | — | — |
| PushManager interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | — | — | — |
| PushManager interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | — | — | — |
| PushManager interface: attribute supportedContentEncodings | PASS | PASS | PASS | — | — | — |
| PushManager interface: operation subscribe(optional PushSubscriptionOptionsInit) | PASS | PASS | PASS | — | — | — |
| PushManager interface: operation getSubscription() | PASS | PASS | PASS | — | — | — |
| PushManager interface: operation permissionState(optional PushSubscriptionOptionsInit) | PASS | PASS | PASS | — | — | — |
| PushManager must be primary interface of registration.pushManager | PASS | PASS | PASS | — | — | — |
| Stringification of registration.pushManager | PASS | PASS | PASS | — | — | — |
| PushManager interface: registration.pushManager must inherit property "supportedContentEncodings" with the proper type | PASS | PASS | PASS | — | — | — |
| PushManager interface: registration.pushManager must inherit property "subscribe(optional PushSubscriptionOptionsInit)" with the proper type | PASS | PASS | PASS | — | — | — |
| PushManager interface: calling subscribe(optional PushSubscriptionOptionsInit) on registration.pushManager with too few arguments must throw TypeError | PASS | PASS | PASS | — | — | — |
| PushManager interface: registration.pushManager must inherit property "getSubscription()" with the proper type | PASS | PASS | PASS | — | — | — |
| PushManager interface: registration.pushManager must inherit property "permissionState(optional PushSubscriptionOptionsInit)" with the proper type | PASS | PASS | PASS | — | — | — |
| PushManager interface: calling permissionState(optional PushSubscriptionOptionsInit) on registration.pushManager with too few arguments must throw TypeError | PASS | PASS | PASS | — | — | — |
| PushSubscriptionOptions interface: existence and properties of interface object | PASS | PASS | PASS | — | — | — |
| PushSubscriptionOptions interface object length | PASS | PASS | PASS | — | — | — |
| PushSubscriptionOptions interface object name | PASS | PASS | PASS | — | — | — |
| PushSubscriptionOptions interface: existence and properties of interface prototype object | PASS | PASS | PASS | — | — | — |
| PushSubscriptionOptions interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | — | — | — |
| PushSubscriptionOptions interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | — | — | — |
| PushSubscriptionOptions interface: attribute userVisibleOnly | PASS | FAIL | PASS | — | — | — |
| PushSubscriptionOptions interface: attribute applicationServerKey | PASS | PASS | PASS | — | — | — |
| PushSubscription interface: existence and properties of interface object | PASS | PASS | PASS | — | — | — |
| PushSubscription interface object length | PASS | PASS | PASS | — | — | — |
| PushSubscription interface object name | PASS | PASS | PASS | — | — | — |
| PushSubscription interface: existence and properties of interface prototype object | PASS | PASS | PASS | — | — | — |
| PushSubscription interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | — | — | — |
| PushSubscription interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | — | — | — |
| PushSubscription interface: attribute endpoint | PASS | PASS | PASS | — | — | — |
| PushSubscription interface: attribute expirationTime | PASS | PASS | PASS | — | — | — |
| PushSubscription interface: attribute options | PASS | PASS | PASS | — | — | — |
| PushSubscription interface: operation getKey(PushEncryptionKeyName) | PASS | PASS | PASS | — | — | — |
| PushSubscription interface: operation unsubscribe() | PASS | PASS | PASS | — | — | — |
| PushSubscription interface: operation toJSON() | PASS | PASS | PASS | — | — | — |
| PushMessageData interface: existence and properties of interface object | PASS | PASS | PASS | — | — | — |
| PushMessageData interface object length | PASS | PASS | PASS | — | — | — |
| PushMessageData interface object name | PASS | PASS | PASS | — | — | — |
| PushMessageData interface: existence and properties of interface prototype object | PASS | PASS | PASS | — | — | — |
| PushMessageData interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | — | — | — |
| PushMessageData interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | — | — | — |
| PushMessageData interface: operation arrayBuffer() | PASS | PASS | PASS | — | — | — |
| PushMessageData interface: operation blob() | PASS | PASS | PASS | — | — | — |
| PushMessageData interface: operation bytes() | PASS | PASS | PASS | — | — | — |
| PushMessageData interface: operation json() | PASS | PASS | PASS | — | — | — |
| PushMessageData interface: operation text() | PASS | PASS | PASS | — | — | — |
| PushEvent interface: existence and properties of interface object | PASS | PASS | PASS | — | — | — |
| PushEvent interface object length | PASS | PASS | PASS | — | — | — |
| PushEvent interface object name | PASS | PASS | PASS | — | — | — |
| PushEvent interface: existence and properties of interface prototype object | PASS | PASS | PASS | — | — | — |
| PushEvent interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | — | — | — |
| PushEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | — | — | — |
| PushEvent interface: attribute data | PASS | PASS | PASS | — | — | — |
| PushEvent interface: attribute notification | FAIL | FAIL | PASS | — | — | — |
| PushEvent must be primary interface of new PushEvent("type") | PASS | PASS | PASS | — | — | — |
| Stringification of new PushEvent("type") | PASS | PASS | PASS | — | — | — |
| PushEvent interface: new PushEvent("type") must inherit property "data" with the proper type | PASS | PASS | PASS | — | — | — |
| PushEvent interface: new PushEvent("type") must inherit property "notification" with the proper type | FAIL | FAIL | PASS | — | — | — |
| PushSubscriptionChangeEvent interface: existence and properties of interface object | PASS | PASS | PASS | — | — | — |
| PushSubscriptionChangeEvent interface object length | PASS | PASS | PASS | — | — | — |
| PushSubscriptionChangeEvent interface object name | PASS | PASS | PASS | — | — | — |
| PushSubscriptionChangeEvent interface: existence and properties of interface prototype object | PASS | PASS | PASS | — | — | — |
| PushSubscriptionChangeEvent interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS | PASS | — | — | — |
| PushSubscriptionChangeEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS | PASS | — | — | — |
| PushSubscriptionChangeEvent interface: attribute newSubscription | PASS | PASS | PASS | — | — | — |
| PushSubscriptionChangeEvent interface: attribute oldSubscription | PASS | PASS | PASS | — | — | — |
| PushSubscriptionChangeEvent must be primary interface of new PushSubscriptionChangeEvent("pushsubscriptionchange") | PASS | PASS | PASS | — | — | — |
| Stringification of new PushSubscriptionChangeEvent("pushsubscriptionchange") | PASS | PASS | PASS | — | — | — |
| PushSubscriptionChangeEvent interface: new PushSubscriptionChangeEvent("pushsubscriptionchange") must inherit property "newSubscription" with the proper type | PASS | PASS | PASS | — | — | — |
| PushSubscriptionChangeEvent interface: new PushSubscriptionChangeEvent("pushsubscriptionchange") must inherit property "oldSubscription" with the proper type | PASS | PASS | PASS | — | — | — |
| ServiceWorkerRegistration interface: attribute pushManager | PASS | PASS | PASS | — | — | — |
| ServiceWorkerRegistration interface: registration must inherit property "pushManager" with the proper type | PASS | PASS | PASS | — | — | — |
| ServiceWorkerGlobalScope interface: attribute onpush | PASS | PASS | PASS | — | — | — |
| ServiceWorkerGlobalScope interface: attribute onpushsubscriptionchange | PASS | PASS | PASS | — | — | — |
| ServiceWorkerGlobalScope interface: self must inherit property "onpush" with the proper type | PASS | PASS | PASS | — | — | — |
| ServiceWorkerGlobalScope interface: self must inherit property "onpushsubscriptionchange" with the proper type | PASS | PASS | PASS | — | — | — |