Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: def5811ff7a01689ac155dfdc6c619ae61778060
https://github.com/WebKit/WebKit/commit/def5811ff7a01689ac155dfdc6c619ae61778060
Author: Basuke Suzuki <[email protected]>
Date: 2026-07-17 (Fri, 17 Jul 2026)
Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/imported/w3c/resources/config.json
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/congestion-control.https.any-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/congestion-control.https.any.serviceworker-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/congestion-control.https.any.sharedworker-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/congestion-control.https.any.worker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/connect.https.any-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/connect.https.any.serviceworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/connect.https.any.sharedworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/connect.https.any.worker-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.sub.any-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.sub.any.serviceworker-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.sub.any.sharedworker-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/constructor.https.sub.any.worker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/csp-fail.https.window-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/csp-pass.https.window-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/datagram-bad-chunk.https.any-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/datagram-bad-chunk.https.any.serviceworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/datagram-bad-chunk.https.any.sharedworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/datagram-bad-chunk.https.any.worker-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/incoming-multiple-streams.https.any-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/incoming-multiple-streams.https.any.serviceworker-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/incoming-multiple-streams.https.any.sharedworker-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/webtransport/incoming-multiple-streams.https.any.worker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/sendstream-bad-chunk.https.any-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/sendstream-bad-chunk.https.any.serviceworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/sendstream-bad-chunk.https.any.sharedworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/sendstream-bad-chunk.https.any.worker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/server-certificate-hashes.https.any-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/server-certificate-hashes.https.any.serviceworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/server-certificate-hashes.https.any.sharedworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/webtransport/server-certificate-hashes.https.any.worker-expected.txt
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/mac-sequoia/TestExpectations
M Tools/Scripts/libraries/resultsdbpy/resultsdbpy/__init__.py
M Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py
M Tools/Scripts/webkitpy/__init__.py
M Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py
M Tools/Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py
M Tools/Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py
Log Message:
-----------
[WebTransport] Run the WPT webtransport-h3 server in the layout test harness
and enable the passing tests
https://bugs.webkit.org/show_bug.cgi?id=319008
rdar://181853035
Reviewed by Sam Sneddon.
Reland of 317331@main, which was reverted because it broke Xcode builds.
The WPT webtransport/ tests could not connect because the layout-test harness
never launched the
WPT WebTransport-over-HTTP/3 (webtransport-h3) QUIC server. The vendored
aioquic-based server exists
under tools/webtransport/h3/ and upstream's `wpt serve` supports it, but it is
opt-in and the harness
did not declare the port, pass the flag, check its liveness, or provision
aioquic.
Wire the harness to launch the server and provision its dependency:
- Declare a webtransport-h3 UDP port in the WPT config and pass
--webtransport-h3 to `wpt serve`.
- Provision aioquic through webkitpy's AutoInstall so a fresh checkout / CI bot
needs no manual pip
install. aioquic is the one dependency the h3 server needs that wpt does not
vendor under
tools/third_party, so it is registered alongside every other package in
webkitpy/__init__.py.
aioquic 1.2.0 needs a newer crypto stack than webkitpy pinned and AutoInstall
keeps one version per
package name, so this bumps the shared pins (pyOpenSSL -> 24.3.0,
cryptography -> 44.0.3 -- the highest
under pyOpenSSL's cryptography<45 pin that still ships prebuilt wheels for
every arch). AutoInstall only
mutates the in-process sys.path, so WebPlatformTestServer imports aioquic to
trigger provisioning and
appends AutoInstall.directory to the `wpt serve` subprocess PYTHONPATH. The
import is done inside
WebPlatformTestServer.__init__ rather than at module scope: build scripts
such as generate-xcfilelists
import this module transitively with the autoinstaller disabled, so a
top-level import would fail there
with ModuleNotFoundError (this is what broke 317331@main).
- Add a UDP-listener liveness check (QUIC is UDP; the inherited TCP connect()
check never sees it) and
exclude UDP ports from TCP device-forwarding. Both live in the HttpServerBase
superclass, keyed off a
per-mapping 'udp' flag, so WebPlatformTestServer no longer overrides
ports_to_forward.
With the server running, un-skip the WebTransport tests that pass on Cocoa
(connect, constructor,
congestion-control, csp, datagram-bad-chunk, incoming-multiple-streams,
sendstream-bad-chunk,
server-certificate-hashes, in-removed-iframe) and add their expectations. The
remaining tests stay
skipped, grouped by reason. Skip the Cocoa-only suite on platform/glib (GTK/WPE
have no QUIC/HTTP-3
backend; Windows already skips it) and on platform/mac-sequoia (the tests need
the Network.framework
QUIC SPI that ships on Tahoe but not Sequoia; open-source CI runs Tahoe).
This reland differs from 317331@main only in that aioquic is imported lazily
inside
WebPlatformTestServer.__init__ instead of at module scope, so build scripts
that import this module
with the autoinstaller disabled no longer fail.
* LayoutTests/imported/w3c/resources/config.json: Add the webtransport-h3 port.
* LayoutTests/TestExpectations: Un-skip the passing WebTransport tests; group
the remaining skips by reason.
* LayoutTests/platform/glib/TestExpectations: Skip the Cocoa-only WebTransport
suite on GTK/WPE.
* LayoutTests/platform/mac-sequoia/TestExpectations: Skip the WebTransport
suite on Sequoia (QUIC SPI is Tahoe-only).
* LayoutTests/imported/w3c/web-platform-tests/webtransport/*-expected.txt:
Baselines for the un-skipped tests.
* Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Bump pyOpenSSL
to 24.3.0 and collapse the
per-Python cryptography branch into a single 44.0.3 pin to satisfy aioquic
1.2.0.
* Tools/Scripts/libraries/resultsdbpy/resultsdbpy/__init__.py: Bump
pyasn1_modules to 0.4.2 and
service_identity to 24.2.0 to match webkitpy's shared pins (both are imported
in the same interpreter).
* Tools/Scripts/webkitpy/__init__.py: Register aioquic 1.2.0 and its deps
(pylsqpack, pyasn1,
pyasn1_modules, service_identity).
* Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py:
(HttpServerBase.ports_to_forward): Exclude UDP-flagged ports from TCP device
forwarding.
(HttpServerBase._is_server_running_on_all_ports): Validate UDP ports via the
new listener probe.
(HttpServerBase._is_udp_port_listening): Added.
* Tools/Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py:
(TestHttpServerBase.test_is_udp_port_listening): Added.
* Tools/Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:
(WebPlatformTestServer.__init__): Lazily import aioquic to provision it, append
the autoinstall directory
to the serve PYTHONPATH, pass --webtransport-h3, and flag the h3 mapping as UDP.
(WebPlatformTestServer.ports_to_forward): Deleted.
(WebPlatformTestServer._is_udp_port_listening): Deleted.
(WebPlatformTestServer._is_server_running_on_all_ports): Deleted.
(WebPlatformTestServer._spawn_process): Pass the aioquic-provisioned env to the
wpt serve process.
*
Tools/Scripts/webkitpy/layout_tests/servers/web_platform_test_server_unittest.py:
(TestWebPlatformTestServer.setUp): Deleted; the test harness already installs
registered packages.
Canonical link: https://commits.webkit.org/317380@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications