From cf3c932226a6235ecfa93c1d79e41b8ee56d92e4 Mon Sep 17 00:00:00 2001 From: James Scott Date: Thu, 18 Dec 2025 14:09:25 +0000 Subject: [PATCH] feat(ci): Configure Taskcluster to run Test262 tests This commit integrates Test262 test execution into the WPT Taskcluster Continuous Integration system. Key changes and their purpose: - **Task Definition (`tools/ci/tc/tasks/test.yml`):** - A new `wpt-test262` component is defined, specifying the common properties and chunking strategy for Test262 tasks within Taskcluster. - The main Taskcluster task generation matrix is updated to include `test262` as a recognized test suite. This ensures that Taskcluster will automatically create jobs for Test262 across configured browsers and channels (e.g., Firefox Nightly, Chrome Canary). - **CI Validation (`tools/ci/tc/tests/test_valid.py`):** - The integration tests for Taskcluster's decision logic (`test_valid.py`) are updated to expect the new `wpt-*-test262-*` tasks in the generated task graph. This provides automated validation that the CI configuration is correctly interpreted and will schedule the Test262 tasks as intended. With these changes, Taskcluster will automatically detect and execute Test262 tests that are present in the `third_party/test262` directory (as populated by the automated vendoring workflow). This work is a fundamental part of the broader Test262 integration effort, as detailed in the RFC: https://github.com/web-platform-tests/rfcs/pull/229 This commit is the final in a series of smaller PRs split from the larger, original implementation in https://github.com/web-platform-tests/wpt/pull/55997. --- tools/ci/tc/tasks/test.yml | 8 ++ tools/ci/tc/tests/test_valid.py | 160 ++++++++++++++++++++++++++++++++ 2 files changed, 168 insertions(+) diff --git a/tools/ci/tc/tasks/test.yml b/tools/ci/tc/tasks/test.yml index 56349667d9f7e4..57190dc3a59d5d 100644 --- a/tools/ci/tc/tasks/test.yml +++ b/tools/ci/tc/tasks/test.yml @@ -41,6 +41,12 @@ components: vars: test-type: crashtest + wpt-test262: + chunks: 16 + vars: + test-type: test262 + + run-options: options: xvfb: true @@ -157,6 +163,8 @@ tasks: suite: wdspec - vars: suite: crashtest + - vars: + suite: test262 do: $map: for: diff --git a/tools/ci/tc/tests/test_valid.py b/tools/ci/tc/tests/test_valid.py index 4a12ff8927c34d..d54bfcf973601f 100644 --- a/tools/ci/tc/tests/test_valid.py +++ b/tools/ci/tc/tests/test_valid.py @@ -159,6 +159,38 @@ def test_verify_payload(): 'wpt-chrome-canary-wdspec-2', 'wpt-firefox-nightly-crashtest-1', 'wpt-chrome-canary-crashtest-1', + 'wpt-firefox-nightly-test262-1', + 'wpt-firefox-nightly-test262-2', + 'wpt-firefox-nightly-test262-3', + 'wpt-firefox-nightly-test262-4', + 'wpt-firefox-nightly-test262-5', + 'wpt-firefox-nightly-test262-6', + 'wpt-firefox-nightly-test262-7', + 'wpt-firefox-nightly-test262-8', + 'wpt-firefox-nightly-test262-9', + 'wpt-firefox-nightly-test262-10', + 'wpt-firefox-nightly-test262-11', + 'wpt-firefox-nightly-test262-12', + 'wpt-firefox-nightly-test262-13', + 'wpt-firefox-nightly-test262-14', + 'wpt-firefox-nightly-test262-15', + 'wpt-firefox-nightly-test262-16', + 'wpt-chrome-canary-test262-1', + 'wpt-chrome-canary-test262-2', + 'wpt-chrome-canary-test262-3', + 'wpt-chrome-canary-test262-4', + 'wpt-chrome-canary-test262-5', + 'wpt-chrome-canary-test262-6', + 'wpt-chrome-canary-test262-7', + 'wpt-chrome-canary-test262-8', + 'wpt-chrome-canary-test262-9', + 'wpt-chrome-canary-test262-10', + 'wpt-chrome-canary-test262-11', + 'wpt-chrome-canary-test262-12', + 'wpt-chrome-canary-test262-13', + 'wpt-chrome-canary-test262-14', + 'wpt-chrome-canary-test262-15', + 'wpt-chrome-canary-test262-16', 'wpt-firefox-nightly-reftest-1', 'wpt-firefox-nightly-reftest-2', 'wpt-firefox-nightly-reftest-3', @@ -389,6 +421,134 @@ def test_verify_payload(): 'wpt-servo-nightly-crashtest-1', 'wpt-firefox_android-nightly-crashtest-1', 'wpt-firefox_android-stable-crashtest-1', + 'wpt-firefox-stable-test262-1', + 'wpt-firefox-stable-test262-2', + 'wpt-firefox-stable-test262-3', + 'wpt-firefox-stable-test262-4', + 'wpt-firefox-stable-test262-5', + 'wpt-firefox-stable-test262-6', + 'wpt-firefox-stable-test262-7', + 'wpt-firefox-stable-test262-8', + 'wpt-firefox-stable-test262-9', + 'wpt-firefox-stable-test262-10', + 'wpt-firefox-stable-test262-11', + 'wpt-firefox-stable-test262-12', + 'wpt-firefox-stable-test262-13', + 'wpt-firefox-stable-test262-14', + 'wpt-firefox-stable-test262-15', + 'wpt-firefox-stable-test262-16', + 'wpt-chromium-nightly-test262-1', + 'wpt-chromium-nightly-test262-2', + 'wpt-chromium-nightly-test262-3', + 'wpt-chromium-nightly-test262-4', + 'wpt-chromium-nightly-test262-5', + 'wpt-chromium-nightly-test262-6', + 'wpt-chromium-nightly-test262-7', + 'wpt-chromium-nightly-test262-8', + 'wpt-chromium-nightly-test262-9', + 'wpt-chromium-nightly-test262-10', + 'wpt-chromium-nightly-test262-11', + 'wpt-chromium-nightly-test262-12', + 'wpt-chromium-nightly-test262-13', + 'wpt-chromium-nightly-test262-14', + 'wpt-chromium-nightly-test262-15', + 'wpt-chromium-nightly-test262-16', + 'wpt-chrome-stable-test262-1', + 'wpt-chrome-stable-test262-2', + 'wpt-chrome-stable-test262-3', + 'wpt-chrome-stable-test262-4', + 'wpt-chrome-stable-test262-5', + 'wpt-chrome-stable-test262-6', + 'wpt-chrome-stable-test262-7', + 'wpt-chrome-stable-test262-8', + 'wpt-chrome-stable-test262-9', + 'wpt-chrome-stable-test262-10', + 'wpt-chrome-stable-test262-11', + 'wpt-chrome-stable-test262-12', + 'wpt-chrome-stable-test262-13', + 'wpt-chrome-stable-test262-14', + 'wpt-chrome-stable-test262-15', + 'wpt-chrome-stable-test262-16', + 'wpt-webkitgtk_minibrowser-nightly-test262-1', + 'wpt-webkitgtk_minibrowser-nightly-test262-2', + 'wpt-webkitgtk_minibrowser-nightly-test262-3', + 'wpt-webkitgtk_minibrowser-nightly-test262-4', + 'wpt-webkitgtk_minibrowser-nightly-test262-5', + 'wpt-webkitgtk_minibrowser-nightly-test262-6', + 'wpt-webkitgtk_minibrowser-nightly-test262-7', + 'wpt-webkitgtk_minibrowser-nightly-test262-8', + 'wpt-webkitgtk_minibrowser-nightly-test262-9', + 'wpt-webkitgtk_minibrowser-nightly-test262-10', + 'wpt-webkitgtk_minibrowser-nightly-test262-11', + 'wpt-webkitgtk_minibrowser-nightly-test262-12', + 'wpt-webkitgtk_minibrowser-nightly-test262-13', + 'wpt-webkitgtk_minibrowser-nightly-test262-14', + 'wpt-webkitgtk_minibrowser-nightly-test262-15', + 'wpt-webkitgtk_minibrowser-nightly-test262-16', + 'wpt-wpewebkit_minibrowser-nightly-test262-1', + 'wpt-wpewebkit_minibrowser-nightly-test262-2', + 'wpt-wpewebkit_minibrowser-nightly-test262-3', + 'wpt-wpewebkit_minibrowser-nightly-test262-4', + 'wpt-wpewebkit_minibrowser-nightly-test262-5', + 'wpt-wpewebkit_minibrowser-nightly-test262-6', + 'wpt-wpewebkit_minibrowser-nightly-test262-7', + 'wpt-wpewebkit_minibrowser-nightly-test262-8', + 'wpt-wpewebkit_minibrowser-nightly-test262-9', + 'wpt-wpewebkit_minibrowser-nightly-test262-10', + 'wpt-wpewebkit_minibrowser-nightly-test262-11', + 'wpt-wpewebkit_minibrowser-nightly-test262-12', + 'wpt-wpewebkit_minibrowser-nightly-test262-13', + 'wpt-wpewebkit_minibrowser-nightly-test262-14', + 'wpt-wpewebkit_minibrowser-nightly-test262-15', + 'wpt-wpewebkit_minibrowser-nightly-test262-16', + 'wpt-servo-nightly-test262-1', + 'wpt-servo-nightly-test262-2', + 'wpt-servo-nightly-test262-3', + 'wpt-servo-nightly-test262-4', + 'wpt-servo-nightly-test262-5', + 'wpt-servo-nightly-test262-6', + 'wpt-servo-nightly-test262-7', + 'wpt-servo-nightly-test262-8', + 'wpt-servo-nightly-test262-9', + 'wpt-servo-nightly-test262-10', + 'wpt-servo-nightly-test262-11', + 'wpt-servo-nightly-test262-12', + 'wpt-servo-nightly-test262-13', + 'wpt-servo-nightly-test262-14', + 'wpt-servo-nightly-test262-15', + 'wpt-servo-nightly-test262-16', + 'wpt-firefox_android-nightly-test262-1', + 'wpt-firefox_android-nightly-test262-2', + 'wpt-firefox_android-nightly-test262-3', + 'wpt-firefox_android-nightly-test262-4', + 'wpt-firefox_android-nightly-test262-5', + 'wpt-firefox_android-nightly-test262-6', + 'wpt-firefox_android-nightly-test262-7', + 'wpt-firefox_android-nightly-test262-8', + 'wpt-firefox_android-nightly-test262-9', + 'wpt-firefox_android-nightly-test262-10', + 'wpt-firefox_android-nightly-test262-11', + 'wpt-firefox_android-nightly-test262-12', + 'wpt-firefox_android-nightly-test262-13', + 'wpt-firefox_android-nightly-test262-14', + 'wpt-firefox_android-nightly-test262-15', + 'wpt-firefox_android-nightly-test262-16', + 'wpt-firefox_android-stable-test262-1', + 'wpt-firefox_android-stable-test262-2', + 'wpt-firefox_android-stable-test262-3', + 'wpt-firefox_android-stable-test262-4', + 'wpt-firefox_android-stable-test262-5', + 'wpt-firefox_android-stable-test262-6', + 'wpt-firefox_android-stable-test262-7', + 'wpt-firefox_android-stable-test262-8', + 'wpt-firefox_android-stable-test262-9', + 'wpt-firefox_android-stable-test262-10', + 'wpt-firefox_android-stable-test262-11', + 'wpt-firefox_android-stable-test262-12', + 'wpt-firefox_android-stable-test262-13', + 'wpt-firefox_android-stable-test262-14', + 'wpt-firefox_android-stable-test262-15', + 'wpt-firefox_android-stable-test262-16', 'wpt-firefox-stable-reftest-1', 'wpt-firefox-stable-reftest-2', 'wpt-firefox-stable-reftest-3',