WPT coverage

edit

The library is tested against the web-platform-tests (WPT), the conformance test suite shared by the browsers, at the revision 5602b0f210e3. This page gives the pass rate of each section of the test suite. The page of a section lists its tests, with the reason why each test that does not pass fails.

The tests are split in three groups:

  • Stable tests: the testharness.js tests that are not marked as tentative: they test the behaviors defined by a specification (some of these specifications are still drafts or incubations). They measure the conformance of the library.
  • Tentative tests: the testharness.js tests of the experimental features and of the proposed changes that no specification requires yet (the WPT convention: .tentative. in the file name or a tentative directory). They may change or be removed, and browsers often do not pass them: they are reported separately and are not part of the stable coverage.
  • Reftests: the reftests (tentative ones included), which compare the rendering of a page with the rendering of its references, and the print reftests, which compare the pages of the printed documents: they measure the layout, the pagination and the painting.

The columns:

  • Tests: the testharness.js test files of the section that run in a window or in a dedicated or shared worker (or in a service worker for the tests of service-workers) and the reftests, according to the WPT manifest of the revision, and the other files that are run (a file with several variants counts once: a .any.js test passes when it passes in all its globals, a reftest when all its variants pass). Visual tests, crash tests, manual tests, WebDriver tests, the tests that only run in a ShadowRealm, and the tests outside of service-workers that only run in service workers are not counted: the library has no ShadowRealm, and the service workers are only tested by the tests of service-workers.
  • Passing: the testharness.js tests whose harness status is OK and whose subtests all pass with the JavaScript engine (Meziantou.Framework.JavaScriptEngine), and the reftests whose rendering matches their references.
  • Disabled: the tests that are not run: they are skipped, or their directory is not part of the tested directories. The page of the section gives the reason.
  • Pass rate: the passing tests among the tests that are run (the tests that are not disabled).

The pages of the sections give, for each test that does not pass, the Kind and the Description of the reasons why it does not pass (a test can have several reasons), and the Failure reasons section of each page (this one included) counts the tests that do not pass per kind and per feature. The kinds:

  • BUG: the implementation is broken.
  • TEST BUG: the test is wrong: it does not match the specification.
  • JS ENGINE: a limitation of the JavaScript engine (Meziantou.Framework.JavaScriptEngine) or of its integration with the library.
  • NOT IMPLEMENTED: the feature is not implemented yet.
  • REQUIRES(features): the feature cannot be implemented, or the test cannot pass, until other features are implemented (listed in parentheses).
  • TEST RUNNER: the WPT runner cannot run the test: a .py handler of the WPT server is not emulated, or the directory is not fetched.
  • OUT OF SCOPE: the library will not support it.
  • FLAKY: the test passes or fails randomly.
  • PERFORMANCE: the test is too slow to be run by every build.

The features of REQUIRES:

  • animations: CSS animations and transitions, Web Animations.
  • hardware: devices and OS integration: sensors, cameras, screens, Bluetooth, USB.
  • layout: a layout engine: boxes, scrolling, hit testing.
  • media: audio and video playback, media decoders and encoders.
  • service-workers: service workers.
  • user-input: user input: pointer, keyboard and wheel actions, user activation.
  • web-storage: Web Storage (localStorage, sessionStorage).
  • workers: dedicated and shared workers.
  • worklets: worklets.

Summary

GroupPassingTestsDisabledPass rate
Stable26,22829,6912,10595%
Tentative1,3743,07469258%
Reftests27,95829,22017096%
All55,56061,9852,96794%

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: 174
  • TEST BUG: 1,033
  • NOT IMPLEMENTED: 4,252
  • REQUIRES: 762
    • hardware: 574
    • layout: 20
    • media: 20
    • service-workers: 1
    • user-input: 154
    • workers: 3
  • TEST RUNNER: 309
  • OUT OF SCOPE: 205
  • FLAKY: 17
  • PERFORMANCE: 7

Stable tests

