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

Reply via email to