Commit Graph
166 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 ac8b4983b3 test(wpt): refresh full release classifications after regression fixes
Record the complete all-profile CDP run of source 56334e8ba1 with 50 workers
and the unchanged 120-second outer deadline. Results: 14065 cases, 10370 pass,
3448 fail, 233 timeout, 7 error, 5 harness-stalled and 2 crash.

The raw report, matrix and case lists agree, with no missing or duplicate
cases. Pass count rises by 25 relative to the pre-fix release run, with no
new pass-to-nonpass transitions. Selective retries are kept separate.

Retain the observed popup disconnect and existing intermittent Trusted Types
and XHR timeouts rather than replacing classifications with retry outcomes.
Release SHA256: cfe709ab7ce25b9d919ad229e68d65335481c322a392d9c85d39a8f074ab0dfc
2026-11-11 23:34:41 +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 2353bc8312 test(wpt): refresh full release case lists
Run all 14,064 WPT cases against the fixed release binary with 50 CDP
workers, without case filters or automatic case retries.

Record 10,341 passes, 3,461 failures, 250 timeouts, seven errors, four
harness stalls and one crash. Preserve these full-run observations even
when separate paired probes pass; do not replace failures with retries.
2026-11-06 21:13:35 +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 85e1be1a49 test(wpt): refresh full cross-run case classifications
Refresh the 14,064-case Moli-only release run against WPT db95fafd1f. Preserve the raw full-run classifications, including intermittent timeout and harness-stalled results investigated separately.
2026-11-03 18:42:59 +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 cb3977d4e4 chore(wpt): refresh full wpt-cross case statuses 2026-10-30 22:16:51 +08:00
ldm0 699464bd5d test(wpt-cross): refresh cases from full post-SQLite run
Refresh classifications from the unfiltered all-profile CDP run of
14,064 cases against the release build of 909ea48c37.

Results: 10,282 pass, 3,503 fail, 246 timeout, 25 harness-stalled,
7 error, and 1 existing crash. IndexedDB has 396 pass, 46 fail,
and no timeouts; all 35 original regression cases and 660 subtests pass.

Keep the first full-run results, including two Trusted Types stalls
and the existing Worker CSP timeout. Candidate reruns passed on both
HEAD and the pre-migration baseline; subsequent neighbor runs also
passed without replacing the original full-run classifications.

Validation: full WPT Cross run, case-list/report integrity checks,
and git diff --check. No Rust source or build metadata changes.
2026-10-30 03:31:32 +08:00
ldm0 4a271e0796 test(wpt-cross): refresh SQLite migration case classifications
Refresh the full-run case lists and merge the 35 verified regression recoveries. Keep unmeasured cases at their full-run classifications.
2026-10-30 03:31:32 +08:00
ldm0 064134b6fe test(wpt): refresh baseline after readiness fixes
Refresh all case lists from the final complete Moli-only run: 14,064 entries, 10,247 passes, 3,547 failures, 239 timeouts, 23 stalled harnesses, 7 errors, and 1 crash. The three corrected crashtests now pass. IndexedDB remains 360 passing, 77 failing, and 5 timing out across 442 entries.
2026-10-29 20:11:17 +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 7f7b2c10a1 test(wpt): refresh cases after release regression verification
Run all 13,631 WPT Cross cases with the release binary from 3dc8bcef3a
against WPT db95fafd1fce, using the standard schedule and zero retries.

Record the first full-run results: 9,894 pass, 3,471 fail, 234 timeout,
23 harness-stalled, 8 error and 1 crash. The sorted status lists form
an exact partition, with no missing or duplicate cases.

Confirmed template document and SVGLength regressions were fixed in
separate commits. Compare subtest failures with the preserved 672118c9fa
release and retain the original full-run failures after bounded probes.
2026-10-28 15:07:56 +08:00
ldm0 3f78315c54 test(wpt): refresh font resource verification cases
Record the final WPT Cross classifications from Release verification
of resource-driven font loading.
2026-10-28 05:55:19 +08:00
ldm0 871d57edd3 fix(benchmark): retain browser context for native WPT input 2026-10-25 01:45:25 +08:00
ldm0 1db737df98 test(wpt): refresh cases from full release run
Run all 13631 WPT Cross cases against Release a9e54b4a0a at upstream
db95fafd1fcef8428805e41eb5705d444e8c67ce. Record 9866 pass, 3489 fail,
238 timeout, 28 harness-stalled, 9 error and 1 crash, with zero missing.

Keep original full-run statuses. Replay all 32 changed cases for three
focused rounds (96 executions) without rewriting the lists. Nine cases
changed from pass to nonpass; four stay nonpass in all focused rounds
and five vary. Preserve the two new consistent font failures and the
font-face-reject fail-to-timeout change for follow-up investigation.

