Commit Graph
86 Commits
Author SHA1 Message Date
ldm0 6c5776a12f fix(wpt-cross): serve Service Worker request headers as JSON
Source-commit: 3c0479c901
2026-11-12 16:19:51 +08:00
ldm0 ec020184e0 fix(wpt): send close_notify when HTTPS fixture responses finish
EOF-delimited streaming bodies were followed by a bare TCP close, so strict
TLS clients reported a truncated stream after receiving all body bytes. Send
the TLS close_notify alert before closing the socket, with a bounded wait for
the peer's shutdown alert. Add a strict TLS EOF regression for a streamed body.

Regressed-by: 72086d6d0a
2026-11-10 21:21:49 +08:00
ldm0 fcdd496af9 fix(wpt): preserve authored timeout metadata in worker wrappers
The parent HTML harness of a dedicated-worker any.js test used its default
short deadline even when the source declared META: timeout=long. Forward that
metadata before loading testharness.js and cover both long and normal wrappers
through the HTTP fixture. Keep the runner's outer deadline unchanged.
2026-11-10 20:34:44 +08:00
ldm0 bcf70988c1 fix(wpt): preserve sidecar header bytes before decoding
Preserve raw header value bytes while splitting and trimming static .headers and .sub.headers files. This extracts the existing server fix together with its GET/HEAD, substituted-value and non-ASCII-byte regression tests.

Source-commit: f04b8249c4
2026-11-10 16:18:07 +08:00
ldm0 72086d6d0a fix(wpt): serve trusted HTTPS and WSS fixture origins 2026-11-08 02:00:32 +08:00
ldm0 73cd60a5ea fix(wpt): serve resource timing font responses faithfully 2026-11-08 02:00:32 +08:00
ldm0 92dd1d08bc fix(benchmark): await document load before crash readiness 2026-11-06 23:10:49 +08:00
ldm0 ffde671f1f fix(benchmark): serve upstream EventSource message fixture
Implement message.py response MIME, byte queries, first-value semantics,
newline handling and delayed headers instead of serving Python source.
Allow exact references to this implemented resource during discovery.

Cover GET/HEAD bodies and headers, binary query values, delay parameters
and handler reference selection. Preserve upstream WPT files and assertions.
2026-11-06 22:40:07 +08:00
ldm0 5c4cbad355 fix(wpt): preserve authored timer delays for long tests 2026-11-06 02:26:17 +08:00
ldm0 dfea3bb256 fix(wpt): route navigator secure-context negatives to insecure origins 2026-11-04 16:09:18 +08:00
ldm0 cd2744c59e fix(benchmark): recognize Chromium error document completion
Chromium reports loadingFailed for a failed document request and later
loadingFinished when its internal error Document commits and loads under
the same request identity. The sequential navigation audit incorrectly
reported duplicate terminals and a successful terminal without a response.

Recognize this pair only when a same-session chrome-error frame commit
matches the request's frame, loader, and final unreachable URL between
the failure and completion. Keep ordinary request ordering and duplicate
terminal checks, and retain the transport failure in request summaries.

Cover direct and redirected failures, identity mismatches, missing or
misordered commits, extra terminals, and preservation of failure details.
2026-11-03 16:22:10 +08:00
ldm0 81551786f4 fix(wpt): follow document changes during crashtest readiness
Validate the initial Session/Frame/Loader commit before running readiness. Follow same-frame document replacement after a destroyed execution context within the original case deadline, and allow legitimate URL changes while preserving readiness and crash checks.

Validation: 500 Python WPT tests passed; navigation reproducer passed 20/20 runs. All 606 crashtests executed with 596 passing, 9 existing timeouts, and 1 existing crash. All 593 previously passing crashtests remained passing.
2026-10-29 20:11:17 +08:00
ldm0 d06f7ebe90 test(wpt): expand IndexedDB coverage and refresh case lists
Include Window and DedicatedWorker scripts and supported HTTPS/template HTML cases in the default and all profiles. Add enumeration regression coverage and refresh statuses from the complete release-Moli run.

Validation: 494 Python WPT tests passed. Executed 14,064 Moli WPT entries, including 442 IndexedDB entries (228 Window and 214 DedicatedWorker): 360 passed, 77 failed, and 5 timed out.
2026-10-29 20:11:17 +08:00
ldm0 871d57edd3 fix(benchmark): retain browser context for native WPT input 2026-10-25 01:45:25 +08:00
ldm0 cf51cefb7d fix(benchmark): route WPT permission changes through CDP 2026-10-22 14:28:24 +08:00
ldm0 9befcbda23 fix(benchmark): select CDP for WPT testdriver cases 2026-10-22 14:28:24 +08:00
ldm0 0ca924c266 fix(benchmark): run explicit CDP WPT input through native automation 2026-10-22 14:28:24 +08:00
ldm0 32df201d63 fix(benchmark): confirm target removal after close races 2026-10-22 14:28:24 +08:00
ldm0 b35056ac82 fix(wpt): absorb parallel fixture connection bursts
The inherited listen backlog of five makes concurrent browser connections
wait for TCP retries before fixture handlers run. Match wptserve's backlog
of 2000 for every IPv4/IPv6 origin without changing test timeouts.

Add real socket tests that queue a complete 50-worker burst before the
accept loop starts. Both address families time out before this change and
connect successfully afterward.

With the same frozen release binary, Worker error stress changes from
86/100 passes to 150/150 after changing only the backlog. Script-order
and worker XHR timing cases each pass all 30 additional trials.

Validation: 81 Python tests across connection backlog, fixture resources,
fixture responses and runner orchestration; git diff --check.
2026-10-18 20:13:58 +08:00
ldm0 7575a0d3d7 fix(benchmark): retain sampling and teardown failure evidence 2026-10-17 23:26:19 +08:00
ldm0 3edd4b0aa9 refactor(wpt): consolidate common redirect fixtures 2026-10-07 18:51:53 +08:00
ldm0 84cdb55797 test(cdp): add reproducible Chromium multipage comparisons
Add bounded fixed and random Chromium/Moli comparisons for target lifecycle,
window activity, named-window reuse, opener references and navigation inheritance,
plus a real DevTools frontend probe. Preserve action replay, raw protocol evidence
and target/session mappings while normalizing observed equivalent focus-event
orders and retaining exception identity in comparisons.

Validation: PYTHONPATH=moli-benchmark moli-benchmark/.venv/bin/python -m unittest discover -s moli-benchmark/tests -p test_multipage_cdp_fuzz.py -v.
2026-10-06 01:01:03 +08:00
ldm0 6f9e3a3270 test(wpt): cover trickle response streaming and upload ordering 2026-10-05 05:26:34 +08:00
ldm0 f4ee76bffa fix(wpt): honor CORS opt-in for common redirects 2026-10-05 05:21:30 +08:00
ldm0 ec8b1d9330 fix(wpt): let harness probes use the remaining case deadline 2026-10-04 00:09:13 +08:00
ldm0 1239fe6888 test(wpt): cover Fetch status fixture response semantics
Cover WPT Fetch status fixture handling, including no-body statuses, preserved HTTP status metadata and redirect targets, through the actual fixture server.
2026-10-03 17:45:10 +08:00
ldm0 5e80001318 refactor(wpt): unify fixture dispatch and preserve raw response headers
Reconcile the shared HTTP handlers and discovery rules from the split PRs with the complete fixture surface in wpt-misc-fix. Share stash namespaces and XHR dispatch, retain the existing testdriver bridge, preserve raw header values, and carry forward the remaining pipe, template, and dynamic-import regressions.

Validation: 742 Python tests across 74 modules pass; focused Ruff checks and git diff --check pass. With fixed Moli and Chromium binaries, a 27-case WPT comparison against main improves whole-case passes from 7 to 26 and 6 to 23 respectively, with no previously passing case regressing.
2026-09-29 19:03:23 +08:00
ldm0 4473d42935 fix(wpt): serve MIME-controlled nosniff scripts
Carry the remaining HTTP fixture and its regression tests from wpt-misc-fix at 3cd3c8968b.
2026-09-29 19:03:23 +08:00
ldm0 a9dc675b0a fix(wpt): serve form echo bodies as hexadecimal bytes
Carry the remaining HTTP fixture and its regression tests from wpt-misc-fix at 3cd3c8968b.
2026-09-29 19:03:23 +08:00
ldm0 446ac04b9b fix(wpt): serve worker URL encoding fixtures
Carry the remaining HTTP fixture and its regression tests from wpt-misc-fix at 3cd3c8968b.
2026-09-29 19:03:23 +08:00
ldm0 cccefdc7d9 fix(wpt): inspect Fetch request headers across HTTP methods
Bring the remaining Fetch header fixtures from wpt-misc-fix, including early responses to unread uploads, CORS metadata, response status pipes, and handler discovery. Consolidates d210a13a5d and 8e2764e6cd with their current regression tests.
2026-09-29 19:03:23 +08:00
ldm0 bde57e580c fix(wpt): serve the preload request counter fixture
Implement preload/resources/preload-count.py and admit its exact references
during case discovery. Resource requests increment a shared counter and fail
with 404; result requests return JavaScript and consume the count. This lets
the unsupported-type WPT verify that no preload request was sent.

Validation: 432 Python WPT tests across 31 modules, run with 32 workers.
Moli and Chromium both pass the affected WPT and the two related MIME cases
(47 subtests per engine). Only Python and the WPT pass ledger changed.

(cherry picked from commit b8a3d0497d3575200ce28896c8bcde7f8c4719c4)
2026-09-29 19:03:23 +08:00
ldm0 a4604a1939 fix(wpt): model Fetch redirect fixtures
Serve Fetch redirect.py with upstream Origin and credentials responses,
preflight handling, query inheritance, counters, delays and form status codes.
Recognize its relative, absolute and RESOURCES_DIR references during discovery.

Cover the HTTP behavior and discovery with regressions. Verify the fixture
against upstream wptserve, including byte parsing and unread request bodies.

(cherry picked from commit 813bb1b3ecb4e55c5a0167df22494ca5269b1ef1)
2026-09-29 19:03:23 +08:00
ldm0 7ec4a3ac15 fix(wpt): serve XHR request URI and redirect fixtures
Implement requri.py and redirect.py with their upstream query, status,
Location, delay, and method behavior. Preserve raw request URIs and allow
redirect responses before the upload completes.

Recognize supported XHR references during case selection and cover the
fixtures through real HTTP requests.

Validation: all 510 benchmark unit tests pass. With the unchanged Moli
binary, 17 WPT cases improve from 6 to 9 passes and 72 to 79 passing
subtests; both redirected Worker harnesses now execute their assertions.

(cherry picked from commit 456c59b63e4ef997d35dbf984b2406a6c3c75926)
2026-09-29 19:03:23 +08:00
ldm0 53c7e7073f fix(wpt): serve iframe parentage stash results
Support the iframe parentage stash fixture with write-once POST and read-once retrieval, preserving UUID/path namespaces and the difference between an absent value and empty bytes. Reuse the Python-handler response path for pipe processing. Tests cover requests, methods, body framing and case selection.

Validation: all branch checks passed. Ran 333 tests in 135.692s; OK
(cherry picked from commit 39dc2130dc)
2026-09-29 19:03:23 +08:00
ldm0 ef25ac681f fix(wpt): serve charset inheritance handler responses
Serve the bogus HTTP charset fixtures with their original bytes and optional valid meta charset. Match upstream response behavior for HEAD, extension methods and response-pipe bypass. Include exact reference selection and byte-level response tests.

Validation: all branch checks passed. Ran 325 tests in 122.514s; OK
(cherry picked from commit 9827403ad3)
2026-09-29 19:03:23 +08:00
ldm0 721f043bf1 fix(wpt): serve raw Content-Type response fixtures
Serve the WPT content-type fixture as its original raw HTTP response, preserving duplicate, empty and malformed Content-Type fields and response bytes. Support standard and extension methods without consuming irrelevant uploads. Tests cover wire output, HEAD, pipelines and exact case selection.

Validation: all branch checks passed. Ran 329 tests in 129.466s; OK
(cherry picked from commit 252861d9c8)
2026-09-29 19:03:23 +08:00
ldm0 dd4111042d fix(wpt): validate form submission fixture bodies
Serve the form-submission body checker for GET, HEAD and POST. Preserve its exact URL-encoded and plain-text checks and MIME-aware multipart field parsing, including duplicate fields, file parts and transfer-encoding boundaries.

