/cts

WebGPU Conformance Test Suite

Primary LanguageTypeScriptBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

WebGPU Conformance Test Suite

Run these tests live: gpuweb.github.io/cts/standalone/

NOTE: If you are contributing tests that tentatively use GLSL instead of WGSL, develop on the glsl-dependent branch (run live at gpuweb-cts-glsl.github.io/standalone/)

Docs

Developing

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/.

Setup

After checking out the repository and installing node/npm, run these commands in the checkout:

npm install

npx grunt  # show available grunt commands

Build

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

Run

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

To test a native WebGPU NAPI addon, build the WebGPU N-API add-on by running the build script in webgpu-build and copying the add-on to third_party/dawn/index.node.

Debug

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 test file, see src/webgpu/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 CONTRIBUTING.md.

Export to WPT

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