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
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.
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
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.
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.
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.
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.
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.
Cover WPT Fetch status fixture handling, including no-body statuses, preserved HTTP status metadata and redirect targets, through the actual fixture server.
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.
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.
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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.
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
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
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