The WebGPU conformance test suite (CTS) is developed at https://github.com/gpuweb/cts. It is written in TypeScript and compiled to JavaScript to run as part of WPT.
The roll_webgpu_cts.sh
script in this directory rolls Chromium's third_party/webgpu-cts/src/
to the latest revision, builds it, and saves the built files into .../wpt_internal/webgpu/
. Once this is done, .../wpt_internal/webgpu/cts.html
must also be regenerated. This is done with the regenerate_internal_cts_html.sh
script. This must be done after a roll and after changes to WebGPUExpectations
.
(Note: there is no copy of the WebGPU CTS in WPT. This is because browsers are at different stages of implementation, and it is more useful to pin a particular revision of the CTS rather than use the latest version.)
These scripts should work on Linux and macOS. See the comments in those scripts for more details, and below for step-by-step instructions on performing a roll.
third_party/blink/web_tests/webgpu/roll_webgpu_cts.sh
.third_party/blink/web_tests/webgpu/regenerate_internal_cts_html.sh
.third_party/blink/web_tests/WebGPUExpectations
, delete any expectations that caused regeneration errors (or try to update them if there was a rename).dawn-.*-deps-rel
.webgpu_blink_web_tests
(and related) on those tryjobs.WebGPUExpectations
.webgpu_blink_web_tests
on all bots.webgpu_blink_web_tests
(and related) on any failing bots.WebGPUExpectations
lines for any test variants that “failed unexpectedly” on any tryjob. If they failed on all tryjobs, add them to the “Untriaged” section. If they failed on a specific tryjob, add them to a platform-specific section.regenerate_internal_cts_html.sh
to automatically subdivide tests to fulfill the expectations.dawn-.*-deps-rel
.This is not necessary for the roll process, but if you want to run a test locally with --enable-unsafe-webgpu
, you can easily do so here: