Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f555e557689249da53fd9c80bc1e769644fa6e9e
      
https://github.com/WebKit/WebKit/commit/f555e557689249da53fd9c80bc1e769644fa6e9e
  Author: Basuke Suzuki <[email protected]>
  Date:   2026-07-10 (Fri, 10 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/webkitcorepy/webkitcorepy/__init__.py
    A Tools/Scripts/webkitpy/autoinstalled/aioquic.py
    M Tools/Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py
    M 
Tools/Scripts/webkitpy/layout_tests/servers/web_platform_test_server_unittest.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 Alex Christensen.

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 (skipped without
--webtransport-h3) and the harness did not declare the port, pass the flag, 
check its liveness, or
provision aioquic. Every data-flow test thus failed to establish a session.

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`. The
  tests reach the port via the server-side {{ports[webtransport-h3][0]}} config 
substitution, so no
  Python-side URL accessor is needed.
- Add a real UDP-listener liveness check (QUIC is UDP; the inherited TCP 
connect() check never sees it),
  matching EADDRINUSE only.
- Provision aioquic through webkitpy's AutoInstall so a fresh checkout / CI bot 
needs no manual pip
  install. aioquic 1.2.0 needs a newer crypto stack than webkitpy pinned and 
AutoInstall uses a single
  shared per-interpreter directory with one version per package name, so this 
bumps the shared pins
  (cryptography -> 43.0.3, the highest with prebuilt py3.9 wheels while 
satisfying aioquic's >=42;
  pyOpenSSL -> 24.3.0; cffi kept 1.17.1) and registers the webtransport-only 
packages in a new
  autoinstalled/aioquic.py. AutoInstall only mutates the in-process sys.path, 
so the harness injects the
  AutoInstall directory into the wpt subprocess's PYTHONPATH for both the probe 
and the serve launch.
- Any provisioning failure (offline, missing wheel) degrades to the existing 
"h3 disabled" path instead
  of taking down unrelated WPT runs. WebTransportEnabled is already 
Stable/default-on; no feature flag.

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 (internal timeout in the streams-echo/streams-close 
family, backend gaps in
datagrams/stats/sendorder/close/historical/idlharness, BFCache variants, and 
the crash tests). Add a
Cocoa-only skip of the suite to platform/glib (GTK/WPE have no QUIC/HTTP-3 
backend; Windows already
skips it). The un-skipped tests need the Network.framework QUIC SPI that ships 
on Tahoe but not
Sequoia, so skip the suite in platform/mac-sequoia (open-source CI runs Tahoe; 
the Sequoia bots would
otherwise fail every un-skipped test).

* 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 43.0.3 pin to satisfy aioquic 
1.2.0.
* Tools/Scripts/webkitpy/autoinstalled/aioquic.py: Added; register aioquic 
1.2.0 and its deps.
* Tools/Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:
(_aioquic_autoinstall_directory): Added; trigger AutoInstall and return its 
directory.
(_env_with_pythonpath_appended): Added.
(WebPlatformTestServer.__init__): Provision aioquic, probe it in the serve 
interpreter, and append
--webtransport-h3 plus the UDP mapping only when available; else warn.
(WebPlatformTestServer.ports_to_forward): Exclude UDP ports from TCP device 
forwarding.
(WebPlatformTestServer._is_udp_port_listening): Added.
(WebPlatformTestServer._is_server_running_on_all_ports): Added; validate the 
UDP h3 listener via a
bind()->EADDRINUSE probe alongside the existing TCP port checks.
(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): Added; stub the autoinstall trigger to keep 
construction hermetic.
(TestWebPlatformTestServer.test_is_udp_port_listening): Added.

Canonical link: https://commits.webkit.org/316945@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to