Repository navigation
Update WPT - #7792
Merged
Merged
Update WPT#7792
Conversation
Upstream WPT commit 9ee707c850996c8d124809570c3ff855d67301b9
("Install cryptography for commands that serve tests", #63036) added
a "requirements" key to the serve entry in tools/serve/commands.json.
The patch no longer applied, so every WPT target failed during
analysis with CONTENT_DOES_NOT_MATCH_TARGET.
tools/wpt/wpt.py asserts that a command declaring requirements uses a
virtualenv, so the rebased patch removes the new key together with
conditional_requirements. The new requirement (cryptography) is only
used by fedcm handlers, which no workerd WPT suite exercises.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New suites from the WPT update: - WebCryptoAPI/export-key-error-order.https.any.js: exportKey() and wrapKey() check extractability before export support, so HKDF and PBKDF2 keys throw InvalidAccessError instead of NotSupportedError (src/workerd/api/crypto/crypto.c++). Marked as expected failures. - WebCryptoAPI/sharedarraybuffer.https.any.js: raw SharedArrayBuffer arguments are rejected, but views onto one are accepted instead of throwing TypeError. Marked as expected failures. - fetch/api/basic/request-upload-421.any.js: the 421 retry subtest moved out of request-upload.any.js, which stays disabled. fetch() does not retry on 421 Misdirected Request; expected failure in both fetch/api and fetch/api-ts configs. - fs/FileSystemBaseHandle-postMessage-insecure-context.https.window.js requires window.open() and postMessage, like its disabled siblings. Default and all-autogates variants behave identically. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream WPT commit 13748c36fdf9dd77cd0b34dd6b244256b365ea60 updated url/resources/IdnaTestV2.json to Unicode 18.0.0. Seven ToASCII cases contain U+3E8AC or U+3F8CD, which were previously unassigned (V7) and now map to valid labels. ada-url 4.0.0 ships IDNA 17.0.0 tables and still rejects them, so mark them as expected failures until ada-url updates its tables. The names are written with escapes because two cases differ only by precomposed versus conjoining Hangul jamo. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Describe where Bazel keeps the WPT archives after a failed patch, the wpt.py virtualenv assertion that constrains the serve patch, how to keep non-NFC subtest names exact, and how to apply formatting fixes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
✅ Approved — No issues found. The rebased WPT patch, the dependency bump and the new expectation entries are consistent with each other. The decision is advisory: this comment never approves, blocks or requests changes on the pull request. ✅ All checks passed📋 Code Quality: ✅ LGTMNo issues found.
📝 Documentation: ✅ LGTMThe additions to Reviewed commit: |
Contributor
|
Since last review: 1 resolved, 0 still open, 0 new. Reviewed commit: 20dc9dbb · github run |
npaun
approved these changes
Oct 16, 2026
npaun
enabled auto-merge (squash)
October 16, 2026 21:10
The wpt archive's patch was labelled //:patches/wpt/..., which resolves against the main repository. edgeworker includes shared_deps.MODULE.bazel, so its builds applied edgeworker's own copy of the patch, which went stale when the patch was rebased and failed with CONTENT_DOES_NOT_MATCH_TARGET. Use @workerd//, as build_file already does, so both builds apply the same patch. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is an automated pull request for updating WPT in workerd.
The WPT update was triaged by an agent using the wpt-update skill (run).
WPT update:
wpt-b875b21fd→wpt-2f17dec1fwpt-b875b21fd(upstreamb875b21fd9e6b688e37c10d1b6366cab7418f91e)wpt-2f17dec1f(upstream2f17dec1f36194d1c236120fd38b3556be466072)Final verification:
bazel test //src/wpt/... --test_size_filters= --nocache_test_resultsreportsBuild completed successfullyandExecuted 59 out of 59 tests: 59 tests pass. That covers the default and all-autogates variants plus the ESLint and TypeScript checks.tools/cross/format.py --check gitandgit diff --checkare clean.WPT patch changes
patches/wpt/0001-disable-virtualenv-for-serve-command.patchwas rebased. Upstream 9ee707c ("Install cryptography for commands that serve tests", #63036) added"requirements": ["requirements.txt"]to theserveentry oftools/serve/commands.json. After that change the patch no longer applied (CONTENT_DOES_NOT_MATCH_TARGET), and every WPT target failed during analysis.tools/wpt/wpt.pyasserts that a command withrequirementsorconditional_requirementsuses a virtualenv. The rebased patch therefore removes the new key along withconditional_requirementsand still sets"virtualenv": false.cryptography) is only imported byfedcm/support/delegation-issuance.py, which no workerd WPT suite uses.shared_deps.jsoncand the generated MODULE file are unchanged beyond the bump commit.Suites
Added (4):
WebCryptoAPI/export-key-error-order.https.any.jsexpectedFailures(4 subtests)exportKey()andwrapKey()checkextractablebefore checking export support. HKDF and PBKDF2 keys therefore throwInvalidAccessError(code 15) instead ofNotSupportedError(code 9).WebCryptoAPI/sharedarraybuffer.https.any.jsexpectedFailures(4 subtests)SubtleCryptoBufferSource arguments accept aUint8Arraybacked by aSharedArrayBufferinstead of throwingTypeError. RawSharedArrayBufferarguments are already rejected, and those subtests pass.fetch/api/basic/request-upload-421.any.jsexpectedFailures(1 subtest), in bothfetch/apiandfetch/api-tsrequest-upload.any.js, which stays fully disabled.fetch()does not retry a request after a 421 Misdirected Request response: the server reports "Request was sent 1 times. 1 connections were created." The test fails on an assertion and does not affect later tests.fs/FileSystemBaseHandle-postMessage-insecure-context.https.window.jsdisabledTests: truewindow.open(),postMessageandpromise_setup. This matches the existing disabledFileSystemBaseHandle-postMessage-*.window.jssiblings.Removed / renamed: none in the mapped directories. The new
interfaces/usb.idl,hid.idlandbluetooth*.idlreplacewebusb.idl,webhid.idlandweb-bluetooth*.idl; nothing in workerd references either set. New.htmlfiles underdom/events,streams/transferable,encoding/streams/crashtestsandfs/resourcesare not discovered as suites.Expectations changed in existing suites
url/IdnaTestV2.any.js: 7 newexpectedFailures. Upstream 13748c3 ("Update IDNA Test JSON to Unicode 18.0.0") changed cases containing U+3E8AC and U+3F8CD from V7 (invalid) to valid ToASCII outputs. ada-url 4.0.0 ships IDNA 17.0.0 tables (external/ada-url+/ada.cpp) and still throwsInvalid URL string. The names are written with\uescapes because two pairs differ only by precomposed versus conjoining Hangul jamo.digest/digest.https.any.jsanddigest.jsdropped thetransferBeforeCallvectors.encoding/iso-2022-jp-decoder.any.jsadded decoder reset tests.fetch/api/basic/gc.any.jsadded FormData GC tests.url/url-setters-stripping.any.jsaddedsearchParamstests.websockets/Create-blocked-port.any.jsgainedtimeout=long.streams/writable-streams/crashtests/garbage-collection.any.jsadded an abort-pending GC test.request-upload.any.jsstays whole-suite disabled.Relevant source locations
src/workerd/api/crypto/crypto.c++:SubtleCrypto::exportKeyandwrapKey(JSG_REQUIRE(key.getExtractable(), DOMInvalidAccessError, ...)runs beforekey.impl->exportKey).src/workerd/jsg/jsvalue.c++:JsBufferSource(accepts views onto shared buffers);src/workerd/api/crypto/crypto.h(digest/encrypttakejsg::JsBufferSource).external/ada-url+/ada.cpp: IDNA 17.0.0 tables.Proposed follow-ups (out of scope)
exportKey()andwrapKey(), throwNotSupportedErrorfor algorithms that cannot be exported (HKDF, PBKDF2) before the extractable check. This changes which error type is observable, so it may need a compatibility flag.SharedArrayBuffer-backed views inSubtleCryptoBufferSource arguments and dictionary members (they are not[AllowShared]). This is likely compat-flag gated.IdnaTestV2.any.jsexpectations.Skill update
.opencode/skills/wpt-update/SKILL.mdnow covers:wpt.pyvirtualenv/requirements assertion that constrains the serve patch;🤖 Generated with Claude Code