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

Reply via email to