(cherry picked from commit 83c8955175)
2026-09-29 19:03:23 +08:00
ldm0 28a861f8d4 fix(wpt): serve Fetch preflight state fixtures
Serve Fetch preflight and stash cleanup endpoints with method/header validation and shared request state. Preserve repeated query and origin values, exact resource namespaces and immediate responses for unused uploads.

(cherry picked from commit 807abbe05b)
2026-09-29 19:03:23 +08:00
ldm0 e5ac01642f fix(wpt): serve service worker import and update fixtures
Model service worker script redirects, versioned imports and update response sequences, including file-based and installation updates. Preserve request methods, cache metadata, raw script bytes and per-resource state shared across fixture origins.

(cherry picked from commit 5d0ddf013b)
2026-09-29 19:03:23 +08:00
ldm0 3ef21f694e fix(wpt): serve service worker registration error fixtures
Consolidate #621 with its fixture-resource initialization correction. Preserve remote-context handler selection from main.
2026-09-29 19:03:23 +08:00
ldm0 862bd53e87 fix(wpt): serve XHR response header fixtures
Model xhr/resources/headers.py with its duplicate, empty, cookie and non-ASCII response headers. Include HEAD behavior and precise fixture discovery regression coverage.

(cherry picked from commit 8557f41b0c)
2026-09-29 19:03:23 +08:00
ldm0 883f3f0c8d fix(wpt): serve XHR PUT and wildcard preflight fixtures
Consolidate #622, including its fixture-resource test correction, alongside the XHR network-error handlers.
2026-09-29 19:03:23 +08:00
ldm0 e11344f65c fix(wpt): model XHR network error fixtures
Serve malformed chunk framing and the upstream infinite redirect loop instead of Python source. Preserve raw partial body delivery, origin and query parameters, HEAD semantics, and exact fixture discovery.

Source: 0de7826105
(cherry picked from commit 0f4acf2725)
2026-09-29 19:03:23 +08:00
ldm0 967c9de888 fix(wpt): keep loopback host templates tied to the primary domain
Consolidate #552 and #938 on top of the IDNA and nested-domain support already in main. Preserve the requesting host for location templates and use web-platform.localhost in the cross-engine runner.
2026-09-29 19:03:23 +08:00
ldm0 e391d0924f fix(wpt): parse fixture response pipes like wptserve
Tokenize pipe commands with wptserve escape, argument, and repeated-query rules. Return HTTP errors for malformed pipes and preserve ordered header operations without response header injection.

Source: 232701464d
(cherry picked from commit 90258a7da8)
2026-09-29 19:03:23 +08:00
ldm0 20746549c8 fix(wpt): expand IDNA and nested host templates
Expand WPT domain and host templates for configured Unicode labels, nested subdomains and alternate hosts using IDNA output. Leave unknown template keys and non-template response bytes unchanged. Tests exercise response bodies, headers and one-pass request substitutions.

Validation: all branch checks passed. Ran 324 tests in 125.691s; OK
2026-09-29 12:05:40 +08:00
ldm0 6108e3eda5 fix(wpt): support remote context executors and dispatcher queues
Support remote-context executor pages and dispatcher queues, including atomic FIFO messages, request-header forwarding, CORS and response pipes. The branch includes the minimal shared response/body helpers it needs and does not depend on the iframe-stash branch. Tests cover wire behavior, concurrent queue operations and case selection.

Validation: all branch checks passed. Ran 336 tests in 134.129s; OK
2026-09-29 11:23:31 +08:00
ldm0 82e4533ae1 fix(wpt): honor common redirect CORS opt-in
Require enable-cors and a nonempty Origin before exposing CORS response headers from common/redirect.py. Preserve the first status and Location values, handle extension methods, and respond without waiting for unused uploads or adding a Content-Length header.

Validation: 580 Python tests passed with 32 workers; 1296 HTTP responses matched official wptserve for status, body, and 15 response fields. New regression tests fail on the unmodified main baseline.

Source-commit: 99b528aece
2026-09-29 03:16:12 +08:00
ldm0 d299588b68 Split WPT cross tests by responsibility 2026-09-28 18:40:05 +08:00