SectionPassingTestsDisabledPass rate
accelerometer912075%
accessibility110100%
accname17170100%
acid110100%
ai01111–
ambient-light10100100%
animation-worklet1523065%
apng110100%
audio-output01010–
audio-session033–
autoplay-policy-detection033–
background-fetch01313–
background-sync011–
badging35060%
battery-status917053%
beacon16160100%
bluetooth0154154–
captured-mouse-events044–
clear-site-data1013077%
client-hints121132092%
clipboard-apis3438089%
close-watcher52520100%
compat1314093%
compression19190100%
compute-pressure2425096%
console11110100%
contacts011–
content-dpr110100%
content-index022–
content-security-policy862893097%
contenteditable022–
cookies7176093%
cookiestore3947083%
core-aam011–
cors24240100%
cpu-performance011–
credential-management01616–
css/compositing1315087%
css/css-align2412410100%
css/css-anchor-position259262099%
css/css-animations9598097%
css/css-backgrounds130132098%
css/css-borders3637097%
css/css-box5379067%
css/css-break42420100%
css/css-cascade92920100%
css/css-color6769097%
css/css-color-adjust15150100%
css/css-color-hdr34075%
css/css-conditional223226099%
css/css-contain9497097%
css/css-content990100%
css/css-counter-styles12120100%
css/css-device-adapt110100%
css/css-display36360100%
css/css-easing1213092%
css/css-env330100%
css/css-exclusions088–
css/css-flexbox375376099.7%
css/css-font-loading23230100%
css/css-fonts157167094%
css/css-forced-color-adjust440100%
css/css-forms69067%
css/css-gaps75750100%
css/css-grid730731099.8%
css/css-highlight-api19190100%
css/css-image-animation011–
css/css-images4445098%
css/css-inline5253098%
css/css-layout-api770100%
css/css-link-params49044%
css/css-lists38380100%
css/css-logical8284098%
css/css-masking6364098%
css/css-mixins4849098%
css/css-multicol8991098%
css/css-nesting24240100%
css/css-overflow214217099%
css/css-overscroll-behavior12120100%
css/css-page1820090%
css/css-paint-api12050%
css/css-parser-api110100%
css/css-position111114097%
css/css-properties-values-api99105094%
css/css-pseudo4549092%
css/css-rhythm1617094%
css/css-ruby20200100%
css/css-scroll-anchoring6970099%
css/css-scroll-snap154157098%
css/css-scrollbars25250100%
css/css-shadow87870100%
css/css-shapes1471470100%
css/css-size-adjust550100%
css/css-sizing199201099%
css/css-syntax4748098%
css/css-tables108113096%
css/css-text340349097%
css/css-text-decor48480100%
css/css-transforms101105096%
css/css-transitions99107093%
css/css-typed-om290319091%
css/css-ui94101093%
css/css-values254264096%
css/css-variables6263098%
css/css-view-transitions155164095%
css/css-viewport28280100%
css/css-will-change550100%
css/css-writing-modes8085094%
css/CSS273730100%
css/cssom260263099%
css/cssom-view216231094%
css/fetching12050%
css/fill-stroke58063%
css/filter-effects37370100%
css/geometry30300100%
css/mediaqueries26260100%
css/motion46460100%
css/selectors455457099.5%
custom-elements183189097%
delegated-ink110100%
density-size-correction12050%
deprecation-reporting110100%
device-bound-session-credentials02727–
device-memory12050%
device-posture550100%
digital-credentials02424–
direct-sockets044–
document-picture-in-picture02222–
document-policy57071%
dom665684698%
domparsing5256093%
domxpath28280100%
dpub-aam011–
ecmascript022–
editing72127057%
element-timing5052096%
encoding1521520100%
encoding-detection550100%
encrypted-media09999–
entries-api044–
event-timing6771094%
eventsource6667099%
eyedropper011–
fedcm06868–
fenced-frame099–
fetch332408182%
file-system-access055–
FileAPI6973095%
focus3139079%
font-access066–
forced-colors-mode1315087%
fs3235091%
fullscreen8187093%
gamepad066–
generic-sensor330100%
geolocation2023087%
geolocation-sensor110100%
gpc440100%
graphics-aria011–
gyroscope910090%
hr-time13130100%
html-aam2526096%
html-media-capture022–
html/browsers696746093%
html/canvas3,0883,165098%
html/cross-origin-embedder-policy5673077%
html/cross-origin-opener-policy67114059%
html/dom212216098%
html/editing121129094%
html/infrastructure6469093%
html/interaction5658097%
html/links660100%
html/meta110100%
html/obsolete15150100%
html/rendering144150096%
html/scripting330100%
html/select110100%
html/semantics2,1062,1923197%
html/syntax105106099%
html/the-xhtml-syntax13130100%
html/user-activation1518083%
html/webappapis320338195%
idle-detection710070%
imagebitmap-renderingcontext14140100%
import-maps49490100%
IndexedDB225229199%
inert2529086%
infrastructure0102102–
input-device-capabilities011–
input-events1618089%
installedapp022–
intersection-observer140153092%
intervention-reporting110100%
is-input-pending10100100%
jpegxl912075%
js1626164%
js-self-profiling02500%
keyboard-lock770100%
keyboard-map880100%
largest-contentful-paint6366095%
layout-instability83830100%
loading753013%
long-animation-frame03939–
longtask-timing1821086%
magnetometer810080%
managed022–
mathml200208096%
measure-memory01515–
media-capabilities077–
media-playback-quality110100%
media-source7684090%
mediacapture-extensions01313–
mediacapture-fromelement01100%
mediacapture-handle011–
mediacapture-image02323–
mediacapture-insertable-streams01818–
mediacapture-record02121–
mediacapture-region011–
mediacapture-streams05959–
mediasession89089%
merchant-validation011–
mimesniff34075%
mixed-content3843840100%
mst-content-hint044–
nav-tracking-mitigations022–
navigation-api452458099%
navigation-timing5458093%
netinfo220100%
network-error-logging01212–
notifications1220060%
old-tests01515–
orientation-event27270100%
orientation-sensor1416088%
page-lifecycle220100%
page-visibility10100100%
paint-timing5859098%
payment-method-basic-card044–
payment-method-id011–
payment-method-manifest01111–
payment-request03131–
performance-timeline2930097%
periodic-background-sync022–
permissions1114292%
permissions-policy4394046%
permissions-request011–
permissions-revoke011–
picture-in-picture01818–
png440100%
pointerevents169179094%
pointerlock19190100%
preload6369091%
presentation-api01313–
private-click-measurement011–
proximity24050%
push-api088–
quirks1418078%
referrer-policy1,4771,478099.9%
remote-playback099–
reporting1925076%
requestidlecallback20200100%
resize-observer35350100%
resource-timing107118091%
sanitizer-api4850096%
savedata110100%
scheduler24240100%
screen-capture01313–
screen-details011–
screen-orientation1315087%
screen-wake-lock1617094%
scroll-animations141148095%
scroll-to-text-fragment2526096%
secure-contexts10100100%
secure-payment-confirmation02020–
selection8391091%
serial01010–
server-timing990100%
service-workers248283589%
shadow-dom218254086%
shape-detection02500%
soft-navigation-heuristics110100%
speculation-rules132185172%
speech-api01616–
storage1114079%
storage-access-api03737–
streams7085486%
subresource-integrity055–
svg716742297%
svg-aam550100%
timing-entrytypes-registry220100%
touch-events912075%
trusted-types216224096%
ua-client-hints220100%
uievents6266094%
upgrade-insecure-requests191197097%
url34340100%
urlpattern660100%
user-timing38380100%
vibration440100%
video-rvfc088–
viewport110100%
viewport-segments330100%
virtual-keyboard330100%
visual-viewport1619084%
wai-aria2021095%
wasm326342095%
web-animations128136094%
web-based-payment-handler01010–
web-extensions066–
web-locks2223096%
web-nfc01111–
web-otp011–
web-share14140100%
webaudio278298093%
webauthn05454–
webcodecs08686–
WebCryptoAPI1351361100%
webdriver011–
webgl02000%
webhid055–
webidl4246295%
webmcp07575–
webmessaging1311310100%
webmidi011–
webnn0191191–
webrtc0228228–
webrtc-encoded-transform02222–
webrtc-extensions01111–
webrtc-ice011–
webrtc-identity044–
webrtc-priority022–
webrtc-stats01010–
webrtc-svc055–
websockets198204097%
webstorage5154094%
webtransport04040–
webusb03232–
webvtt75750100%
webxr0179179–
workers285288099%
worklets2021095%
x-frame-options660100%
xhr320330097%
xml01212–
Total (343 sections)26,22829,6912,10595%