Verify lists are sorted, disjoint, and exactly partition the full matrix.
Release binary SHA-256:
a388b701c7da01cc104f535d6d8fa1a89b7638bd994531fca3622e22f9afbe85
2026-10-24 20:41:57 +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 8d57e02b3c test(wpt): refresh Cases after rebasing latest main
Refresh all 13631 WPT cases at db95fafd1fcef8428805e41eb5705d444e8c67ce after rebasing the style stack and XML fork migration onto main 3ca6888b9d.

9863 pass, 3483 fail, 249 timeout, 26 harness-stalled, 9 error, 1 crash; zero missing. Lists exactly partition frozen Release 8eefbbace618edfbe851b6f2ba2a6231db214e5fbc202bf35d0e16f23d606004.

All 16 status/subtest changes versus the prior validated build were replayed against both binaries for three rounds (96 case executions). No new stable or possible flaky regression; existing variations are recorded without rewriting full-run outcomes. Root fmt, strict workspace/all-target/all-feature Clippy and complete Nextest (20427 passed, 18 skipped) pass. XML 312-case and Chromium overflow 840-case comparisons have no differences.
2026-10-21 17:55:02 +08:00
ldm0 dc1d8f90be test(wpt): refresh Cases after XML fork migration and main rebase
Refresh the complete 13631-case snapshot at WPT db95fafd1fcef8428805e41eb5705d444e8c67ce after the XML fork migration and main rebase.

9866 pass, 3487 fail, 240 timeout, 28 harness-stalled, 9 error, 1 crash; zero missing. Frozen Release SHA-256: b6408a72a6ad26dcd613ced3b0998d6fcf3c9d510d7657011057e294b1637f60.

All nine apparent case/subtest/status regressions were replayed against both frozen builds. No new stable regression; the Trusted Types navigation delta is preexisting flaky behavior. Keep the full-run statuses in these lists.
2026-10-21 17:55:02 +08:00
ldm0 a4a188d503 test(wpt): refresh Cases for standalone style upgrade 2026-10-21 17:55:02 +08:00
ldm0 b8ca3b075c test(benchmark): verify consumed-fragment styles and retention 2026-10-21 01:27:34 +08:00
ldm0 3ca6888b9d perf(style): preserve unaffected styles after consuming ordinary fragments
Extract shared invalidation from realtime layout commit dfeda25e6d. Retain original source ownership, detached-subtree cleanup, real splice ordering and structural-effect limits. Add selector/cache regressions and a normal-CLI before/after benchmark.
2026-10-20 05:52:15 +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 61790a2b2a chore(wpt): refresh release case statuses and version probe 2026-10-13 04:56:16 +08:00
ldm0 147bd6035c chore(wpt): refresh verified parent browsing-context cases
Move choose-_parent-001/002/004 to passed after receiver-based target
resolution. Each passed five isolated release runs on this main-based
branch. Refresh only these three cases and preserve all other recorded
outcomes; this is not a new full-suite run.
2026-10-12 00:20:39 +08:00
ldm0 1404fa344b perf(accessibility): avoid JSON intermediates in semantic dumps
Large semantic dumps retain a JSON object graph with allocated field names
and string node references for every AX node before formatting the output.

Build compact typed nodes with numeric references and pass them directly
from the renderer to the CLI. Keep one AX traversal for both typed nodes
and CDP payloads, converting protocol nodes individually as they are built.
Preserve omitted/empty fields, field insertion order, list markers, and
frame-root attachment order. Render text iteratively and trim in place.

Add compatibility coverage and a standalone benchmark that stages both
executables on the same filesystem, alternates runs, records peak RSS and
wall time, and rejects changes to dump output bytes.

Against main at 5f5e1fff3 on a generated 40,000-row list (three interleaved
runs, medians):
- semantic_tree_text: 718.42 -> 390.96 MiB; 2.919 -> 2.204 s.
- semantic_tree: 815.71 -> 483.81 MiB; 2.484 -> 2.369 s.
- markdown control: 95.52 -> 95.59 MiB; 0.895 -> 0.913 s.

A generated 200,000-row list also completes with identical bytes (one run):
- semantic_tree_text: 3473.02 -> 1775.07 MiB; 13.245 -> 10.015 s.
- semantic_tree: 3803.45 -> 2137.26 MiB; 12.626 -> 10.397 s.

JSON/text comparisons also match the baseline on a mixed fixture containing
hidden/ignored nodes, form values, list markers, shadow DOM, and child frames.
These generated fixtures are independent of the external MOL-269 evidence.

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast (19,885 passed, 17 skipped)
- cargo build --release -p moli

Refs: MOL-269
2026-10-11 17:37:40 +08:00
ldm0 77f70f6e30 chore(wpt): refresh full release case status lists
Refresh all-profile WPT Cross lists from Moli 1.1.16 release at 23c6bb5754
against WPT db95fafd1f, using CDP with 50 workers. Each of 13,631 cases
ran once: 9,674 pass, 3,656 fail, 253 timeout, 37 harness-stalled,
10 error and 1 crash. Pass count rises by 86 (132 gained, 46 lost).

Review all 46 lost passes against the previous snapshot's binary:
41 stable version regressions, 2 existing flaky cases, 1 existing runner
readiness race and 2 cases failing in both versions. Preserve original
full-run outcomes in the lists. Validate exact report agreement, sorted
disjoint coverage and no missing cases; git diff --cached --check passes.
2026-10-11 09:12:27 +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 4ce0b82a45 chore(wpt): refresh cases after retired Window query fix 2026-10-04 01:38:57 +08:00
ldm0 5fee158929 chore(wpt): refresh cases after callback realm fix
Run the 451451cec release against WPT db95fafd1f with the full all profile,
CDP mode, and 50 workers. Record all 13,631 executed cases: 9,583 passed,
3,724 failed, 259 timed out, 10 errored, 1 crashed, and 54 stalled.

Both Promise and both Wasm entry-settings regressions now pass in the full
run and in all five focused release rounds. Keep the other original full-run
statuses, including errors and intermittent failures; diagnostic comparisons
with main and the previous release do not replace snapshot results.

Audit confirms every raw result agrees with the engine report, matrix, and
eight sorted, disjoint status lists, with no missing or unexecuted cases.
2026-10-04 01:38:57 +08:00
ldm0 452d385891 test(wpt): refresh cases after rebasing global scope fixes
Run the unfiltered all profile with release Moli 1.1.12 built from
0c5f83969f after rebasing onto main
8f7598a30f, using WPT
db95fafd1fcef8428805e41eb5705d444e8c67ce and 50 CDP workers.

Complete all 13,631 cases: 9,578 pass, 3,730 fail, 261 timeout, 9 error,
one crash and 52 harness-stalled. Against main's lists, 11 cases gain pass
and 16 lose pass, for a net decrease of five. Preserve the raw full-run
outcomes.

Validate the unchanged case set and exactly one recorded result per case.
Raw live results, engine output, matrix and all eight sorted, disjoint,
exhaustive status lists agree. No setup errors, missing cases, unknown
statuses or unexecuted recovery placeholders. git diff --check passes.

Check all 16 pass losses against the same release main source and WPT.
Four Promise/Wasm entry tests reproduce a source regression: HEAD times
out in 8/8 paired trials while main passes 8/8. The callback retirement
guard added in 77d2700c6 is the cause; a diagnostic-only fallback restores
all four in 3/3 trials. Keep these failures in the raw timeout list.

Nine losses also fail on main; two original failures remain unreproduced.
rel-attribute-clearing remains suspicious (HEAD 3/28 failures, main 0/28).
Filtered validation does not alter this full-run snapshot.
2026-10-04 01:38:57 +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 8f7598a30f test(wpt): refresh full release case status lists
Run the unfiltered all profile with release Moli 1.1.12 built from
cbb41950af, using WPT
db95fafd1fcef8428805e41eb5705d444e8c67ce and 50 CDP workers.
All 13,631 cases have exactly one recorded Moli attempt.

Moli: 9,583 pass, 3,727 fail, 259 timeout, 9 error, 1 crash,
and 52 harness-stalled. The case set matches the previous refresh;
51 cases gain pass and eight lose pass, for a net gain of 43.
Keep the raw full-run outcomes.

Validate all eight status lists against the raw results and matrix:
sorted, disjoint, exhaustive, with no setup errors, missing cases,
unknown statuses, or unexecuted recovery placeholders.
git diff --check passes.
2026-10-03 13:38:59 +08:00
ldm0 d92d4da858 test(wpt): refresh cases after MIME fixes
Run the full 13,631-case profile on source 112a97e61 with Moli and Chromium
145.0.7632.116 at parallelism 50, using WPT db95fafd1fcef8428805e41eb5705d444e8c67ce.
The case set and fixed scheduling order match the previous full run.

Moli: 9,540 pass, 3,704 fail, 263 timeout, 61 error, 10 crash, 53 harness-stalled.
Chromium: 11,388 pass, 1,897 fail, 242 timeout, 16 error, 18 crash, 70 harness-stalled.
All three JSON module regressions pass on both engines. Relative to 7d9a0a98c,
11 cases gain pass and five lose pass, for a net increase of six.

Keep raw full-run outcomes. Four pass losses pass once on both frozen binaries
in focused diagnostics; SharedWorker-extendedLifetime fails identically in
all three focused runs on each binary, including the pre-fix build.

Validate complete per-engine execution, exact raw/matrix agreement, and sorted,
disjoint, exhaustive status lists. No missing cases or recovery placeholders.
2026-09-29 23:17:46 +08:00