Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 003de9b1e25a497a93110b2ef9d6914afcf9b3a0
https://github.com/WebKit/WebKit/commit/003de9b1e25a497a93110b2ef9d6914afcf9b3a0
Author: Basuke Suzuki <[email protected]>
Date: 2026-07-16 (Thu, 16 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 and Alex Christensen.
Reland of 316945@main (reverted in 319139), reworked per review feedback.
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.
- 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 316945@main per review: aioquic is registered like any
other webkitpy
autoinstall package rather than in a bespoke autoinstalled/aioquic.py; the
graceful-degrade probe and
its helpers are dropped in favor of a plain import; and the UDP
liveness/forwarding logic moved to the
superclass instead of being overridden.
* 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__): Append the aioquic 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/317331@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications