Clone this repo:
  1. 77af9a7 Remove document usage in copyImageBitmapToTexture tests by Yan, Shaobo · 24 hours ago master
  2. 5d1b8c7 Add prototype tests for minimum resource limits (#93) by Justin Fan · 7 days ago
  3. ec18cc3 copy constants.js into out-wpt/ by Kai Ninomiya · 12 days ago
  4. 57e8bfa rename .worker.js to -worker.js so WPT won't try to run it as a standalone test by Kai Ninomiya · 12 days ago
  5. f73aade Fix incorrect type assertion of transferred object, manually fix prototype chain by Kai Ninomiya · 12 days ago


The WebGPU CTS is written in TypeScript, and builds into two directories:

  • out/: Built framework and test files, needed to run standalone or command line.
  • out-wpt/: Build directory for export into WPT. Contains WPT runner and a copy of just the needed files from out/.




After checking out the repository and installing Yarn, run these commands to set up dependencies:

cd cts/
yarn install

npx grunt  # show available grunt commands


To build and run all pre-submit checks (including type and lint checks and unittests), use:

npx grunt pre

For a quicker iterative build:

npx grunt test


To test in a browser under the standalone harness, run grunt serve, then open:


To see debug logs in a browser, use the debug=1 query string:

Making Changes

To add new tests, simply imitate the pattern in neigboring tests or neighboring files. New test files must be named ending in .spec.ts.

For an example, see src/suites/cts/examples.spec.ts.

Since this project is written in TypeScript, it integrates best with Visual Studio Code. There are also some default settings (in .vscode/settings.json) which will be applied automatically.

Before uploading, you should run pre-submit checks (grunt pre).

Be sure to read

Export to WPT

Copy (or symlink) the out-wpt/ directory as the webgpu/ directory in your WPT checkout.