Tentative tests

SectionPassingTestsDisabledPass rate
accname440100%
ai0177177–
bluetooth011–
clear-site-data220100%
clipboard-apis1420070%
compression0100%
connection-allowlist08888–
console110100%
container-timing29290100%
content-security-policy815053%
cookies1113085%
cookiestore110100%
cors0200%
css/css-anchor-position34075%
css/css-animations2829097%
css/css-borders3847081%
css/css-break660100%
css/css-cascade110100%
css/css-conditional660100%
css/css-device-adapt660100%
css/css-display880100%
css/css-env880100%
css/css-flexbox660100%
css/css-font-loading110100%
css/css-fonts660100%
css/css-gaps220100%
css/css-grid3236089%
css/css-highlight-api330100%
css/css-inline56083%
css/css-logical0200%
css/css-mixins880100%
css/css-multicol0100%
css/css-navigation02020–
css/css-overflow810080%
css/css-page23067%
css/css-properties-values-api36050%
css/css-pseudo1012083%
css/css-ruby0100%
css/css-scroll-anchoring67086%
css/css-scroll-snap3031097%
css/css-shadow0400%
css/css-sizing770100%
css/css-tables26260100%
css/css-text18180100%
css/css-transforms13033%
css/css-transitions1718094%
css/css-typed-om3943091%
css/css-ui1216075%
css/css-values2122095%
css/css-view-transitions47057%
css/css-writing-modes110100%
css/CSS2220100%
css/cssom69067%
css/cssom-view34075%
css/fill-stroke0200%
css/mediaqueries310030%
css/selectors1517088%
custom-elements27029%
delegated-ink440100%
device-bound-session-credentials055–
digital-credentials033–
document-policy0300%
dom3055257%
domparsing3639092%
domxpath660100%
editing2661043%
encoding-detection70700100%
encrypted-media011–
event-timing12050%
eyedropper011–
fedcm01414–
fetch1477118%
font-access066–
fs28025%
fullscreen23067%
hsts011–
html-aam710070%
html/anonymous-iframe1518083%
html/browsers1115073%
html/canvas725903%
html/capability-delegation077–
html/cross-origin-embedder-policy0300%
html/cross-origin-opener-policy12050%
html/document-isolation-policy2244050%
html/dom2733082%
html/editing110100%
html/interaction114613813%
html/rendering37043%
html/semantics652033238%
html/syntax125130096%
html/user-activation0300%
html/webappapis26033%
https-upgrades066–
idle-detection12050%
IndexedDB0100%
input-events0900%
is-input-pending0200%
js-self-profiling0100%
largest-contentful-paint48050%
long-animation-frame01313–
mathml12050%
media-source0300%
mediacapture-fromelement0100%
mediacapture-insertable-streams022–
merchant-validation033–
mimesniff220100%
mixed-content440100%
navigation-api312025%
notifications24050%
page-lifecycle231100%
page-visibility110100%
payment-request022–
performance-timeline721033%
permissions-policy1423061%
pointerevents59056%
preload0100%
push-api033–
referrer-policy440100%
resource-timing13303%
sanitizer-api814057%
scheduler15150100%
screen-capture022–
screen-details022–
scroll-animations4076053%
scroll-performance-timing0100%
secure-contexts220100%
selection2633079%
service-workers11109%
shadow-dom3398034%
signed-exchange06060–
soft-navigation-heuristics9195096%
speculation-rules626023%
speech-api022–
storage01300%
storage-access-api055–
streams14025%
subapps088–
subresource-integrity01818–
svg4647098%
svg-aam0200%
touch-events12050%
trust-tokens033–
trusted-types69067%
uievents13033%
urlpattern330100%
wai-aria814057%
wasm1570021%
web-animations38038%
web-bundle02929–
web-install055–
web-locks67086%
web-share110100%
webaudio25040%
webauthn011–
WebCryptoAPI54540100%
webmessaging0700%
webrtc033–
webrtc-encoded-transform01818–
websockets01200%
webtransport022–
window-management055–
workers18013%
xhr220100%
xml022–
Total (164 sections)1,3743,07469258%

