Skip to content
Test suites for Web platform specs — including WHATWG, W3C, and others
HTML JavaScript Python CSS Shell Perl
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Don't run build-and-tag workflow on forks (#20486) Nov 28, 2019
.well-known Part 1: Stop using |global|, and fix a typo ('param' should have been… Apr 25, 2019
2dcontext Add getTransform function to offscreen canvases (#20037) Nov 11, 2019
BackgroundSync [Background Sync] Update WPT tests. Nov 20, 2019
FileAPI [FileAPI] Opt-in to single-page test feature (#19925) Oct 26, 2019
IndexedDB Let 'Ensure that databases() returns a promise' test case accept a re… Dec 6, 2019
PeriodicBackgroundSync [Periodic Background Sync] Update unregister logic Dec 3, 2019
WebCryptoAPI [WebCryptoAPI] Defer harness completion (#19904) Nov 1, 2019
WebIDL Add WPT test for invalidating WebIDL iterators during forEach Nov 26, 2019
accelerometer [sensor] Upstream sensor layout tests to wpt Sep 18, 2019
accname Update name_test_case_610-manual.html (#19807) Oct 24, 2019
acid Add a reference for Acid2 that should pixel-for-pixel match Mar 7, 2019
ambient-light [sensor] Upstream sensor layout tests to wpt Sep 18, 2019
animation-worklet [AnimationWorklet] De-flake stateful-animator tests Oct 29, 2019
annotation-model Consolidate .gitignore files under the root (#15952) Mar 25, 2019
annotation-protocol Consolidate .gitignore files under the root (#15952) Mar 25, 2019
annotation-vocab Remove annotation-vocab/tools/ruby-rdf/ and its samples (#20114) Nov 12, 2019
apng Add more spec links to META.yml (#12045) Jul 18, 2018
appmanifest Remove the idl_test test_name argument (always 'idl_test setup') (#12406 Aug 13, 2018
audio-output Convert some tests to use `idl_test` (#18677) Aug 27, 2019
background-fetch [Background Fetch] Add web platform tests for match. Mar 22, 2019
battery-status Rename battery-interface-idlharness.https.window.js to idlharness.htt… Nov 4, 2019
beacon Remove toddreifsteck as reviewer for beacon (#19416) Oct 9, 2019
bluetooth convert testing/web-platform to python3 compatible syntax Sep 18, 2019
clear-site-data Clear-Site-Data: clients uncontrolled by service workers after storag… Oct 7, 2019
client-hints Implement `Sec-CH-UA-Mobile` Dec 9, 2019
clipboard-apis Async Clipboard: Fix off-by-one renderer crash Jul 11, 2019
common Don't assume sync dispatch of iframe load event in tests Nov 24, 2019
compat css-deprecated-flexbox: remove visibility checks in LayoutDeprecatedF… Nov 5, 2019
compression Mark decompression-corrupt-input.any.js tentative (#20427) Nov 28, 2019
conformance-checkers cc Update messages.json for parent-rp-novalid case Dec 9, 2019
console Convert compat+console+fullscreen+storage+url+xhr to idl_test (#12405) Aug 10, 2018
contacts [Contacts] Support querying contact icons. Nov 4, 2019
content-dpr CSS images to respect Content-DPR Dec 2, 2019
content-security-policy Fix WPT test: content-security-policy/reporting/report-only-unsafe-ev… Dec 3, 2019
cookie-store Cookie Store: Refactor tests to also work in window context. Dec 2, 2019
cookies Mark external/wpt/cookies/http-state/path-tests.htm as slow test Nov 26, 2019
core-aam Add new tests for Core-AAM: (#17742) Jul 9, 2019
cors CORS/XHR: mark Client Hints tentative Mar 25, 2019
credential-management `CredentialsContainer::IsSameOriginWithAncestors` should ignore `doma… Dec 5, 2019
css Rename existing -crash tests that may not work as crashtests Dec 12, 2019
custom-elements Adoption and DocumentFragment (#16348) Dec 11, 2019
device-memory Remove inactive reviewers (#14798) Mar 14, 2019
docs Add some docs for crashtests Dec 12, 2019
document-policy Add initial document policy tests Nov 29, 2019
dom Rename existing -crash tests that may not work as crashtests Dec 12, 2019
domparsing Rename many idlharness.js tests to idlharness.* (#18743) Aug 29, 2019
domxpath Test XPath objects in DOM's idlharness.js tests (#18790) Sep 4, 2019
dpub-aam codespell: Fix typos in the doc Dec 9, 2019
dpub-aria codespell: Fix typos in the doc Dec 9, 2019
editing Make `HTMLEditor::DoInsertHTMLWithContext()` compute new insertion po… Oct 17, 2019
element-timing [ElementTiming] Add simple test for multi-redirect Oct 30, 2019
encoding Encoding: TextEncoder/TextDecoder SharedArrayBuffer tests Oct 9, 2019
encrypted-media part 5. Stop incorrectly rejecting promises in EME. Sep 24, 2019
entries-api webkitRelativePath preserves common ancestors (#13988) Nov 9, 2018
event-timing [event-timing] fix typo "procesisng" (#19696) Oct 16, 2019
eventsource Remove unnecessary idlharness.js include (#18893) Sep 6, 2019
feature-policy Fix allow/sandbox attribute timing issue on browser side Dec 6, 2019
fetch Move `Sec-Fetch-User` to SetSecFetchMetadataHeaders. (#20479) Dec 12, 2019
fonts Use locally-installed Ahem if available via ahem.css stylesheet. (#19370 Sep 27, 2019
forced-colors-mode Fix lint errors about Ahem usage Sep 10, 2019
fullscreen Fix web-tests that failed with UAv2 same-origin visibility. Oct 28, 2019
gamepad Update gamepad/ reviewers list (#19178) Oct 7, 2019
generic-sensor [sensors] Round off Ambient Light Sensor readouts to the nearest 50 Lux. Oct 14, 2019
geolocation-API Rename nsGeo* files to match the WebIDL interfaces Nov 14, 2019
geolocation-sensor [sensor] Upstream sensor layout tests to wpt Sep 18, 2019
graphics-aam Add more spec links to META.yml (#12045) Jul 18, 2018
gyroscope [sensor] Upstream sensor layout tests to wpt Sep 18, 2019
hr-time Remove toddreifsteck as reviewer for hr-time (#19420) Oct 9, 2019
html-longdesc Fix most remaining "TRAILING WHITESPACE" lint errors (#19847) Oct 23, 2019
html-media-capture Support "capture" attribute in Gecko and expose in GV. Jul 31, 2019
html Adoption and DocumentFragment (#16348) Dec 11, 2019
idle-detection [mojo] Add testing support to BrowserInterfaceBrokerProxy Aug 20, 2019
imagebitmap-renderingcontext TransferToImageBitmap should reset the bitmap to transparent black Sep 11, 2019
images Add a logo for wpt-pr-bot (#19863) Oct 24, 2019
import-maps [Import Maps] Migrate Jest-based resolution tests into JSON-based tests Dec 4, 2019
inert Add an extra test to check that inert propagates into Shadow DOM as w… Nov 20, 2019
infrastructure Add example test Dec 12, 2019
input-device-capabilities Convert Input Device Capabilities IDL test to use idl_test (#12576) Aug 27, 2018
input-events Convert manual test for input events to use testdriver (#19865) Nov 11, 2019
installedapp [InstalledApp] Move & update some of the web tests to wpt. Nov 13, 2019
interfaces Update interfaces/webrtc.idl (#20750) Dec 12, 2019
intersection-observer [IntersectionObserver] Check containing block chain for stop node Nov 21, 2019
js [js] Remove invalid tests for JavaScript built-ins Mar 27, 2019
keyboard-lock Remove the idl_test test_name argument (always 'idl_test setup') (#12406 Aug 13, 2018
keyboard-map Remove the idl_test test_name argument (always 'idl_test setup') (#12406 Aug 13, 2018
kv-storage Expose kv-storage built-in module only on SecureContexts Aug 29, 2019
largest-contentful-paint Add test for FCP vs LCP Oct 17, 2019
layout-instability Convert LayoutShiftTrackerPointerdownTest to WPT. Nov 27, 2019
lifecycle Remove redundant checks in freezing/pausing context. Sep 17, 2019
loading LazyLoad: move invisible-image.html test to WPT (#20744) Dec 12, 2019
longtask-timing [Longtasks] Ship the buffered flag Dec 11, 2019
magnetometer [sensor] Upstream sensor layout tests to wpt Sep 18, 2019
mathml Remove test for RTL ms and add test for legacy lquote/rquote (#20426) Nov 25, 2019
measure-memory Initial implementation of performance.measureMemory API Oct 7, 2019
media-capabilities Implement MediaCapabilities: spatialRendering decoding query Dec 3, 2019
media-playback-quality Create media-playback-quality/ directory and idlharness.js test (#18168) Jul 30, 2019
media-source Remove totalFrameDelay test for getVideoPlaybackQuality() (#20673) Dec 11, 2019
media Test video resizing during playback (#19030) Nov 28, 2019
mediacapture-depth Convert some tests to use `idl_test` (#18677) Aug 27, 2019
mediacapture-fromelement Remove Chrome-specific dependency and modernize. Dec 18, 2018
mediacapture-image [mediacapture-image] Correct failure reporting (#20234) Nov 14, 2019
mediacapture-record Update tests for new MediaRecorder mimetype-at-start-event behavior. Nov 8, 2019
mediacapture-streams Don't assume media element's canplay task runs immediately. Nov 14, 2019
mediasession P2: Implement MediaMetadata API. Oct 11, 2019
mimesniff Fetch: Content-Type parsing Nov 27, 2018
mixed-content Replace most instances of "Web Platform Tests" (#20160) Nov 8, 2019
mst-content-hint Enable the "Content hint" attribute of MediaStreamTrack Aug 16, 2018
native-file-system [NativeFileSystem] must reject in sandboxed windows Nov 14, 2019
navigation-timing [navigation-timing] Opt-in to single-page test feature (#19914) Oct 26, 2019
netinfo Fix netinfo Web Platform Test Apr 3, 2019
network-error-logging Add signed exchange reporting error test cases Feb 22, 2019
notifications Remove inactive reviewers (#14798) Mar 14, 2019
offscreen-canvas [offscreen-canvas] Correctly report result of asynchronous operations ( Dec 3, 2019
old-tests Try less trailing newlines Aug 6, 2018
orientation-event Update Device Orientation Event spec link (#18946) Sep 10, 2019
orientation-sensor [sensor] Upstream sensor layout tests to wpt Sep 18, 2019
origin-policy [Origin Policy] Implement error reporting via Reporting API Mar 4, 2019
page-visibility Remove toddreifsteck as reviewer for page-visibility (#19422) Oct 9, 2019
paint-timing Add buffered flag tests for ResourceTiming and PaintTiming Jul 18, 2019
payment-handler Reland "[Payments] Enable shipping and contact info delegation [4/5]" Sep 30, 2019
payment-method-basic-card Update payment-method-basic-card/billing-address-is-null-manual.https… Nov 18, 2019
payment-method-id Remove inactive reviewers (#14798) Mar 14, 2019
payment-request Rename existing -crash tests that may not work as crashtests Dec 12, 2019
performance-timeline Remove toddreifsteck as reviewer for perf timeline (#19423) Oct 9, 2019
permissions [Background Sync] Add WPT for periodic-background-sync permission. Dec 5, 2019
picture-in-picture [Picture-in-Picture] Remove shadow DOM support for pseudo class Apr 30, 2019
pointerevents Move the pointerevents extension tests to the main Nov 18, 2019
pointerlock Convert tabs to spaces in directories with few lint errors (#19824) Oct 22, 2019
portals Have portals self-navigate with replacement. Dec 10, 2019
preload [preload] Opt-in to single-page test feature (#20031) Oct 31, 2019
presentation-api [Presentation API] Fix getAvailability tests. May 1, 2019
printing Ignore print calls for a detached document. Jul 3, 2019
priority-hints Add more suggested reviewers for Priority Hints Aug 7, 2018
proximity Modify ProximitySensor tests (#19214) Sep 27, 2019
push-api Rename idlharness tests for [SecureContext] APIs to .https. (#12353) Aug 8, 2018
quirks Don't let the "percentages-can-resolve-against-ancestor" quirk apply … Nov 23, 2019
referrer-policy Replace most instances of "Web Platform Tests" (#20160) Nov 8, 2019
remote-playback Remove the idl_test test_name argument (always 'idl_test setup') (#12406 Aug 13, 2018
reporting Adding toJSON to report and report_body Nov 11, 2019
requestidlecallback Convert some tests to use `idl_test` (#18677) Aug 27, 2019
resize-observer Update ResizeObserver tests on <img>. Jul 3, 2019
resource-timing [resource-timing] Ensure workerStart is protected by TAO (#20333) Dec 9, 2019
resources Clean up testharness.css leftovers. Dec 11, 2019
screen-capture Require user gesture for getDisplayMedia(). Nov 20, 2019
screen-orientation [Screen Orientation] Fix: add requestFullscreen to onchange-event-sub… Nov 15, 2019
screen_enumeration Fugu: Move getScreens() onto the Window interface Dec 9, 2019
scroll-animations Translate the scroll coordinate to ScrollOrigin Oct 10, 2019
scroll-to-text-fragment [scroll-to-text-fragment] Replace BroadcastChannel with WPT Stash Dec 11, 2019
secure-contexts Rewrite secure-contexts/idlharness.any.js to use idl_test (#12386) Aug 9, 2018
selection Don't bail out when serializing a range starting at the end of an ele… Aug 20, 2019
serial [serial] Implement feature policy checks Feb 8, 2019
server-timing [server-timing] Opt-in to single-page test feature (#19912) Oct 26, 2019
service-workers Add a runtime flag to enforce strict MIME type checks for workers. Dec 9, 2019
shadow-dom part 2. Fix the innerHTML setter for shadow DOM cases in XML to suppl… Nov 21, 2019
shape-detection Rename traits and mojo directory in //skia/public Jul 30, 2019
signed-exchange Update SXG version in wpt/signed-exchange/ Sep 25, 2019
sms SMS Receiver: Test for detached iframe Dec 9, 2019
speech-api [speech-api] use `assert_precondition` to avoid spurious failure (#20173 Nov 8, 2019
std-toast Enable persistent toasts by adding functionality for duration Infinity Jul 25, 2019
storage-access-api [storage-access-api] expand on META.yml (#20164) Nov 28, 2019
storage part 3. Stop incorrectly rejecting promises in storage manager. Sep 24, 2019
streams Fix the order of operations in pipeTo Dec 11, 2019
subresource-integrity Test for member name clashes in idlharness (#12231) Sep 26, 2019
svg-aam codespell: Fix typos in the doc Dec 9, 2019
svg Rename existing -crash tests that may not work as crashtests Dec 12, 2019
timing-entrytypes-registry Remove toddreifsteck as reviewer for timing entrytypes (#19417) Oct 9, 2019
tools Schedule crashtests in CI Dec 12, 2019
touch-events Rename "support" files Jul 15, 2019
trusted-types [Trusted Types] Support 'allow-duplicates' in trusted-types directive. Dec 11, 2019
uievents Update mousedown targets when native anonymous content is recreated Nov 11, 2019
upgrade-insecure-requests Replace most instances of "Web Platform Tests" (#20160) Nov 8, 2019
url Support IPv6 literals in KURL::SetHostAndPort Oct 30, 2019
user-timing Remove toddreifsteck as reviewer for user-timing (#19419) Oct 9, 2019
vibration [vibration] use `assert_precondition` to avoid spurious pass Nov 8, 2019
visual-viewport update .ini path and viewport-no-resize-event-on-overflow-recalc.html… Nov 20, 2019
wai-aria codespell: Fix typos in the doc Dec 9, 2019
wake-lock wake lock: Expand IDL harness tests (#19826) Oct 22, 2019
wasm Implement ServiceWorkerContainer.onmessageerror. Nov 25, 2019
web-animations Add tests for setting current time outside of the animation bounds Dec 5, 2019
web-locks [web-locks] Improve test determinism (#20244) Nov 14, 2019
web-nfc [webnfc] Remove NDEFMessage{Init}#url and old impl of the author record. Dec 10, 2019
web-share make share-image-manual tentative, uses files member (#18983) Oct 19, 2019
webaudio use setup() to wrap code that may error before tests are created (#20002 Dec 4, 2019
webauthn Implement WebAuthn basic test using testdriver API (#20162) Dec 4, 2019
webdriver Delete test_valid_but_unmatchable_key webdriver test (#17795) Dec 11, 2019
webgl Test for member name clashes in idlharness (#12231) Sep 26, 2019
webgpu WebGPU: Change .getQueue() to .defaultQueue Nov 18, 2019
webmessaging [webmessaging] Opt-in to single-page test feature (#19910) Oct 26, 2019
webmidi Rename idlharness.window.js to idlharness.https.window.js (#13634) Oct 20, 2018
webrtc-extensions Rename jitterBufferDelayhint to playoutDelayHint in RTCRtpReceiver. Oct 22, 2019
webrtc-identity Add webrtc-identity IDL and test (#19399) Sep 30, 2019
webrtc-quic Reland "Disallows reusing RTCIceTransport." May 3, 2019
webrtc-stats Make webrtc-stats idlharness.js test depend on webrtc (#14983) Jan 24, 2019
webrtc-svc Add API for controlling SVC encoding. Jul 29, 2019
webrtc [Rollback] Fix crash when removing a track being rolled back. Dec 11, 2019
websockets [websockets] Correct references Nov 9, 2019
webstorage Update test for Storage [[Set]]. Apr 15, 2019
webusb [usb] Allow device-scope control transfers when unconfigured Oct 2, 2019
webvr Restructure WebXR & WebVR Feature Policy tests May 13, 2019
webvtt [WebVTT] Improvements for matching inline VTT selectors Nov 15, 2019
webxr Add t.step_func() to oneframeupdate test Dec 12, 2019
workers Add a runtime flag to enforce strict MIME type checks for workers. Dec 9, 2019
worklets Worklet: Reject addModule() with script's error to rethrow if available Oct 8, 2019
x-frame-options Fix a race condition in WPT related to postMessage May 22, 2019
xhr Mark idlharness tests for fetch/xhr as slow Nov 27, 2019
xslt Make XSLT IDL source and idlharness.js test tentative (#17917) Jul 20, 2019
.azure-pipelines.yml Upgrade Safari stable runs to use macOS Mojave (#18927) Dec 12, 2019
.codecov.yml Add codecov configutation. (#5623) Apr 24, 2017
.gitattributes Disable EOL conversion for all of WPT May 22, 2019
.gitignore Add submissions/ to .gitignore Apr 26, 2019
.mailmap Add Tess to .mailmap Feb 12, 2019
.pyup.yml Pin Sphinx to a release that works on Py2; add all requirements.txt t… Oct 26, 2019
.taskcluster.yml Allow triggering CI runs in servo Dec 9, 2019
CODEOWNERS Add /tools/third_party to CODEOWNERS Feb 5, 2019 Name and link to the license from (#20092) Nov 8, 2019 Use the The 3-Clause BSD License from (#11191) Apr 25, 2019 Add taskcluster CI badge (#20586) Dec 3, 2019
lint.whitelist [Import Maps] Migrate Jest-based resolution tests into JSON-based tests Dec 4, 2019
testharness_runner.html Add testharness_runner file here for now. Apr 17, 2015 Correct a path in Oct 25, 2019
wpt Add a wpt command as a frontend to all cli interactions. Jul 26, 2017 Document why the top-level exists (#20117) Nov 6, 2019

The web-platform-tests Project

Taskcluster CI Status

The web-platform-tests Project is a W3C-coordinated attempt to build a cross-browser test suite for the Web-platform stack. Writing tests in a way that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn gives Web authors/developers confidence that they can actually rely on the Web platform to deliver on the promise of working across browsers and devices without needing extra layers of abstraction to paper over the gaps left by specification editors and implementors.

The most important sources of information and activity are:

  • the canonical location of the project's source code revision history and the discussion forum for changes to the code
  • the documentation website; details how to set up the project, how to write tests, how to give and receive peer review, how to serve as an administrator, and more
  • a public deployment of the test suite, allowing anyone to run the tests by visiting from an Internet-enabled browser of their choice
  • an archive of test results collected from an array of web browsers on a regular basis
  • Real-time chat room: the IRC chat room named #testing on; includes participants located around the world, but busiest during the European working day; all discussion is archived here
  • Mailing list: a public and low-traffic discussion list

If you'd like clarification about anything, don't hesitate to ask in the chat room or on the mailing list.

Setting Up the Repo

Clone or otherwise get

Note: because of the frequent creation and deletion of branches in this repo, it is recommended to "prune" stale branches when fetching updates, i.e. use git pull --prune (or git fetch -p && git merge).

Running the Tests

See the documentation website and in particular the system setup for running tests locally.

Command Line Tools

The wpt command provides a frontend to a variety of tools for working with and running web-platform-tests. Some of the most useful commands are:

  • wpt serve - For starting the wpt http server
  • wpt run - For running tests in a browser
  • wpt lint - For running the lint against all tests
  • wpt manifest - For updating or generating a MANIFEST.json test manifest
  • wpt install - For installing the latest release of a browser or webdriver server on the local machine.

Windows Notes

On Windows wpt commands must be prefixed with python or the path to the python binary (if python is not in your %PATH%).

python wpt [command]

Alternatively, you may also use Bash on Ubuntu on Windows in the Windows 10 Anniversary Update build, then access your windows partition from there to launch wpt commands.

Please make sure git and your text editor do not automatically convert line endings, as it will cause lint errors. For git, please set git config core.autocrlf false in your working tree.


The master branch is automatically synced to

Pull requests are automatically mirrored except those that modify sensitive resources (such as .py). The latter require someone with merge access to comment with "LGTM" or "w3c-test:mirror" to indicate the pull request has been checked.


In the vast majority of cases the only upstream branch that you should need to care about is master. If you see other branches in the repository, you can generally safely ignore them.


Save the Web, Write Some Tests!

Absolutely everyone is welcome to contribute to test development. No test is too small or too simple, especially if it corresponds to something for which you've noted an interoperability bug in a browser.

The way to contribute is just as usual:

  • Fork this repository (and make sure you're still relatively in sync with it if you forked a while ago).
  • Create a branch for your changes: git checkout -b topic.
  • Make your changes.
  • Run ./wpt lint as described above.
  • Commit locally and push that to your repo.
  • Create a pull request based on the above.

Issues with web-platform-tests

If you spot an issue with a test and are not comfortable providing a pull request per above to fix it, please file a new issue. Thank you!

You can’t perform that action at this time.