service-workers

edit

WPT coverage of the tests of service-workers at the revision 5602b0f210e3. The tests link to their results in the browsers on wpt.fyi. The tentative tests (experimental features) and the reftests are listed separately from the stable tests.

GroupPassingTestsDisabledPass rate
Stable248283589%
Tentative11109%
Reftests110100%
All250295586%

Failure reasons

The tests that do not pass (failing or disabled), by kind of reason. A test with several reasons counts once per kind.

  • BUG: 5
  • TEST BUG: 10
  • NOT IMPLEMENTED: 23
  • REQUIRES: 1
    • service-workers: 1
  • TEST RUNNER: 3
  • FLAKY: 4

Stable tests

TestResultSubtestsKindDescription
cache-storage/cache-abort.https.any.jsPass36 / 36
cache-storage/cache-add.https.any.jsFail92 / 96TEST BUG"Cache.addAll should succeed when an entry matches an earlier entry only under its own vary header": vary.py sets the Vary header from the cookie with str() of bytes (Python 3), i.e. Vary: b'x-shape', a header that neither request has: the two requests match under the Vary of the first response, so addAll() rejects with an InvalidStateError (https://w3c.github.io/ServiceWorker/#batch-cache-operations)
cache-storage/cache-api-nested-worker.https.htmlPass1 / 1
cache-storage/cache-delete.https.any.jsPass36 / 36
cache-storage/cache-keys-attributes-for-service-worker.https.htmlPass2 / 2
cache-storage/cache-keys.https.any.jsPass68 / 68
cache-storage/cache-match.https.any.jsPass100 / 100
cache-storage/cache-matchAll.https.any.jsPass64 / 64
cache-storage/cache-put.https.any.jsPass108 / 108
cache-storage/cache-storage-buckets.https.any.jsFail0 / 8NOT IMPLEMENTEDStorage Buckets API (navigator.storageBuckets)
cache-storage/cache-storage-keys.https.any.jsPass4 / 4
cache-storage/cache-storage-match.https.any.jsPass44 / 44
cache-storage/cache-storage.https.any.jsPass40 / 40
cache-storage/common.https.window.jsPass1 / 1
cache-storage/credentials.https.htmlPass1 / 1
cache-storage/sandboxed-iframes.https.htmlPass2 / 2
idlharness.https.any.jsPass787 / 787
service-worker/Service-Worker-Allowed-header.https.htmlPass8 / 8
service-worker/ServiceWorkerGlobalScope/close.https.htmlPass2 / 2
service-worker/ServiceWorkerGlobalScope/error-message-event.https.htmlFail0 / 1NOT IMPLEMENTEDHTMLCanvasElement.captureStream() (a MediaStream cannot be posted)
service-worker/ServiceWorkerGlobalScope/extendable-message-event-constructor.https.htmlPass10 / 10
service-worker/ServiceWorkerGlobalScope/extendable-message-event.https.htmlPass4 / 4
service-worker/ServiceWorkerGlobalScope/fetch-on-the-right-interface.https.any.jsPass1 / 1
service-worker/ServiceWorkerGlobalScope/isSecureContext.https.htmlPass2 / 2
service-worker/ServiceWorkerGlobalScope/message-event-ports.https.htmlPass1 / 1
service-worker/ServiceWorkerGlobalScope/postmessage.https.htmlPass2 / 2
service-worker/ServiceWorkerGlobalScope/registration-attribute.https.htmlPass2 / 2
service-worker/ServiceWorkerGlobalScope/service-worker-error-event.https.htmlPass1 / 1
service-worker/ServiceWorkerGlobalScope/unregister.https.htmlPass4 / 4
service-worker/ServiceWorkerGlobalScope/update.https.htmlPass1 / 1
service-worker/about-blank-replacement.https.htmlFail4 / 7BUGthe document that replaces the initial about:blank document of an iframe or a popup reuses its Window, but its client has the id of the reserved client of the navigation instead of the id of the environment of the initial document (Chrome and Safari fail the same three subtests); the other subtests pass
service-worker/activate-event-after-install-state-change.https.htmlPass1 / 1
service-worker/activation-after-registration.https.htmlPass1 / 1
service-worker/activation.https.htmlPass4 / 4
service-worker/active.https.htmlPass2 / 2
service-worker/add-routes.https.htmlPass1 / 1
service-worker/claim-affect-other-registration.https.htmlPass1 / 1
service-worker/claim-fetch.https.htmlPass1 / 1
service-worker/claim-not-using-registration.https.htmlPass2 / 2
service-worker/claim-shared-worker-fetch.https.htmlPass1 / 1
service-worker/claim-using-registration.https.htmlPass2 / 2
service-worker/claim-with-redirect.https.htmlPass1 / 1
service-worker/claim-worker-fetch.https.htmlFail3 / 6TEST BUGthe test expects clients.claim() to claim a worker created from a blob: URL; the creation URL of that worker is its blob: URL, which does not match the scope of the registration (https://w3c.github.io/ServiceWorker/#clients-claim), so the worker keeps the controller of its creator. Firefox fails the same three subtests
service-worker/client-id.https.htmlPass1 / 1
service-worker/client-navigate.https.htmlFail9 / 10BUGa navigation of WindowClient.navigate() that is blocked as mixed content loads the error document of a network error, as the navigation algorithm specifies (navigate() is rejected with a TypeError); the test expects the frame to keep its document (reading location.href of the error document throws a SecurityError)
service-worker/client-url-creation-url.https.htmlTimeout0 / 10BUGthe iframe of the test posts a message to its parent while it is parsed, and the test adds its message listener once the load event of the iframe is fired: the task of the message runs before the tasks of the DOMContentLoaded and load events, which are queued when the parsing ends (the browsers fire the load event of a small document in the task that ends its parsing, before the posted messages), so the message is lost and every subtest times out
service-worker/client-url-of-blob-url-worker.https.htmlPass1 / 1
service-worker/clients-get-client-types.https.htmlPass1 / 1
service-worker/clients-get-cross-origin.https.htmlPass1 / 1
service-worker/clients-get-resultingClientId.https.htmlPass6 / 6
service-worker/clients-get.https.htmlPass3 / 3
service-worker/clients-matchall-blob-url-worker.https.htmlPass2 / 2
service-worker/clients-matchall-client-types.https.htmlPass2 / 2
service-worker/clients-matchall-exact-controller.https.htmlPass1 / 1
service-worker/clients-matchall-frozen.https.htmlFail0 / 1TEST BUGthe windows are opened by window.open(), so they are auxiliary browsing contexts whose frameType is auxiliary (https://w3c.github.io/ServiceWorker/#dom-client-frametype), not top-level; their lifecycleState is correct (frozen for the window frozen by test_driver.freeze())
service-worker/clients-matchall-include-uncontrolled.https.htmlPass2 / 2
service-worker/clients-matchall-on-evaluation.https.htmlPass1 / 1
service-worker/clients-matchall-order.https.htmlFail4 / 7TEST RUNNERthe three subtests of the uncontrolled windows expect the window of the WPT harness (/testharness_runner.html) among the clients; the subtests of the controlled windows pass
service-worker/clients-matchall.https.htmlPass1 / 1
service-worker/controlled-dedicatedworker-postMessage.https.htmlDisabled–FLAKYResult depends on the platform: passes on Linux and macOS, times out on Windows before any subtest reports; to investigate
service-worker/controlled-iframe-postMessage.https.htmlFail3 / 5NOT IMPLEMENTEDclients.get(event.resultingClientId) resolves with undefined until the document or the worker of the request exists (the reserved clients are not exposed), so the messages that the service worker posts while it handles the request are not sent. The specification waits for the client to be execution ready, which the test prevents (Chrome fails these subtests); Firefox and Safari give the reserved client and queue its messages
service-worker/controller-on-disconnect.https.htmlPass1 / 1
service-worker/controller-on-load.https.htmlPass1 / 1
service-worker/controller-on-reload.https.htmlPass1 / 1
service-worker/controller-with-no-fetch-event-handler.https.htmlPass5 / 5
service-worker/credentials.https.htmlPass5 / 5
service-worker/css-sw-same-origin-substitution.https.htmlPass1 / 1
service-worker/data-iframe.htmlPass1 / 1
service-worker/data-transfer-files.https.htmlPass1 / 1
service-worker/dedicated-worker-service-worker-interception.https.htmlPass3 / 3
service-worker/detached-context.https.htmlPass4 / 4
service-worker/embed-and-object-are-not-intercepted.https.htmlPass8 / 8
service-worker/extendable-event-async-waituntil.https.htmlPass14 / 14
service-worker/extendable-event-waituntil.https.htmlPass6 / 6
service-worker/fetch-audio-tainting.https.htmlFail0 / 1NOT IMPLEMENTEDMediaElementAudioSourceNode (createMediaElementSource()), which the test uses to check that the audio of the element is tainted
service-worker/fetch-canvas-tainting-double-write.https.htmlPass1 / 1
service-worker/fetch-canvas-tainting-image-cache.https.htmlPass40 / 40
service-worker/fetch-canvas-tainting-image.https.htmlPass40 / 40
service-worker/fetch-canvas-tainting-video-cache.https.htmlPass40 / 40
service-worker/fetch-canvas-tainting-video-with-range-request.https.htmlFail4 / 5BUGthe range responses from single origin with both opaque and non-opaque responses subtest: the opaque (no-cors) first response and the CORS range responses that the service worker fetches from the same cross-origin URL are patched together, so the video taints the canvas instead of failing to load; verify a media response (HTML Standard) accepts the responses of an origin that is same origin with the previous ones whatever their CORS mode (Chrome and Safari fail this subtest too); the other subtests pass
service-worker/fetch-canvas-tainting-video.https.htmlPass40 / 40
service-worker/fetch-cors-exposed-header-names.https.htmlPass1 / 1
service-worker/fetch-cors-xhr.https.htmlPass41 / 41
service-worker/fetch-csp.https.htmlPass1 / 1
service-worker/fetch-error.https.htmlPass3 / 3
service-worker/fetch-event-add-async.https.htmlPass2 / 2
service-worker/fetch-event-after-navigation-within-page.https.htmlPass2 / 2
service-worker/fetch-event-async-respond-with.https.htmlPass4 / 4
service-worker/fetch-event-handled.https.htmlPass8 / 8
service-worker/fetch-event-network-error.https.htmlPass1 / 1
service-worker/fetch-event-redirect.https.htmlPass56 / 56
service-worker/fetch-event-referrer-policy.https.htmlFail2 / 3TEST BUGthe subtest fetches an http: URL from an https: document and expects the service worker to answer it: the request is blocked as mixed content before the service workers are consulted (https://fetch.spec.whatwg.org/#concept-main-fetch). Chrome, Firefox and Safari fail the subtest in the same way
service-worker/fetch-event-respond-with-argument.https.htmlPass1 / 1
service-worker/fetch-event-respond-with-body-loaded-in-chunk.https.htmlPass1 / 1
service-worker/fetch-event-respond-with-custom-response.https.htmlPass11 / 11
service-worker/fetch-event-respond-with-partial-stream.https.htmlPass1 / 1
service-worker/fetch-event-respond-with-readable-stream-chunk.https.htmlPass1 / 1
service-worker/fetch-event-respond-with-readable-stream.https.htmlPass10 / 10
service-worker/fetch-event-respond-with-response-body-with-invalid-chunk.https.htmlPass1 / 1
service-worker/fetch-event-respond-with-stops-propagation.https.htmlPass1 / 1
service-worker/fetch-event-throws-after-respond-with.https.htmlPass1 / 1
service-worker/fetch-event-within-sw.https.htmlPass2 / 2
service-worker/fetch-event.https.h2.htmlFail5 / 7NOT IMPLEMENTEDthe bodies are not streamed: the streaming request bodies (HTTP/2)
service-worker/fetch-event.https.htmlFail42 / 43BUGevent.clientId of a navigation request is the id of the client of the request (the document that starts the navigation), as Create Fetch Event and Dispatch specifies and as speculation-rules/prefetch/tentative/service-worker expects; Chrome, Firefox and Safari give the empty string, which this test expects
service-worker/fetch-frame-resource.https.htmlPass6 / 6
service-worker/fetch-header-visibility.https.htmlPass1 / 1
service-worker/fetch-mixed-content-to-inscope.https.htmlPass1 / 1
service-worker/fetch-mixed-content-to-outscope.https.htmlPass1 / 1
service-worker/fetch-request-body-cancel.https.htmlError1 / 2NOT IMPLEMENTEDthe bodies are not streamed: cancelling event.request.body does not cancel the body of the request
service-worker/fetch-request-css-base-url.https.htmlPass4 / 4
service-worker/fetch-request-css-cross-origin.https.htmlPass4 / 4
service-worker/fetch-request-css-images.https.htmlPass4 / 4
service-worker/fetch-request-fallback.https.htmlPass17 / 17
service-worker/fetch-request-no-freshness-headers.https.htmlPass1 / 1
service-worker/fetch-request-redirect.https.htmlPass35 / 35
service-worker/fetch-request-resources.https.htmlPass67 / 67
service-worker/fetch-request-xhr-sync-error.https.window.jsPass1 / 1
service-worker/fetch-request-xhr-sync-on-worker.https.htmlPass1 / 1
service-worker/fetch-request-xhr-sync.https.htmlPass1 / 1
service-worker/fetch-request-xhr.https.htmlPass13 / 13
service-worker/fetch-response-taint.https.htmlPass132 / 132
service-worker/fetch-response-xhr.https.htmlPass1 / 1
service-worker/fetch-waits-for-activate.https.htmlPass2 / 2
service-worker/fetch-with-body.https.htmlPass1 / 1
service-worker/getregistration.https.htmlPass6 / 6
service-worker/getregistrations.https.htmlPass6 / 6
service-worker/global-serviceworker.https.any.jsPass4 / 4
service-worker/historical.https.any.jsPass1 / 1
service-worker/http-to-https-redirect-and-register.https.htmlPass2 / 2
service-worker/immutable-prototype-serviceworker.https.htmlPass1 / 1
service-worker/import-scripts-cross-origin.https.htmlPass1 / 1
service-worker/import-scripts-data-url.https.htmlPass1 / 1
service-worker/import-scripts-mime-types.https.htmlPass23 / 23
service-worker/import-scripts-redirect.https.htmlPass3 / 3
service-worker/import-scripts-resource-map.https.htmlPass2 / 2
service-worker/import-scripts-updated-flag.https.htmlPass5 / 5
service-worker/indexeddb.https.htmlPass3 / 3
service-worker/install-event-type.https.htmlPass1 / 1
service-worker/installing.https.htmlPass2 / 2
service-worker/intercepted-referrer.https.htmlPass1 / 1
service-worker/interface-requirements-sw.https.htmlPass4 / 4
service-worker/invalid-blobtype.https.htmlPass1 / 1
service-worker/invalid-header.https.htmlPass1 / 1
service-worker/iso-latin1-header.https.htmlPass1 / 1
service-worker/local-url-inherit-controller.https.htmlPass9 / 9
service-worker/mime-sniffing.https.htmlPass1 / 1
service-worker/multi-globals/url-parsing.https.htmlPass3 / 3
service-worker/multipart-image.https.htmlFail3 / 6NOT IMPLEMENTEDmultipart/x-mixed-replace images
service-worker/multiple-register.https.htmlPass3 / 3
service-worker/multiple-update.https.htmlPass1 / 1
service-worker/navigate-window.https.htmlFail1 / 2TEST RUNNERthe subtest of the uncontrolled windows expects the window of the WPT harness (/testharness_runner.html) and the test window as an auxiliary window among the clients; the subtest of the controlled windows passes
service-worker/navigation-headers.https.htmlPass83 / 83
service-worker/navigation-preload/broken-chunked-encoding.https.htmlPass2 / 2
service-worker/navigation-preload/chunked-encoding.https.htmlPass1 / 1
service-worker/navigation-preload/content-encoding.https.htmlPass1 / 1
service-worker/navigation-preload/empty-preload-response-body.https.htmlPass1 / 1
service-worker/navigation-preload/get-state.https.htmlFail2 / 3TEST BUGsetHeaderValue() normalizes the value before checking it (https://w3c.github.io/ServiceWorker/#dom-navigationpreloadmanager-setheadervalue): a leading carriage return is removed, the test expects a TypeError as in the browsers
service-worker/navigation-preload/navigationPreload.https.htmlPass1 / 1
service-worker/navigation-preload/redirect.https.htmlPass4 / 4
service-worker/navigation-preload/request-headers.https.htmlPass1 / 1
service-worker/navigation-preload/resource-timing.https.htmlTimeout0 / 1NOT IMPLEMENTEDthe resource timing entry of the navigation preload request
service-worker/navigation-preload/samesite-cookies.https.htmlPass5 / 5
service-worker/navigation-preload/samesite-iframe.https.htmlPass1 / 1
service-worker/navigation-redirect-body.https.htmlPass1 / 1
service-worker/navigation-redirect-resolution.https.htmlPass3 / 3
service-worker/navigation-redirect-to-http.https.htmlPass1 / 1
service-worker/navigation-redirect.https.htmlPass78 / 78
service-worker/navigation-sets-cookie.https.htmlPass16 / 16
service-worker/navigation-timing-extended.https.htmlPass1 / 1
service-worker/navigation-timing-sizes.https.htmlPass3 / 3
service-worker/navigation-timing.https.htmlPass3 / 3
service-worker/nested-blob-url-workers.https.htmlPass3 / 3
service-worker/next-hop-protocol.https.htmlFail1 / 2NOT IMPLEMENTEDthe protocol of the connection is not reported by the loader: nextHopProtocol is http/1.1 for the HTTP/2 resource of the network (the H1 subtest passes)
service-worker/no-dynamic-import-in-module.any.jsPass3 / 3
service-worker/no-dynamic-import.any.jsPass3 / 3
service-worker/onactivate-script-error.https.htmlPass5 / 5
service-worker/oninstall-script-error.https.htmlPass6 / 6
service-worker/opaque-response-preloaded.https.htmlPass2 / 2
service-worker/opaque-script.https.htmlPass4 / 4
service-worker/performance-timeline.https.htmlPass4 / 4
service-worker/postmessage-blob-url.https.htmlPass1 / 1
service-worker/postmessage-from-waiting-serviceworker.https.htmlPass1 / 1
service-worker/postmessage-msgport-to-client.https.htmlPass1 / 1
service-worker/postmessage-to-client-message-queue.https.htmlPass5 / 5
service-worker/postmessage-to-client.https.htmlPass1 / 1
service-worker/postmessage.https.htmlPass5 / 5
service-worker/ready.https.window.jsPass9 / 9
service-worker/redirected-response.https.htmlPass26 / 26
service-worker/referer.https.htmlPass1 / 1
service-worker/referrer-policy-header.https.htmlPass3 / 3
service-worker/referrer-toplevel-script-fetch.https.htmlPass2 / 2
service-worker/register-closed-window.https.htmlPass1 / 1
service-worker/register-default-scope.https.htmlPass3 / 3
service-worker/register-same-scope-different-script-url.https.htmlPass5 / 5
service-worker/register-wait-forever-in-install-worker.https.htmlPass1 / 1
service-worker/registration-basic.https.htmlPass3 / 3
service-worker/registration-end-to-end.https.htmlPass1 / 1
service-worker/registration-events.https.htmlPass1 / 1
service-worker/registration-iframe.https.htmlPass3 / 3
service-worker/registration-mime-types.https.htmlPass39 / 39
service-worker/registration-schedule-job.https.htmlPass3 / 3
service-worker/registration-scope-module-static-import.https.htmlPass3 / 3
service-worker/registration-scope.https.htmlPass10 / 10
service-worker/registration-script-module.https.htmlDisabled–FLAKYResult depends on the platform: passes on Linux and macOS, times out on Windows before its first subtest reports (the registration of a script served with an invalid chunked encoding by resources/invalid-chunked-encoding.py does not complete); to investigate
service-worker/registration-script-url.https.htmlPass8 / 8
service-worker/registration-script.https.htmlDisabled–FLAKYResult depends on the platform: passes on Linux and macOS, times out on Windows before its first subtest reports (the registration of a script served with an invalid chunked encoding by resources/invalid-chunked-encoding.py does not complete); to investigate
service-worker/registration-security-error.https.htmlPass8 / 8
service-worker/registration-service-worker-attributes.https.htmlPass1 / 1
service-worker/registration-updateviacache.https.htmlPass25 / 25
service-worker/rejections.https.htmlPass1 / 1
service-worker/request-end-to-end.https.htmlPass1 / 1
service-worker/resource-timing-bodySize.https.htmlPass24 / 24
service-worker/resource-timing-cross-origin-server-timing.https.htmlFail0 / 1TEST BUGthe test expects the decodedBodySize and encodedBodySize of a CORS response without Timing-Allow-Origin to be 0: the body sizes are CORS-protected, not TAO-protected (https://w3c.github.io/resource-timing/, resource-timing/body-size-cross-origin.https.html). The Server-Timing metrics of the response are not exposed, as the test expects
service-worker/resource-timing-cross-origin.https.htmlFail0 / 2TEST BUGthe test expects the connection times of an entry whose timing allow check fails to equal fetchStart; they are 0 (https://w3c.github.io/resource-timing/). Chrome, Firefox and Safari fail the two subtests on domainLookupStart
service-worker/resource-timing-fetch-variants.https.htmlPass5 / 5
service-worker/resource-timing.sub.https.htmlFail1 / 2TEST RUNNERthe server of the runner does not answer the request of a missing file (missing.jpg) with a 404 response: the loader fails, so the entry of the image is the one of a network error (responseStart is 0); the assertions of the other resources pass
service-worker/respond-with-body-accessed-response.https.htmlPass20 / 20
service-worker/same-site-cookies.https.htmlFail65 / 66NOT IMPLEMENTEDstorage partitioning: the service worker registered by a same-origin iframe nested in a cross-site iframe is not partitioned, so the request that it creates (new Request(event.request, ...)) is same-site and sends the SameSite cookies; the other 65 subtests pass
service-worker/sandboxed-iframe-fetch-event.https.htmlPass29 / 29
service-worker/sandboxed-iframe-navigator-serviceworker.https.htmlPass4 / 4
service-worker/secure-context.https.htmlPass1 / 1
service-worker/service-worker-csp-connect.https.htmlPass5 / 5
service-worker/service-worker-csp-default.https.htmlPass5 / 5
service-worker/service-worker-csp-script.https.htmlPass5 / 5
service-worker/service-worker-header.https.htmlPass1 / 1
service-worker/serviceworker-message-event-historical.https.htmlPass1 / 1
service-worker/serviceworkerobject-scripturl.https.htmlPass4 / 4
service-worker/skip-waiting-installed.https.htmlPass1 / 1
service-worker/skip-waiting-using-registration.https.htmlPass2 / 2
service-worker/skip-waiting-without-client.https.htmlPass2 / 2
service-worker/skip-waiting-without-using-registration.https.htmlPass2 / 2
service-worker/skip-waiting.https.htmlPass1 / 1
service-worker/soft-update-fetch-metadata.https.htmlPass3 / 3
service-worker/srcdoc-iframe.https.htmlPass5 / 5
service-worker/state.https.htmlPass1 / 1
service-worker/static-router-cross-origin-navigation.https.htmlPass1 / 1
service-worker/static-router-fetch-event.https.htmlPass2 / 2
service-worker/static-router-invalid-rules.https.htmlPass8 / 8
service-worker/static-router-main-resource.https.htmlPass9 / 9
service-worker/static-router-multiple-router-registrations.https.htmlPass2 / 2
service-worker/static-router-mutiple-conditions.https.htmlPass2 / 2
service-worker/static-router-no-fetch-handler.https.htmlPass3 / 3
service-worker/static-router-race-network-and-fetch-handler.https.htmlPass8 / 8
service-worker/static-router-request-destination.https.htmlPass2 / 2
service-worker/static-router-request-method.https.htmlPass4 / 4
service-worker/static-router-subresource.https.htmlPass18 / 18
service-worker/synced-state.https.htmlPass1 / 1
service-worker/uncontrolled-page.https.htmlPass1 / 1
service-worker/unregister-controller.https.htmlPass3 / 3
service-worker/unregister-immediately-before-installed.https.htmlDisabled–NOT IMPLEMENTEDRuns until the maximum duration of the runner (1 minute): Clear-Site-Data is not implemented, so it cannot abort the evaluation of a service worker script that loops forever
service-worker/unregister-immediately-during-extendable-events.https.htmlTimeout0 / 1NOT IMPLEMENTEDthe immediate clearing of the registrations by the Clear-Site-Data header (the storage type): the registrations are unregistered (https://w3c.github.io/webappsec-clear-site-data/#clear-dom-accessible-storage), so their workers are not terminated and their controlled clients keep them until they are unloaded; the tests expect the behavior of Chromium, which clears the registrations and their workers at once
service-worker/unregister-immediately.https.htmlDisabled–FLAKYthe result depends on the timing of the service worker jobs: Clear-Site-Data does not clear the registrations immediately (their workers are not terminated and their controlled clients keep them until they are unloaded), so the subtests wait for state changes that happen or not before the timeout. Locally the first subtest (a worker kept in the activating state) times out and the others do not run; on the Linux x64 runners of CI the first two pass and the third times out
service-worker/unregister-then-register-new-script.https.htmlPass3 / 3
service-worker/unregister-then-register.https.htmlPass4 / 4
service-worker/unregister.https.htmlPass2 / 2
service-worker/update-after-navigation-fetch-event.https.htmlPass3 / 3
service-worker/update-after-navigation-redirect.https.htmlPass1 / 1
service-worker/update-after-oneday.https.htmlTimeout0 / 1TEST BUGthe test needs a registration whose last update check is older than 24 hours and cannot age it (it relies on a testing hook that the browsers do not expose): it times out in Chrome, Firefox and Safari too
service-worker/update-bytecheck-cors-import.https.htmlPass8 / 8
service-worker/update-bytecheck.https.htmlPass8 / 8
service-worker/update-import-scripts.https.htmlPass5 / 5
service-worker/update-missing-import-scripts.https.htmlPass2 / 2
service-worker/update-module-request-mode.https.htmlPass1 / 1
service-worker/update-no-cache-request-headers.https.htmlPass1 / 1
service-worker/update-not-allowed.https.htmlPass3 / 3
service-worker/update-on-navigation.https.htmlPass1 / 1
service-worker/update-recovery.https.htmlFail0 / 1TEST BUGthe test expects that the iframe of a navigation that fails with a network error (the service worker rejects the request) fires no load event; the iframe fires it for the error document, as in Chrome and Firefox, which fail the test in the same way
service-worker/update-registration-with-type.https.htmlPass7 / 7
service-worker/update-result.https.htmlPass1 / 1
service-worker/update.https.htmlPass7 / 7
service-worker/waiting.https.htmlPass2 / 2
service-worker/websocket-in-service-worker.https.htmlPass1 / 1
service-worker/websocket.https.htmlPass1 / 1
service-worker/webvtt-cross-origin.https.htmlPass10 / 10
service-worker/windowclient-ancestorOrigins.sub.https.htmlPass4 / 4
service-worker/windowclient-navigate.https.htmlFail21 / 22TEST BUGthe subtest expects the frame type of a window opened with window.open() to be "top-level"; its browsing context is an auxiliary browsing context, whose frame type is "auxiliary" (https://w3c.github.io/ServiceWorker/#get-frame-type). Firefox fails the subtest in the same way; the other subtests pass
service-worker/worker-client-id.https.htmlPass1 / 1
service-worker/worker-in-sandboxed-iframe-by-csp-fetch-event.https.htmlPass5 / 5
service-worker/worker-interception-redirect.https.htmlPass66 / 66
service-worker/worker-interception.https.htmlPass16 / 16
service-worker/xhr-content-length.https.window.jsPass5 / 5
service-worker/xhr-response-url.https.htmlPass6 / 6
service-worker/xsl-base-url.https.htmlFail0 / 1NOT IMPLEMENTEDXSLT

Tentative tests

TestResultSubtestsKindDescription
cache-storage/cross-partition.https.tentative.htmlFail0 / 4NOT IMPLEMENTED, REQUIRES(service-workers)storage partitioning: the storage key of a cross-site iframe or worker is its origin (it is not keyed by the top-level site); the service worker variant (navigator.serviceWorker is undefined)
service-worker/partitioned-claim.tentative.https.htmlFail0 / 1NOT IMPLEMENTEDstorage partitioning: the service workers of a cross-site iframe are not partitioned by top-level site
service-worker/partitioned-cookies.tentative.https.htmlFail0 / 1NOT IMPLEMENTEDstorage partitioning: the service workers of a cross-site iframe are not partitioned by top-level site
service-worker/partitioned-getRegistrations.tentative.https.htmlFail0 / 1NOT IMPLEMENTEDstorage partitioning: the service workers of a cross-site iframe are not partitioned by top-level site
service-worker/partitioned-matchAll.tentative.https.htmlFail0 / 1NOT IMPLEMENTEDstorage partitioning: the service workers of a cross-site iframe are not partitioned by top-level site
service-worker/partitioned.tentative.https.htmlFail0 / 2NOT IMPLEMENTEDstorage partitioning: the service workers of a cross-site iframe are not partitioned by top-level site
service-worker/tentative/fetch-event-download-fallback.https.htmlFail0 / 1NOT IMPLEMENTEDthe downloads (<a download>), and the service worker script of the test is not fetched
service-worker/tentative/fetch-event-download-out-of-scope.https.htmlFail0 / 1NOT IMPLEMENTEDthe downloads (<a download>), and the service worker script of the test is not fetched
service-worker/tentative/fetch-event-download-respond-with.https.htmlFail0 / 1NOT IMPLEMENTEDthe downloads (<a download>), and the service worker script of the test is not fetched
service-worker/tentative/fetch-event-download.https.htmlFail0 / 1NOT IMPLEMENTEDthe downloads (<a download>), and the service worker script of the test is not fetched
service-worker/tentative/static-router/static-router-resource-timing.https.htmlPass14 / 14

Reftests

TestResultVariantsKindDescription
service-worker/svg-target-reftest.https.htmlPass1 / 1