Commit 782a3ac8aee for nodejs
commit 782a3ac8aee4a7133a990bd20e9d00bbd0153ab8
Author: Node.js GitHub Bot <github-bot@iojs.org>
Date: Wed Oct 14 17:09:57 2026 -0400
test: update WPT for WebCryptoAPI to b638c093cd
PR-URL: https://github.com/nodejs/node/pull/66689
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Daeyeon Jeong <daeyeon.dev@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
diff --git a/test/fixtures/wpt/WebCryptoAPI/README.md b/test/fixtures/wpt/WebCryptoAPI/README.md
index 5546cf2b6f2..51fcb4da2ea 100644
--- a/test/fixtures/wpt/WebCryptoAPI/README.md
+++ b/test/fixtures/wpt/WebCryptoAPI/README.md
@@ -1 +1,18 @@
-Directory for Crypto API tests
+Tests for the Web Cryptography API are grouped by specification:
+
+- Tests for [Web Cryptography API Level 2](https://w3c.github.io/webcrypto/)
+ are in this directory's existing operation subdirectories and root files.
+- Tests for [Modern Algorithms in the Web Cryptography API](https://wicg.github.io/webcrypto-modern-algos/)
+ are in `modern-algos/`, including `supports()`, `getPublicKey()`, and key format extensions.
+- Tests for [Secure Curves in the Web Cryptography API](https://wicg.github.io/webcrypto-secure-curves/)
+ are in `secure-curves/`. Ed25519 and X25519 are part of the core specification;
+ Ed448 and X448 are covered by the secure curves specification.
+
+Each specification directory has a `META.yml` linking to its specification.
+Helpers used across specifications remain in the shared operation directories
+or `util/`; helpers specific to an extension are alongside that extension's tests.
+
+Use `.tentative` only for assertions not yet required by a specification or that
+contradict a specification, as described in the [file naming guidelines](../docs/writing-tests/file-names.md).
+An algorithm being defined in an extension specification does not by itself make
+its tests tentative.
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_AES-OCB.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_AES-OCB.tentative.https.any.js
deleted file mode 100644
index ef7c8c38e53..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_AES-OCB.tentative.https.any.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// META: title=WebCryptoAPI: generateKey() for Failures
-// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=algorithm_registry.js
-// META: script=failures.js
-run_test(["AES-OCB"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_Ed448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_Ed448.tentative.https.any.js
deleted file mode 100644
index 6ee388e40f7..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_Ed448.tentative.https.any.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// META: title=WebCryptoAPI: generateKey() for Failures
-// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=algorithm_registry.js
-// META: script=failures.js
-run_test(["Ed448"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_ML-DSA.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_ML-DSA.tentative.https.any.js
deleted file mode 100644
index d41636dea79..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_ML-DSA.tentative.https.any.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// META: title=WebCryptoAPI: generateKey() for Failures
-// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=algorithm_registry.js
-// META: script=failures.js
-run_test(["ML-DSA-44", "ML-DSA-65", "ML-DSA-87"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_ML-KEM.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_ML-KEM.tentative.https.any.js
deleted file mode 100644
index 0ece96944e7..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_ML-KEM.tentative.https.any.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// META: title=WebCryptoAPI: generateKey() for Failures
-// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=algorithm_registry.js
-// META: script=failures.js
-run_test(["ML-KEM-512", "ML-KEM-768", "ML-KEM-1024"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_X448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_X448.tentative.https.any.js
deleted file mode 100644
index 26e12b97259..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_X448.tentative.https.any.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// META: title=WebCryptoAPI: generateKey() for Failures
-// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=algorithm_registry.js
-// META: script=failures.js
-run_test(["X448"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_chacha20_poly1305.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_chacha20_poly1305.tentative.https.any.js
deleted file mode 100644
index 6ec0593a14b..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_chacha20_poly1305.tentative.https.any.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// META: title=WebCryptoAPI: generateKey() for Failures
-// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=algorithm_registry.js
-// META: script=failures.js
-run_test(["ChaCha20-Poly1305"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_kmac.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_kmac.tentative.https.any.js
deleted file mode 100644
index 889c17e9c23..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_kmac.tentative.https.any.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// META: title=WebCryptoAPI: generateKey() for Failures
-// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=algorithm_registry.js
-// META: script=failures.js
-run_test(["KMAC128", "KMAC256"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_Ed448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_Ed448.tentative.https.any.js
deleted file mode 100644
index 8498ce4ef8f..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_Ed448.tentative.https.any.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// META: title=WebCryptoAPI: importKey() for OKP keys
-// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=../util/okp_key_fixtures.js
-// META: script=okp_importKey_fixtures.js
-// META: script=okp_importKey.js
-
-
-// Test importKey and exportKey for OKP algorithms.
-runTests("Ed448");
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_X448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_X448.tentative.https.any.js
deleted file mode 100644
index 09361ed9b8d..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_X448.tentative.https.any.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// META: title=WebCryptoAPI: importKey() for OKP keys
-// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=../util/okp_key_fixtures.js
-// META: script=okp_importKey_fixtures.js
-// META: script=okp_importKey.js
-
-
-// Test importKey and exportKey for OKP algorithms.
-runTests("X448");
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.tentative.https.any.js
deleted file mode 100644
index 726d5c1e377..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.tentative.https.any.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// META: title=WebCryptoAPI: importKey() for Failures
-// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=../util/okp_key_fixtures.js
-// META: script=okp_importKey_failures_fixtures.js
-// META: script=importKey_failures.js
-
-
-run_test(["Ed448"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X448.tentative.https.any.js
deleted file mode 100644
index 2b575d7ab4d..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X448.tentative.https.any.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// META: title=WebCryptoAPI: importKey() for Failures
-// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=../util/okp_key_fixtures.js
-// META: script=okp_importKey_failures_fixtures.js
-// META: script=importKey_failures.js
-
-
-run_test(["X448"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/modern-algos/META.yml b/test/fixtures/wpt/WebCryptoAPI/modern-algos/META.yml
new file mode 100644
index 00000000000..78c9d066de3
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/META.yml
@@ -0,0 +1 @@
+spec: https://wicg.github.io/webcrypto-modern-algos/
diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/argon2.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/derive_bits_keys/argon2.https.any.js
similarity index 85%
rename from test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/argon2.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/derive_bits_keys/argon2.https.any.js
index 9422c39c958..8ddbac5960e 100644
--- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/argon2.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/derive_bits_keys/argon2.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: deriveBits() Using Argon2
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
// META: script=argon2_vectors.js
// META: script=argon2.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/argon2.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/derive_bits_keys/argon2.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/argon2.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/derive_bits_keys/argon2.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/argon2_vectors.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/derive_bits_keys/argon2_vectors.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/argon2_vectors.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/derive_bits_keys/argon2_vectors.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/digest/cshake.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/cshake.https.any.js
similarity index 98%
rename from test/fixtures/wpt/WebCryptoAPI/digest/cshake.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/cshake.https.any.js
index 1bf78f58115..58b5378a852 100644
--- a/test/fixtures/wpt/WebCryptoAPI/digest/cshake.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/cshake.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: digest() cSHAKE algorithms
-// META: script=../util/helpers.js
-// META: script=digest_test_data.js
-// META: script=digest.js
+// META: script=../../util/helpers.js
+// META: script=../../digest/digest_test_data.js
+// META: script=../../digest/digest.js
// META: timeout=long
var subtle = crypto.subtle; // Change to test prefixed implementations
diff --git a/test/fixtures/wpt/WebCryptoAPI/digest/kangarootwelve.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/kangarootwelve.https.any.js
similarity index 99%
rename from test/fixtures/wpt/WebCryptoAPI/digest/kangarootwelve.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/kangarootwelve.https.any.js
index 0e38eb0542a..a3d79a1d9c4 100644
--- a/test/fixtures/wpt/WebCryptoAPI/digest/kangarootwelve.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/kangarootwelve.https.any.js
@@ -1,5 +1,5 @@
// META: title=WebCryptoAPI: digest() KangarooTwelve algorithms
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=xof_digest.js
// META: timeout=long
diff --git a/test/fixtures/wpt/WebCryptoAPI/digest/sha3.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/sha3.https.any.js
similarity index 96%
rename from test/fixtures/wpt/WebCryptoAPI/digest/sha3.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/sha3.https.any.js
index a6cafbb639f..ea44080aac5 100644
--- a/test/fixtures/wpt/WebCryptoAPI/digest/sha3.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/sha3.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: digest() SHA-3 algorithms
-// META: script=../util/helpers.js
-// META: script=digest_test_data.js
-// META: script=digest.js
+// META: script=../../util/helpers.js
+// META: script=../../digest/digest_test_data.js
+// META: script=../../digest/digest.js
// META: timeout=long
var subtle = crypto.subtle; // Change to test prefixed implementations
diff --git a/test/fixtures/wpt/WebCryptoAPI/digest/turboshake.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/turboshake.https.any.js
similarity index 99%
rename from test/fixtures/wpt/WebCryptoAPI/digest/turboshake.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/turboshake.https.any.js
index 356e6987956..9886506d986 100644
--- a/test/fixtures/wpt/WebCryptoAPI/digest/turboshake.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/turboshake.https.any.js
@@ -1,5 +1,5 @@
// META: title=WebCryptoAPI: digest() TurboSHAKE algorithms
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=xof_digest.js
// META: timeout=long
diff --git a/test/fixtures/wpt/WebCryptoAPI/digest/xof_digest.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/xof_digest.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/digest/xof_digest.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/digest/xof_digest.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/encap_decap/encap_decap_bits.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encap_decap/encap_decap_bits.https.any.js
similarity index 99%
rename from test/fixtures/wpt/WebCryptoAPI/encap_decap/encap_decap_bits.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/encap_decap/encap_decap_bits.https.any.js
index c0afb698e0a..df6626aeb7b 100644
--- a/test/fixtures/wpt/WebCryptoAPI/encap_decap/encap_decap_bits.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encap_decap/encap_decap_bits.https.any.js
@@ -1,5 +1,5 @@
// META: title=WebCryptoAPI: KEM encapsulateBits() and decapsulateBits() tests
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=ml_kem_vectors.js
// META: script=hybrid_kem_vectors.js
// META: timeout=long
diff --git a/test/fixtures/wpt/WebCryptoAPI/encap_decap/encap_decap_keys.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encap_decap/encap_decap_keys.https.any.js
similarity index 99%
rename from test/fixtures/wpt/WebCryptoAPI/encap_decap/encap_decap_keys.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/encap_decap/encap_decap_keys.https.any.js
index e978fe497e6..364183bc2eb 100644
--- a/test/fixtures/wpt/WebCryptoAPI/encap_decap/encap_decap_keys.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encap_decap/encap_decap_keys.https.any.js
@@ -1,5 +1,5 @@
// META: title=WebCryptoAPI: KEM encapsulateKey() and decapsulateKey() tests
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=ml_kem_vectors.js
// META: script=hybrid_kem_vectors.js
// META: timeout=long
diff --git a/test/fixtures/wpt/WebCryptoAPI/encap_decap/hybrid_kem_vectors.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encap_decap/hybrid_kem_vectors.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/encap_decap/hybrid_kem_vectors.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/encap_decap/hybrid_kem_vectors.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/encap_decap/ml_kem_vectors.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encap_decap/ml_kem_vectors.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/encap_decap/ml_kem_vectors.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/encap_decap/ml_kem_vectors.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_ocb.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encrypt_decrypt/aes_ocb.https.any.js
similarity index 54%
rename from test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_ocb.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/encrypt_decrypt/aes_ocb.https.any.js
index e6a6246074c..bc0085719ab 100644
--- a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_ocb.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encrypt_decrypt/aes_ocb.https.any.js
@@ -1,9 +1,9 @@
// META: title=WebCryptoAPI: encrypt() Using AES-OCB w/ 120-bit iv
-// META: script=../util/helpers.js
-// META: script=aes_common_fixtures.js
+// META: script=../../util/helpers.js
+// META: script=../../encrypt_decrypt/aes_common_fixtures.js
// META: script=aes_ocb_fixtures.js
// META: script=aes_ocb_vectors.js
-// META: script=aes.js
+// META: script=../../encrypt_decrypt/aes.js
// META: timeout=long
run_test();
diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_ocb_fixtures.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encrypt_decrypt/aes_ocb_fixtures.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_ocb_fixtures.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/encrypt_decrypt/aes_ocb_fixtures.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_ocb_vectors.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encrypt_decrypt/aes_ocb_vectors.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/aes_ocb_vectors.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/encrypt_decrypt/aes_ocb_vectors.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/chacha20_poly1305.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encrypt_decrypt/chacha20_poly1305.https.any.js
similarity index 99%
rename from test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/chacha20_poly1305.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/encrypt_decrypt/chacha20_poly1305.https.any.js
index d03f7c03099..85bac420415 100644
--- a/test/fixtures/wpt/WebCryptoAPI/encrypt_decrypt/chacha20_poly1305.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/encrypt_decrypt/chacha20_poly1305.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: encrypt()/decrypt() ChaCha20-Poly1305
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
var subtle = crypto.subtle; // Change to test prefixed implementations
diff --git a/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_AES-OCB.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_AES-OCB.https.any.js
new file mode 100644
index 00000000000..faf99c3b526
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_AES-OCB.https.any.js
@@ -0,0 +1,6 @@
+// META: title=WebCryptoAPI: generateKey() for Failures
+// META: timeout=long
+// META: script=../../util/helpers.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/failures.js
+run_test(["AES-OCB"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_Hybrid-KEM.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_Hybrid-KEM.https.any.js
similarity index 50%
rename from test/fixtures/wpt/WebCryptoAPI/generateKey/failures_Hybrid-KEM.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_Hybrid-KEM.https.any.js
index 40c69270c9a..2032ced4876 100644
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/failures_Hybrid-KEM.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_Hybrid-KEM.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: generateKey() for Failures
// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=algorithm_registry.js
-// META: script=failures.js
+// META: script=../../util/helpers.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/failures.js
run_test(["MLKEM768-P256", "MLKEM768-X25519", "MLKEM1024-P384"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_ML-DSA.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_ML-DSA.https.any.js
new file mode 100644
index 00000000000..474a2cf8c8b
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_ML-DSA.https.any.js
@@ -0,0 +1,6 @@
+// META: title=WebCryptoAPI: generateKey() for Failures
+// META: timeout=long
+// META: script=../../util/helpers.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/failures.js
+run_test(["ML-DSA-44", "ML-DSA-65", "ML-DSA-87"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_ML-KEM.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_ML-KEM.https.any.js
new file mode 100644
index 00000000000..d7f62ef19b9
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_ML-KEM.https.any.js
@@ -0,0 +1,6 @@
+// META: title=WebCryptoAPI: generateKey() for Failures
+// META: timeout=long
+// META: script=../../util/helpers.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/failures.js
+run_test(["ML-KEM-512", "ML-KEM-768", "ML-KEM-1024"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_chacha20_poly1305.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_chacha20_poly1305.https.any.js
new file mode 100644
index 00000000000..8026065f8d7
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_chacha20_poly1305.https.any.js
@@ -0,0 +1,6 @@
+// META: title=WebCryptoAPI: generateKey() for Failures
+// META: timeout=long
+// META: script=../../util/helpers.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/failures.js
+run_test(["ChaCha20-Poly1305"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_kmac.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_kmac.https.any.js
new file mode 100644
index 00000000000..0ba07082948
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/failures_kmac.https.any.js
@@ -0,0 +1,6 @@
+// META: title=WebCryptoAPI: generateKey() for Failures
+// META: timeout=long
+// META: script=../../util/helpers.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/failures.js
+run_test(["KMAC128", "KMAC256"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_AES-OCB.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_AES-OCB.https.any.js
similarity index 50%
rename from test/fixtures/wpt/WebCryptoAPI/generateKey/successes_AES-OCB.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_AES-OCB.https.any.js
index c87f875f4b1..46ebf52bef9 100644
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_AES-OCB.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_AES-OCB.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
-// META: script=algorithm_registry.js
-// META: script=successes.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/successes.js
run_test(["AES-OCB"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_Hybrid-KEM.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_Hybrid-KEM.https.any.js
similarity index 57%
rename from test/fixtures/wpt/WebCryptoAPI/generateKey/successes_Hybrid-KEM.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_Hybrid-KEM.https.any.js
index bca75d4b6d7..39919c174e6 100644
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_Hybrid-KEM.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_Hybrid-KEM.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
-// META: script=algorithm_registry.js
-// META: script=successes.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/successes.js
run_test(["MLKEM768-P256", "MLKEM768-X25519", "MLKEM1024-P384"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_ML-DSA.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_ML-DSA.https.any.js
similarity index 55%
rename from test/fixtures/wpt/WebCryptoAPI/generateKey/successes_ML-DSA.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_ML-DSA.https.any.js
index 6c81b193167..c33f9f38b24 100644
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_ML-DSA.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_ML-DSA.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
-// META: script=algorithm_registry.js
-// META: script=successes.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/successes.js
run_test(["ML-DSA-44", "ML-DSA-65", "ML-DSA-87"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_ML-KEM.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_ML-KEM.https.any.js
similarity index 55%
rename from test/fixtures/wpt/WebCryptoAPI/generateKey/successes_ML-KEM.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_ML-KEM.https.any.js
index f41b5c34cdb..1353d25cb13 100644
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_ML-KEM.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_ML-KEM.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
-// META: script=algorithm_registry.js
-// META: script=successes.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/successes.js
run_test(["ML-KEM-512", "ML-KEM-768", "ML-KEM-1024"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_chacha20_poly1305.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_chacha20_poly1305.https.any.js
similarity index 52%
rename from test/fixtures/wpt/WebCryptoAPI/generateKey/successes_chacha20_poly1305.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_chacha20_poly1305.https.any.js
index 2f3efebb6bc..c79dddb8d04 100644
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_chacha20_poly1305.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_chacha20_poly1305.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
-// META: script=algorithm_registry.js
-// META: script=successes.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/successes.js
run_test(["ChaCha20-Poly1305"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_kmac.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_kmac.https.any.js
similarity index 52%
rename from test/fixtures/wpt/WebCryptoAPI/generateKey/successes_kmac.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_kmac.https.any.js
index 8276fa9058c..7f6120b4f89 100644
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_kmac.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/generateKey/successes_kmac.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
-// META: script=algorithm_registry.js
-// META: script=successes.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/successes.js
run_test(["KMAC128", "KMAC256"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/getPublicKey.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/getPublicKey.https.any.js
similarity index 99%
rename from test/fixtures/wpt/WebCryptoAPI/getPublicKey.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/getPublicKey.https.any.js
index c85d2a9e02b..e5537c900dd 100644
--- a/test/fixtures/wpt/WebCryptoAPI/getPublicKey.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/getPublicKey.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: getPublicKey() method
// META: timeout=long
-// META: script=util/helpers.js
+// META: script=../util/helpers.js
"use strict";
diff --git a/test/fixtures/wpt/WebCryptoAPI/idlharness.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/idlharness.https.any.js
similarity index 67%
rename from test/fixtures/wpt/WebCryptoAPI/idlharness.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/idlharness.https.any.js
index 150228aef03..5da45f3d576 100644
--- a/test/fixtures/wpt/WebCryptoAPI/idlharness.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/idlharness.https.any.js
@@ -2,12 +2,11 @@
// META: script=/resources/idlharness.js
// META: timeout=long
-// https://wicg.github.io/webcrypto-secure-curves/
// https://wicg.github.io/webcrypto-modern-algos/
idl_test(
- ['webcrypto', 'webcrypto-secure-curves', 'webcrypto-modern-algos'],
- ['html', 'dom'],
+ ['webcrypto-modern-algos'],
+ ['webcrypto', 'html', 'dom'],
idl_array => {
idl_array.add_objects({
Crypto: ['crypto'],
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/AES-OCB_importKey.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/AES-OCB_importKey.https.any.js
similarity index 51%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/AES-OCB_importKey.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/AES-OCB_importKey.https.any.js
index 7fa028aa5a0..43ad1d5a530 100644
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/AES-OCB_importKey.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/AES-OCB_importKey.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: importKey() for symmetric keys
// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=symmetric_importKey.js
+// META: script=../../util/helpers.js
+// META: script=../../import_export/symmetric_importKey.js
runTests("AES-OCB");
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/Argon2_importKey.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/Argon2_importKey.https.any.js
similarity index 60%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/Argon2_importKey.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/Argon2_importKey.https.any.js
index a3edc389630..aad42a55adb 100644
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/Argon2_importKey.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/Argon2_importKey.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: importKey() for symmetric keys
// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=symmetric_importKey.js
+// META: script=../../util/helpers.js
+// META: script=../../import_export/symmetric_importKey.js
runTests("Argon2i");
runTests("Argon2d");
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/ChaCha20-Poly1305_importKey.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ChaCha20-Poly1305_importKey.https.any.js
similarity index 54%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/ChaCha20-Poly1305_importKey.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ChaCha20-Poly1305_importKey.https.any.js
index 620f22d4aec..d478af3e51d 100644
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/ChaCha20-Poly1305_importKey.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ChaCha20-Poly1305_importKey.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: importKey() for symmetric keys
// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=symmetric_importKey.js
+// META: script=../../util/helpers.js
+// META: script=../../import_export/symmetric_importKey.js
runTests("ChaCha20-Poly1305");
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/Hybrid-KEM_importKey.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/Hybrid-KEM_importKey.https.any.js
similarity index 88%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/Hybrid-KEM_importKey.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/Hybrid-KEM_importKey.https.any.js
index 3227434ed44..a709f5e7fa6 100644
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/Hybrid-KEM_importKey.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/Hybrid-KEM_importKey.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: importKey() for Hybrid KEM keys
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=Hybrid-KEM_importKey_fixtures.js
// META: script=ml_importKey.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/Hybrid-KEM_importKey_fixtures.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/Hybrid-KEM_importKey_fixtures.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/Hybrid-KEM_importKey_fixtures.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/Hybrid-KEM_importKey_fixtures.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/KMAC_importKey.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/KMAC_importKey.https.any.js
similarity index 56%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/KMAC_importKey.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/KMAC_importKey.https.any.js
index 83995bca37a..c3aacbeed6e 100644
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/KMAC_importKey.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/KMAC_importKey.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: importKey() for symmetric keys
// META: timeout=long
-// META: script=../util/helpers.js
-// META: script=symmetric_importKey.js
+// META: script=../../util/helpers.js
+// META: script=../../import_export/symmetric_importKey.js
runTests("KMAC128");
runTests("KMAC256");
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/ML-DSA_importKey.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ML-DSA_importKey.https.any.js
similarity index 87%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/ML-DSA_importKey.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ML-DSA_importKey.https.any.js
index 02f745d71c2..96d17f641b1 100644
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/ML-DSA_importKey.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ML-DSA_importKey.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: importKey() for ML-DSA keys
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=../util/mldsa_key_fixtures.js
// META: script=ML-DSA_importKey_fixtures.js
// META: script=ml_importKey.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/ML-DSA_importKey_fixtures.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ML-DSA_importKey_fixtures.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/ML-DSA_importKey_fixtures.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ML-DSA_importKey_fixtures.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/ML-KEM_importKey.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ML-KEM_importKey.https.any.js
similarity index 85%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/ML-KEM_importKey.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ML-KEM_importKey.https.any.js
index 11d80c76bc5..7766a2badb3 100644
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/ML-KEM_importKey.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ML-KEM_importKey.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: importKey() for ML-KEM keys
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=ML-KEM_importKey_fixtures.js
// META: script=ml_importKey.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/ML-KEM_importKey_fixtures.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ML-KEM_importKey_fixtures.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/ML-KEM_importKey_fixtures.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ML-KEM_importKey_fixtures.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/ml_importKey.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ml_importKey.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/ml_importKey.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/ml_importKey.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/raw_format_aliases.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/raw_format_aliases.https.any.js
similarity index 99%
rename from test/fixtures/wpt/WebCryptoAPI/import_export/raw_format_aliases.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/raw_format_aliases.https.any.js
index 646ae1b0de7..e09526e75d3 100644
--- a/test/fixtures/wpt/WebCryptoAPI/import_export/raw_format_aliases.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/import_export/raw_format_aliases.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: raw-secret and raw-public importKey() format aliases
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// For all existing symmetric algorithms in WebCrypto, "raw-secret" acts as an
// alias of "raw". For all existing asymmetric algorithms in WebCrypto,
diff --git a/test/fixtures/wpt/WebCryptoAPI/serialization/aes-ocb.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/aes-ocb.https.any.js
similarity index 70%
rename from test/fixtures/wpt/WebCryptoAPI/serialization/aes-ocb.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/aes-ocb.https.any.js
index 33b814410c3..1d63ea9ef8e 100644
--- a/test/fixtures/wpt/WebCryptoAPI/serialization/aes-ocb.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/aes-ocb.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
-// META: script=../util/helpers.js
-// META: script=serialization.js
+// META: script=../../util/helpers.js
+// META: script=../../serialization/serialization.js
run_test([
{
name: 'AES-OCB',
diff --git a/test/fixtures/wpt/WebCryptoAPI/serialization/chacha20-poly1305.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/chacha20-poly1305.https.any.js
similarity index 71%
rename from test/fixtures/wpt/WebCryptoAPI/serialization/chacha20-poly1305.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/chacha20-poly1305.https.any.js
index aaaa24a0b66..6b2357f51ce 100644
--- a/test/fixtures/wpt/WebCryptoAPI/serialization/chacha20-poly1305.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/chacha20-poly1305.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
-// META: script=../util/helpers.js
-// META: script=serialization.js
+// META: script=../../util/helpers.js
+// META: script=../../serialization/serialization.js
run_test([
{
name: 'ChaCha20-Poly1305',
diff --git a/test/fixtures/wpt/WebCryptoAPI/serialization/hybridkem.tentative.https.window.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/hybridkem.https.window.js
similarity index 89%
rename from test/fixtures/wpt/WebCryptoAPI/serialization/hybridkem.tentative.https.window.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/hybridkem.https.window.js
index 465f86df55a..ae41250e05f 100644
--- a/test/fixtures/wpt/WebCryptoAPI/serialization/hybridkem.tentative.https.window.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/hybridkem.https.window.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: Hybrid KEM CryptoKey serialization
-// META: script=../util/helpers.js
-// META: script=serialization.js
+// META: script=../../util/helpers.js
+// META: script=../../serialization/serialization.js
run_test([
{
name: 'MLKEM768-P256',
diff --git a/test/fixtures/wpt/WebCryptoAPI/serialization/kmac.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/kmac.https.any.js
similarity index 77%
rename from test/fixtures/wpt/WebCryptoAPI/serialization/kmac.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/kmac.https.any.js
index 645d16bec77..80913886e38 100644
--- a/test/fixtures/wpt/WebCryptoAPI/serialization/kmac.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/kmac.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
-// META: script=../util/helpers.js
-// META: script=serialization.js
+// META: script=../../util/helpers.js
+// META: script=../../serialization/serialization.js
run_test([
{
name: 'KMAC128',
diff --git a/test/fixtures/wpt/WebCryptoAPI/serialization/mldsa.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/mldsa.https.any.js
similarity index 85%
rename from test/fixtures/wpt/WebCryptoAPI/serialization/mldsa.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/mldsa.https.any.js
index 3f61248b3d9..7e0c076496c 100644
--- a/test/fixtures/wpt/WebCryptoAPI/serialization/mldsa.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/mldsa.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
-// META: script=../util/helpers.js
-// META: script=serialization.js
+// META: script=../../util/helpers.js
+// META: script=../../serialization/serialization.js
run_test([
{
diff --git a/test/fixtures/wpt/WebCryptoAPI/serialization/mlkem.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/mlkem.https.any.js
similarity index 89%
rename from test/fixtures/wpt/WebCryptoAPI/serialization/mlkem.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/mlkem.https.any.js
index 62a210f0cda..7437d96f112 100644
--- a/test/fixtures/wpt/WebCryptoAPI/serialization/mlkem.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/serialization/mlkem.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
-// META: script=../util/helpers.js
-// META: script=serialization.js
+// META: script=../../util/helpers.js
+// META: script=../../serialization/serialization.js
run_test([
{
name: 'ML-KEM-512',
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/kmac.https.any.js
similarity index 65%
rename from test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/kmac.https.any.js
index 0a57ba7a3f8..db28d0cff5e 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/kmac.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: sign() and verify() Using KMAC
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=kmac_vectors.js
-// META: script=mac.js
+// META: script=../../sign_verify/mac.js
// META: script=kmac.js
// META: timeout=long
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/kmac.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/kmac.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac_vectors.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/kmac_vectors.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/sign_verify/kmac_vectors.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/kmac_vectors.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/mldsa.https.any.js
similarity index 70%
rename from test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/mldsa.https.any.js
index 253cc85e258..db071762f90 100644
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/mldsa.https.any.js
@@ -1,8 +1,8 @@
// META: title=WebCryptoAPI: sign() and verify() Using ML-DSA
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=../util/mldsa_key_fixtures.js
// META: script=mldsa_vectors.js
-// META: script=signature.js
+// META: script=../../sign_verify/signature.js
// META: script=mldsa.js
// META: timeout=long
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/mldsa.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/mldsa.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa_vectors.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/mldsa_vectors.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/sign_verify/mldsa_vectors.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/sign_verify/mldsa_vectors.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/supports-modern.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/supports-modern.https.any.js
similarity index 99%
rename from test/fixtures/wpt/WebCryptoAPI/supports-modern.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/supports-modern.https.any.js
index 5c4699dcfb7..a929468ed05 100644
--- a/test/fixtures/wpt/WebCryptoAPI/supports-modern.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/supports-modern.https.any.js
@@ -1,5 +1,5 @@
// META: title=WebCrypto API: supports method tests for algorithms in https://wicg.github.io/webcrypto-modern-algos/
-// META: script=util/helpers.js
+// META: script=../util/helpers.js
// META: script=util/supports.js
'use strict';
diff --git a/test/fixtures/wpt/WebCryptoAPI/supports.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/supports.https.any.js
similarity index 99%
rename from test/fixtures/wpt/WebCryptoAPI/supports.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/supports.https.any.js
index a74e49e69d1..a07684cbbe2 100644
--- a/test/fixtures/wpt/WebCryptoAPI/supports.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/modern-algos/supports.https.any.js
@@ -1,5 +1,5 @@
// META: title=WebCrypto API: supports method tests
-// META: script=util/helpers.js
+// META: script=../util/helpers.js
// META: script=util/supports.js
'use strict';
diff --git a/test/fixtures/wpt/WebCryptoAPI/util/mldsa_key_fixtures.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/util/mldsa_key_fixtures.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/util/mldsa_key_fixtures.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/util/mldsa_key_fixtures.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/util/supports.js b/test/fixtures/wpt/WebCryptoAPI/modern-algos/util/supports.js
similarity index 100%
rename from test/fixtures/wpt/WebCryptoAPI/util/supports.js
rename to test/fixtures/wpt/WebCryptoAPI/modern-algos/util/supports.js
diff --git a/test/fixtures/wpt/WebCryptoAPI/secure-curves/META.yml b/test/fixtures/wpt/WebCryptoAPI/secure-curves/META.yml
new file mode 100644
index 00000000000..e5c16d76a3d
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/META.yml
@@ -0,0 +1 @@
+spec: https://wicg.github.io/webcrypto-secure-curves/
diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_curve448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/derive_bits_keys/cfrg_curves_bits_curve448.https.any.js
similarity index 63%
rename from test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_curve448.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/secure-curves/derive_bits_keys/cfrg_curves_bits_curve448.https.any.js
index cda5ba87fba..35fc0210362 100644
--- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_curve448.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/derive_bits_keys/cfrg_curves_bits_curve448.https.any.js
@@ -1,9 +1,9 @@
// META: title=WebCryptoAPI: deriveKey() Using ECDH with CFRG Elliptic Curves
-// META: script=../util/helpers.js
-// META: script=cfrg_curves_bits_fixtures.js
-// META: script=derive.js
-// META: script=cfrg_curves.js
-// META: script=cfrg_curves_bits.js
+// META: script=../../util/helpers.js
+// META: script=../../derive_bits_keys/cfrg_curves_bits_fixtures.js
+// META: script=../../derive_bits_keys/derive.js
+// META: script=../../derive_bits_keys/cfrg_curves.js
+// META: script=../../derive_bits_keys/cfrg_curves_bits.js
// Define subtests from a `promise_test` to ensure the harness does not
// complete before the subtests are available. `explicit_done` cannot be used
diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys_curve448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/derive_bits_keys/cfrg_curves_keys_curve448.https.any.js
similarity index 63%
rename from test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys_curve448.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/secure-curves/derive_bits_keys/cfrg_curves_keys_curve448.https.any.js
index 38a5ce1db5b..595b04e3faf 100644
--- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys_curve448.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/derive_bits_keys/cfrg_curves_keys_curve448.https.any.js
@@ -1,9 +1,9 @@
// META: title=WebCryptoAPI: deriveKey() Using ECDH with CFRG Elliptic Curves
-// META: script=../util/helpers.js
-// META: script=cfrg_curves_bits_fixtures.js
-// META: script=derive.js
-// META: script=cfrg_curves.js
-// META: script=cfrg_curves_keys.js
+// META: script=../../util/helpers.js
+// META: script=../../derive_bits_keys/cfrg_curves_bits_fixtures.js
+// META: script=../../derive_bits_keys/derive.js
+// META: script=../../derive_bits_keys/cfrg_curves.js
+// META: script=../../derive_bits_keys/cfrg_curves_keys.js
// Define subtests from a `promise_test` to ensure the harness does not
// complete before the subtests are available. `explicit_done` cannot be used
diff --git a/test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/failures_Ed448.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/failures_Ed448.https.any.js
new file mode 100644
index 00000000000..b129b88289a
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/failures_Ed448.https.any.js
@@ -0,0 +1,6 @@
+// META: title=WebCryptoAPI: generateKey() for Failures
+// META: timeout=long
+// META: script=../../util/helpers.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/failures.js
+run_test(["Ed448"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/failures_X448.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/failures_X448.https.any.js
new file mode 100644
index 00000000000..8293786cc30
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/failures_X448.https.any.js
@@ -0,0 +1,6 @@
+// META: title=WebCryptoAPI: generateKey() for Failures
+// META: timeout=long
+// META: script=../../util/helpers.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/failures.js
+run_test(["X448"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_Ed448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/successes_Ed448.https.any.js
similarity index 50%
rename from test/fixtures/wpt/WebCryptoAPI/generateKey/successes_Ed448.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/successes_Ed448.https.any.js
index d017170ca1a..c274ffc6b3e 100644
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_Ed448.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/successes_Ed448.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
-// META: script=algorithm_registry.js
-// META: script=successes.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/successes.js
run_test(["Ed448"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_X448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/successes_X448.https.any.js
similarity index 50%
rename from test/fixtures/wpt/WebCryptoAPI/generateKey/successes_X448.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/successes_X448.https.any.js
index f1475c16bbd..c5ca8f3c968 100644
--- a/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_X448.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/generateKey/successes_X448.https.any.js
@@ -1,7 +1,7 @@
// META: title=WebCryptoAPI: generateKey() Successful Calls
// META: timeout=long
-// META: script=../util/helpers.js
+// META: script=../../util/helpers.js
// META: script=/common/subset-tests.js
-// META: script=algorithm_registry.js
-// META: script=successes.js
+// META: script=../../generateKey/algorithm_registry.js
+// META: script=../../generateKey/successes.js
run_test(["X448"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/secure-curves/idlharness.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/idlharness.https.any.js
new file mode 100644
index 00000000000..6b90dd4089c
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/idlharness.https.any.js
@@ -0,0 +1,10 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+// META: timeout=long
+
+// https://wicg.github.io/webcrypto-secure-curves/
+
+idl_test(
+ ['webcrypto-secure-curves'],
+ ['webcrypto']
+);
diff --git a/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_Ed448.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_Ed448.https.any.js
new file mode 100644
index 00000000000..d35b341d132
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_Ed448.https.any.js
@@ -0,0 +1,10 @@
+// META: title=WebCryptoAPI: importKey() for OKP keys
+// META: timeout=long
+// META: script=../../util/helpers.js
+// META: script=../../util/okp_key_fixtures.js
+// META: script=../../import_export/okp_importKey_fixtures.js
+// META: script=../../import_export/okp_importKey.js
+
+
+// Test importKey and exportKey for OKP algorithms.
+runTests("Ed448");
diff --git a/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_X448.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_X448.https.any.js
new file mode 100644
index 00000000000..c2319535a40
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_X448.https.any.js
@@ -0,0 +1,10 @@
+// META: title=WebCryptoAPI: importKey() for OKP keys
+// META: timeout=long
+// META: script=../../util/helpers.js
+// META: script=../../util/okp_key_fixtures.js
+// META: script=../../import_export/okp_importKey_fixtures.js
+// META: script=../../import_export/okp_importKey.js
+
+
+// Test importKey and exportKey for OKP algorithms.
+runTests("X448");
diff --git a/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_failures_Ed448.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_failures_Ed448.https.any.js
new file mode 100644
index 00000000000..2d33034e9ba
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_failures_Ed448.https.any.js
@@ -0,0 +1,9 @@
+// META: title=WebCryptoAPI: importKey() for Failures
+// META: timeout=long
+// META: script=../../util/helpers.js
+// META: script=../../util/okp_key_fixtures.js
+// META: script=../../import_export/okp_importKey_failures_fixtures.js
+// META: script=../../import_export/importKey_failures.js
+
+
+run_test(["Ed448"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_failures_X448.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_failures_X448.https.any.js
new file mode 100644
index 00000000000..1cd1753380f
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/import_export/okp_importKey_failures_X448.https.any.js
@@ -0,0 +1,9 @@
+// META: title=WebCryptoAPI: importKey() for Failures
+// META: timeout=long
+// META: script=../../util/helpers.js
+// META: script=../../util/okp_key_fixtures.js
+// META: script=../../import_export/okp_importKey_failures_fixtures.js
+// META: script=../../import_export/importKey_failures.js
+
+
+run_test(["X448"]);
diff --git a/test/fixtures/wpt/WebCryptoAPI/serialization/ed448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/serialization/ed448.https.any.js
similarity index 70%
rename from test/fixtures/wpt/WebCryptoAPI/serialization/ed448.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/secure-curves/serialization/ed448.https.any.js
index 4abe5628568..f1fdf785ce4 100644
--- a/test/fixtures/wpt/WebCryptoAPI/serialization/ed448.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/serialization/ed448.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
-// META: script=../util/helpers.js
-// META: script=serialization.js
+// META: script=../../util/helpers.js
+// META: script=../../serialization/serialization.js
run_test([
{
name: 'Ed448',
diff --git a/test/fixtures/wpt/WebCryptoAPI/serialization/x448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/serialization/x448.https.any.js
similarity index 70%
rename from test/fixtures/wpt/WebCryptoAPI/serialization/x448.tentative.https.any.js
rename to test/fixtures/wpt/WebCryptoAPI/secure-curves/serialization/x448.https.any.js
index cafc00144a3..05c2e17b63f 100644
--- a/test/fixtures/wpt/WebCryptoAPI/serialization/x448.tentative.https.any.js
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/serialization/x448.https.any.js
@@ -1,6 +1,6 @@
// META: title=WebCryptoAPI: CryptoKey serialization
-// META: script=../util/helpers.js
-// META: script=serialization.js
+// META: script=../../util/helpers.js
+// META: script=../../serialization/serialization.js
run_test([
{
name: 'X448',
diff --git a/test/fixtures/wpt/WebCryptoAPI/secure-curves/sign_verify/eddsa_curve448.https.any.js b/test/fixtures/wpt/WebCryptoAPI/secure-curves/sign_verify/eddsa_curve448.https.any.js
new file mode 100644
index 00000000000..b7e6b832251
--- /dev/null
+++ b/test/fixtures/wpt/WebCryptoAPI/secure-curves/sign_verify/eddsa_curve448.https.any.js
@@ -0,0 +1,8 @@
+// META: title=WebCryptoAPI: sign() and verify() Using EdDSA
+// META: script=../../util/helpers.js
+// META: script=../../sign_verify/eddsa_vectors.js
+// META: script=../../sign_verify/signature.js
+// META: script=../../sign_verify/eddsa.js
+// META: timeout=long
+
+run_test("Ed448");
diff --git a/test/fixtures/wpt/WebCryptoAPI/sign_verify/eddsa_curve448.tentative.https.any.js b/test/fixtures/wpt/WebCryptoAPI/sign_verify/eddsa_curve448.tentative.https.any.js
deleted file mode 100644
index 8dd43dfeb17..00000000000
--- a/test/fixtures/wpt/WebCryptoAPI/sign_verify/eddsa_curve448.tentative.https.any.js
+++ /dev/null
@@ -1,8 +0,0 @@
-// META: title=WebCryptoAPI: sign() and verify() Using EdDSA
-// META: script=../util/helpers.js
-// META: script=eddsa_vectors.js
-// META: script=signature.js
-// META: script=eddsa.js
-// META: timeout=long
-
-run_test("Ed448");
diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json
index 33c38735174..2d12ad45360 100644
--- a/test/fixtures/wpt/versions.json
+++ b/test/fixtures/wpt/versions.json
@@ -100,7 +100,7 @@
"path": "web-locks"
},
"WebCryptoAPI": {
- "commit": "3127c3a492e63578ed2bf76e3d4bda805183b5a3",
+ "commit": "b638c093cd3e1849715130bcd99041f79980bb12",
"path": "WebCryptoAPI"
},
"webidl": {
diff --git a/test/parallel/test-common-wpt-any.js b/test/parallel/test-common-wpt-any.js
index c198fd70714..6244453f29c 100644
--- a/test/parallel/test-common-wpt-any.js
+++ b/test/parallel/test-common-wpt-any.js
@@ -38,7 +38,7 @@ assert.deepStrictEqual(getUnexpectedPasses(flakySpecs, {}), []);
const specs = WPTTestSpec.from(
'WebCryptoAPI',
- 'getPublicKey.tentative.https.any.js',
+ 'modern-algos/getPublicKey.https.any.js',
[],
);
@@ -47,11 +47,11 @@ assert.deepStrictEqual(specs.map((spec) => ({
isWebWorkerTest: spec.isWebWorkerTest(),
})), [
{
- testPath: 'WebCryptoAPI/getPublicKey.tentative.https.any.html',
+ testPath: 'WebCryptoAPI/modern-algos/getPublicKey.https.any.html',
isWebWorkerTest: false,
},
{
- testPath: 'WebCryptoAPI/getPublicKey.tentative.https.any.worker.html',
+ testPath: 'WebCryptoAPI/modern-algos/getPublicKey.https.any.worker.html',
isWebWorkerTest: true,
},
]);
@@ -90,7 +90,7 @@ assert.deepStrictEqual(
const skippedSpecs = WPTTestSpec.from(
'WebCryptoAPI',
- 'getPublicKey.tentative.https.any.js',
+ 'modern-algos/getPublicKey.https.any.js',
[{ requires: [], skip: 'unsupported' }],
);
assert.deepStrictEqual(
@@ -100,7 +100,7 @@ assert.deepStrictEqual(
const skippedSubtestSpecs = WPTTestSpec.from(
'WebCryptoAPI',
- 'getPublicKey.tentative.https.any.js',
+ 'modern-algos/getPublicKey.https.any.js',
[{ requires: [], skipTests: [/getPublicKey method/] }],
);
assert.ok(skippedSubtestSpecs.every(
@@ -108,7 +108,7 @@ assert.ok(skippedSubtestSpecs.every(
const scopedSpecs = WPTTestSpec.from(
'WebCryptoAPI',
- 'getPublicKey.tentative.https.any.js',
+ 'modern-algos/getPublicKey.https.any.js',
[],
(spec) => (spec.getStatusKey().endsWith('.any.worker.html') ?
[{ requires: [], skip: 'worker only' }] : []),
@@ -119,26 +119,26 @@ assert.deepStrictEqual(
);
const sourceRule = {
- key: 'getPublicKey.tentative.https.any.js',
+ key: 'modern-algos/getPublicKey.https.any.js',
requires: [],
fail: { expected: ['shared failure'] },
};
const workerRule = {
- key: 'getPublicKey.tentative.https.any.worker.html',
+ key: 'modern-algos/getPublicKey.https.any.worker.html',
requires: [],
fail: { expected: ['worker failure'] },
};
const expectedFailureSpecs = WPTTestSpec.from(
'WebCryptoAPI',
- 'getPublicKey.tentative.https.any.js',
+ 'modern-algos/getPublicKey.https.any.js',
[sourceRule],
(spec) => (spec.isWebWorkerTest() ? [workerRule] : []),
);
const expectedResults = {
- 'getPublicKey.tentative.https.any.html': {
+ 'modern-algos/getPublicKey.https.any.html': {
fail: { expected: ['shared failure'] },
},
- 'getPublicKey.tentative.https.any.worker.html': {
+ 'modern-algos/getPublicKey.https.any.worker.html': {
fail: { expected: ['shared failure', 'worker failure'] },
},
};
@@ -147,15 +147,15 @@ assert.deepStrictEqual(
getUnexpectedPasses(expectedFailureSpecs, expectedResults),
[],
);
-expectedResults['getPublicKey.tentative.https.any.worker.html'].fail.expected =
+expectedResults['modern-algos/getPublicKey.https.any.worker.html'].fail.expected =
['worker failure'];
assert.deepStrictEqual(
getUnexpectedPasses(expectedFailureSpecs, expectedResults),
- ['getPublicKey.tentative.https.any.worker.html:shared failure'],
+ ['modern-algos/getPublicKey.https.any.worker.html:shared failure'],
);
-expectedResults['getPublicKey.tentative.https.any.worker.html'].fail.expected =
+expectedResults['modern-algos/getPublicKey.https.any.worker.html'].fail.expected =
['shared failure'];
assert.deepStrictEqual(
getUnexpectedPasses(expectedFailureSpecs, expectedResults),
- ['getPublicKey.tentative.https.any.worker.html:worker failure'],
+ ['modern-algos/getPublicKey.https.any.worker.html:worker failure'],
);
diff --git a/test/wpt/status/WebCryptoAPI.cjs b/test/wpt/status/WebCryptoAPI.cjs
index e2225c52d73..606cbbac34d 100644
--- a/test/wpt/status/WebCryptoAPI.cjs
+++ b/test/wpt/status/WebCryptoAPI.cjs
@@ -32,99 +32,99 @@ function skipSubtests(...entries) {
if (!hasOpenSSL(3, 0)) {
skip(
- 'encrypt_decrypt/aes_ocb.tentative.https.any.js',
- 'generateKey/failures_AES-OCB.tentative.https.any.js',
- 'generateKey/failures_kmac.tentative.https.any.js',
- 'generateKey/successes_AES-OCB.tentative.https.any.js',
- 'generateKey/successes_kmac.tentative.https.any.js',
- 'import_export/AES-OCB_importKey.tentative.https.any.js',
- 'import_export/KMAC_importKey.tentative.https.any.js',
- 'serialization/aes-ocb.tentative.https.any.js',
- 'serialization/kmac.tentative.https.any.js',
- 'sign_verify/kmac.tentative.https.any.js');
+ 'modern-algos/encrypt_decrypt/aes_ocb.https.any.js',
+ 'modern-algos/generateKey/failures_AES-OCB.https.any.js',
+ 'modern-algos/generateKey/failures_kmac.https.any.js',
+ 'modern-algos/generateKey/successes_AES-OCB.https.any.js',
+ 'modern-algos/generateKey/successes_kmac.https.any.js',
+ 'modern-algos/import_export/AES-OCB_importKey.https.any.js',
+ 'modern-algos/import_export/KMAC_importKey.https.any.js',
+ 'modern-algos/serialization/aes-ocb.https.any.js',
+ 'modern-algos/serialization/kmac.https.any.js',
+ 'modern-algos/sign_verify/kmac.https.any.js');
}
if (!hasOpenSSL(3, 2) || hasFIPS(3)) {
skip(
- 'derive_bits_keys/argon2.tentative.https.any.js',
- 'import_export/Argon2_importKey.tentative.https.any.js');
+ 'modern-algos/derive_bits_keys/argon2.https.any.js',
+ 'modern-algos/import_export/Argon2_importKey.https.any.js');
}
if (!hasOpenSSL(3, 5) && !isBoringSSL) {
skip(
- 'encap_decap/encap_decap_bits.tentative.https.any.js',
- 'encap_decap/encap_decap_keys.tentative.https.any.js',
- 'generateKey/failures_Hybrid-KEM.tentative.https.any.js',
- 'generateKey/failures_ML-DSA.tentative.https.any.js',
- 'generateKey/failures_ML-KEM.tentative.https.any.js',
- 'generateKey/successes_Hybrid-KEM.tentative.https.any.js',
- 'generateKey/successes_ML-DSA.tentative.https.any.js',
- 'generateKey/successes_ML-KEM.tentative.https.any.js',
- 'import_export/Hybrid-KEM_importKey.tentative.https.any.js',
- 'import_export/ML-DSA_importKey.tentative.https.any.js',
- 'import_export/ML-KEM_importKey.tentative.https.any.js',
- 'serialization/hybridkem.tentative.https.window.js',
- 'serialization/mldsa.tentative.https.any.js',
- 'serialization/mlkem.tentative.https.any.js',
- 'sign_verify/mldsa.tentative.https.any.js');
+ 'modern-algos/encap_decap/encap_decap_bits.https.any.js',
+ 'modern-algos/encap_decap/encap_decap_keys.https.any.js',
+ 'modern-algos/generateKey/failures_Hybrid-KEM.https.any.js',
+ 'modern-algos/generateKey/failures_ML-DSA.https.any.js',
+ 'modern-algos/generateKey/failures_ML-KEM.https.any.js',
+ 'modern-algos/generateKey/successes_Hybrid-KEM.https.any.js',
+ 'modern-algos/generateKey/successes_ML-DSA.https.any.js',
+ 'modern-algos/generateKey/successes_ML-KEM.https.any.js',
+ 'modern-algos/import_export/Hybrid-KEM_importKey.https.any.js',
+ 'modern-algos/import_export/ML-DSA_importKey.https.any.js',
+ 'modern-algos/import_export/ML-KEM_importKey.https.any.js',
+ 'modern-algos/serialization/hybridkem.https.window.js',
+ 'modern-algos/serialization/mldsa.https.any.js',
+ 'modern-algos/serialization/mlkem.https.any.js',
+ 'modern-algos/sign_verify/mldsa.https.any.js');
skipSubtests(
- ['getPublicKey.tentative.https.any.js', /ml-?(?:kem|dsa)/i],
+ ['modern-algos/getPublicKey.https.any.js', /ml-?(?:kem|dsa)/i],
[
- 'supports-modern.tentative.https.any.js',
+ 'modern-algos/supports-modern.https.any.js',
/(?:ml-?(?:kem|dsa)|(?:en|de)capsulateKey)/i,
]);
}
if (isBoringSSL) {
skip(
- 'derive_bits_keys/cfrg_curves_bits_curve448.tentative.https.any.js',
- 'derive_bits_keys/cfrg_curves_keys_curve448.tentative.https.any.js',
- 'digest/cshake.tentative.https.any.js',
- 'digest/sha3.tentative.https.any.js',
- 'generateKey/failures_Ed448.tentative.https.any.js',
- 'generateKey/failures_Hybrid-KEM.tentative.https.any.js',
- 'generateKey/failures_X448.tentative.https.any.js',
- 'generateKey/successes_Ed448.tentative.https.any.js',
- 'generateKey/successes_Hybrid-KEM.tentative.https.any.js',
- 'generateKey/successes_X448.tentative.https.any.js',
- 'import_export/Hybrid-KEM_importKey.tentative.https.any.js',
- 'import_export/okp_importKey_Ed448.tentative.https.any.js',
- 'import_export/okp_importKey_failures_Ed448.tentative.https.any.js',
- 'import_export/okp_importKey_failures_X448.tentative.https.any.js',
- 'import_export/okp_importKey_X448.tentative.https.any.js',
- 'serialization/ed448.tentative.https.any.js',
- 'serialization/hybridkem.tentative.https.window.js',
- 'serialization/x448.tentative.https.any.js',
- 'sign_verify/eddsa_curve448.tentative.https.any.js');
+ 'secure-curves/derive_bits_keys/cfrg_curves_bits_curve448.https.any.js',
+ 'secure-curves/derive_bits_keys/cfrg_curves_keys_curve448.https.any.js',
+ 'modern-algos/digest/cshake.https.any.js',
+ 'modern-algos/digest/sha3.https.any.js',
+ 'secure-curves/generateKey/failures_Ed448.https.any.js',
+ 'modern-algos/generateKey/failures_Hybrid-KEM.https.any.js',
+ 'secure-curves/generateKey/failures_X448.https.any.js',
+ 'secure-curves/generateKey/successes_Ed448.https.any.js',
+ 'modern-algos/generateKey/successes_Hybrid-KEM.https.any.js',
+ 'secure-curves/generateKey/successes_X448.https.any.js',
+ 'modern-algos/import_export/Hybrid-KEM_importKey.https.any.js',
+ 'secure-curves/import_export/okp_importKey_Ed448.https.any.js',
+ 'secure-curves/import_export/okp_importKey_failures_Ed448.https.any.js',
+ 'secure-curves/import_export/okp_importKey_failures_X448.https.any.js',
+ 'secure-curves/import_export/okp_importKey_X448.https.any.js',
+ 'secure-curves/serialization/ed448.https.any.js',
+ 'modern-algos/serialization/hybridkem.https.window.js',
+ 'secure-curves/serialization/x448.https.any.js',
+ 'secure-curves/sign_verify/eddsa_curve448.https.any.js');
skipSubtests(
- ['encap_decap/encap_decap_bits.tentative.https.any.js', /(?:ml-kem-512|mlkem)/i],
- ['encap_decap/encap_decap_keys.tentative.https.any.js', /(?:ml-kem-512|mlkem)/i],
- ['generateKey/failures_ML-KEM.tentative.https.any.js', /ml-kem-512/i],
- ['generateKey/successes_ML-KEM.tentative.https.any.js', /ml-kem-512/i],
- ['getPublicKey.tentative.https.any.js', /(?:ed448|x448|ml-kem-512|mlkem)/i],
- ['import_export/ML-KEM_importKey.tentative.https.any.js', /ml-kem-512/i],
- ['serialization/mlkem.tentative.https.any.js', /ml-kem-512/i],
- ['supports-modern.tentative.https.any.js', /(?:ml-kem-512|mlkem)/i]);
+ ['modern-algos/encap_decap/encap_decap_bits.https.any.js', /(?:ml-kem-512|mlkem)/i],
+ ['modern-algos/encap_decap/encap_decap_keys.https.any.js', /(?:ml-kem-512|mlkem)/i],
+ ['modern-algos/generateKey/failures_ML-KEM.https.any.js', /ml-kem-512/i],
+ ['modern-algos/generateKey/successes_ML-KEM.https.any.js', /ml-kem-512/i],
+ ['modern-algos/getPublicKey.https.any.js', /(?:ed448|x448|ml-kem-512|mlkem)/i],
+ ['modern-algos/import_export/ML-KEM_importKey.https.any.js', /ml-kem-512/i],
+ ['modern-algos/serialization/mlkem.https.any.js', /ml-kem-512/i],
+ ['modern-algos/supports-modern.https.any.js', /(?:ml-kem-512|mlkem)/i]);
}
if (hasFIPS(3)) {
skip(
- 'encrypt_decrypt/aes_ocb.tentative.https.any.js',
- 'encrypt_decrypt/chacha20_poly1305.tentative.https.any.js',
- 'generateKey/failures_AES-OCB.tentative.https.any.js',
- 'generateKey/failures_chacha20_poly1305.tentative.https.any.js',
- 'generateKey/successes_AES-OCB.tentative.https.any.js',
- 'generateKey/successes_chacha20_poly1305.tentative.https.any.js',
- 'import_export/AES-OCB_importKey.tentative.https.any.js',
- 'import_export/ChaCha20-Poly1305_importKey.tentative.https.any.js',
- 'serialization/aes-ocb.tentative.https.any.js',
- 'serialization/chacha20-poly1305.tentative.https.any.js');
+ 'modern-algos/encrypt_decrypt/aes_ocb.https.any.js',
+ 'modern-algos/encrypt_decrypt/chacha20_poly1305.https.any.js',
+ 'modern-algos/generateKey/failures_AES-OCB.https.any.js',
+ 'modern-algos/generateKey/failures_chacha20_poly1305.https.any.js',
+ 'modern-algos/generateKey/successes_AES-OCB.https.any.js',
+ 'modern-algos/generateKey/successes_chacha20_poly1305.https.any.js',
+ 'modern-algos/import_export/AES-OCB_importKey.https.any.js',
+ 'modern-algos/import_export/ChaCha20-Poly1305_importKey.https.any.js',
+ 'modern-algos/serialization/aes-ocb.https.any.js',
+ 'modern-algos/serialization/chacha20-poly1305.https.any.js');
skipSubtests(
[
- 'supports-modern.tentative.https.any.js',
+ 'modern-algos/supports-modern.https.any.js',
/(?:ChaCha20-Poly1305|^supports returns (?:true|false) for algorithm objects with (?:valid|invalid) parameters$)/,
],
[
@@ -135,8 +135,8 @@ if (hasFIPS(3)) {
if (hasFIPS()) {
skip(
- 'digest/kangarootwelve.tentative.https.any.js',
- 'digest/turboshake.tentative.https.any.js');
+ 'modern-algos/digest/kangarootwelve.https.any.js',
+ 'modern-algos/digest/turboshake.https.any.js');
}
// OpenSSL 3.0 through 3.3 reject SHA-1 signature generation in FIPS mode.
@@ -153,39 +153,39 @@ if (hasFIPS(3) && !hasOpenSSL(3, 4)) {
if (hasFIPS(3, 5)) {
skip(
'derive_bits_keys/cfrg_curves_bits_curve25519.https.any.js',
- 'derive_bits_keys/cfrg_curves_bits_curve448.tentative.https.any.js',
+ 'secure-curves/derive_bits_keys/cfrg_curves_bits_curve448.https.any.js',
'derive_bits_keys/cfrg_curves_keys_curve25519.https.any.js',
- 'derive_bits_keys/cfrg_curves_keys_curve448.tentative.https.any.js',
- 'generateKey/failures_Hybrid-KEM.tentative.https.any.js',
+ 'secure-curves/derive_bits_keys/cfrg_curves_keys_curve448.https.any.js',
+ 'modern-algos/generateKey/failures_Hybrid-KEM.https.any.js',
'generateKey/failures_X25519.https.any.js',
- 'generateKey/failures_X448.tentative.https.any.js',
- 'generateKey/successes_Hybrid-KEM.tentative.https.any.js',
+ 'secure-curves/generateKey/failures_X448.https.any.js',
+ 'modern-algos/generateKey/successes_Hybrid-KEM.https.any.js',
'generateKey/successes_X25519.https.any.js',
- 'generateKey/successes_X448.tentative.https.any.js',
- 'import_export/Hybrid-KEM_importKey.tentative.https.any.js',
+ 'secure-curves/generateKey/successes_X448.https.any.js',
+ 'modern-algos/import_export/Hybrid-KEM_importKey.https.any.js',
'import_export/okp_importKey_X25519.https.any.js',
- 'import_export/okp_importKey_X448.tentative.https.any.js',
+ 'secure-curves/import_export/okp_importKey_X448.https.any.js',
'import_export/okp_importKey_failures_X25519.https.any.js',
- 'import_export/okp_importKey_failures_X448.tentative.https.any.js',
- 'serialization/hybridkem.tentative.https.window.js',
+ 'secure-curves/import_export/okp_importKey_failures_X448.https.any.js',
+ 'modern-algos/serialization/hybridkem.https.window.js',
'serialization/x25519.https.any.js',
- 'serialization/x448.tentative.https.any.js');
+ 'secure-curves/serialization/x448.https.any.js');
skipSubtests(
[
'derive_bits_keys/derived_bits_length.https.any.js',
/^X25519 derivation/,
],
- ['encap_decap/encap_decap_bits.tentative.https.any.js', /mlkem/i],
- ['encap_decap/encap_decap_keys.tentative.https.any.js', /mlkem/i],
- ['getPublicKey.tentative.https.any.js', /(?:X25519|X448|MLKEM)/],
+ ['modern-algos/encap_decap/encap_decap_bits.https.any.js', /mlkem/i],
+ ['modern-algos/encap_decap/encap_decap_keys.https.any.js', /mlkem/i],
+ ['modern-algos/getPublicKey.https.any.js', /(?:X25519|X448|MLKEM)/],
[
- 'import_export/raw_format_aliases.tentative.https.any.js',
+ 'modern-algos/import_export/raw_format_aliases.https.any.js',
/(?:X25519|X448)/,
],
- ['supports-modern.tentative.https.any.js', /mlkem/i],
+ ['modern-algos/supports-modern.https.any.js', /mlkem/i],
[
- 'supports.tentative.https.any.js',
+ 'modern-algos/supports.https.any.js',
/(?:X25519|^deriveKey promise tests|^supports validates the ECDH public key$)/,
],
[
@@ -245,7 +245,7 @@ if (hasFIPS(4)) {
if (!hasFIPS()) {
skipSubtests(
- ['digest/kangarootwelve.tentative.https.any.js', /C=(?:\d{4,}|5(?:1[3-9]|[2-9]\d)|[6-9]\d{2}) bytes/]);
+ ['modern-algos/digest/kangarootwelve.https.any.js', /C=(?:\d{4,}|5(?:1[3-9]|[2-9]\d)|[6-9]\d{2}) bytes/]);
}
function assertNoOverlap(fileSkips, subtestSkips) {