Reftests

SectionPassingTestsDisabledPass rate
acid220100%
animation-worklet1015067%
apng110100%
avif220100%
compat2527093%
content-dpr550100%
content-security-policy880100%
contenteditable011–
css/compositing5560092%
css/css-align6264097%
css/css-anchor-position236241098%
css/css-animations36360100%
css/css-backgrounds708719199%
css/css-borders102114089%
css/css-box4272058%
css/css-break1,1391,145099%
css/css-cascade50500100%
css/css-color304308199%
css/css-color-adjust25250100%
css/css-conditional172173099%
css/css-contain431432099.7%
css/css-content65650100%
css/css-counter-styles253259098%
css/css-display166218076%
css/css-exclusions044–
css/css-flexbox1,0191,023099.6%
css/css-font-loading770100%
css/css-fonts360385194%
css/css-forms617035%
css/css-gaps540544099%
css/css-grid1,7321,767098%
css/css-highlight-api113118096%
css/css-image-animation02222–
css/css-images467476098%
css/css-inline191199096%
css/css-layout-api128135095%
css/css-lists163182090%
css/css-logical660100%
css/css-masking489500198%
css/css-multicol465467099.5%
css/css-namespaces23230100%
css/css-navigation033–
css/css-nesting17170100%
css/css-overflow671686098%
css/css-page225229098%
css/css-paint-api1151150100%
css/css-painting110100%
css/css-position245253097%
css/css-properties-values-api770100%
css/css-pseudo257275093%
css/css-rhythm18180100%
css/css-ruby123143086%
css/css-scroll-anchoring440100%
css/css-scroll-snap2426092%
css/css-scrollbars31310100%
css/css-shadow107114094%
css/css-shapes237238099.5%
css/css-sizing565569099%
css/css-style-attr16160100%
css/css-syntax110100%
css/css-tables170173098%
css/css-text1,5141,559097%
css/css-text-decor311318098%
css/css-transforms794797099.6%
css/css-transitions660100%
css/css-typed-om550100%
css/css-ui960964099.5%
css/css-values211214099%
css/css-variables1831830100%
css/css-view-transitions308318097%
css/css-viewport1081080100%
css/css-will-change47470100%
css/css-writing-modes1,1491,159099%
css/CSS26,2246,285099%
css/cssom912075%
css/cssom-view11110100%
css/fill-stroke110100%
css/filter-effects386394098%
css/mediaqueries5758098%
css/motion98980100%
css/printing3639092%
css/reference330100%
css/selectors341342099.7%
css/WOFF2292298198%
custom-elements13033%
density-size-correction1820090%
dom440100%
editing12050%
encoding440100%
fetch911082%
FileAPI110100%
focus220100%
forced-colors-mode4849098%
fullscreen660100%
gif110100%
html-ruby-extensions84840100%
html/browsers440100%
html/canvas214552039%
html/dom1271270100%
html/editing23241100%
html/infrastructure011–
html/interaction110100%
html/obsolete220100%
html/rendering320330097%
html/select110100%
html/semantics3264316689%
html/syntax22220100%
html/the-xhtml-syntax220100%
infrastructure06161–
intersection-observer110100%
jpegxl3451067%
mathml270282196%
page-lifecycle110100%
permissions-policy0100%
png61610100%
preload110100%
quirks2930097%
referrer-policy0100%
resize-observer330100%
scroll-animations3137084%
scroll-to-text-fragment110100%
selection19190100%
service-workers110100%
shadow-dom26260100%
svg562629290%
trusted-types110100%
web-animations18180100%
webgl0200%
webvtt182251073%
xml033–
Total (130 sections)27,95829,22017096%