Skip to content

fix(wpt): misc wpt fixes - #217

Open
ldm0 wants to merge 673 commits into
mainfrom
wpt-misc-fix
Open

ldm0 wants to merge 673 commits into
mainfrom
wpt-misc-fix

Conversation

@ldm0

@ldm0 ldm0 commented Aug 25, 2026

Copy link
Copy Markdown
Member

No description provided.

@ldm0
ldm0 force-pushed the wpt-misc-fix branch 2 times, most recently from 1553163 to cfec497 Compare August 26, 2026 19:06
@github-actions

github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown

Spider Bench A/B

✅ All benchmark browser service runs completed; results are informational.

Public HEAD: 184 / 240 rows; 38 / 48 sites produced rows; 10 unexpected empty sites.

✅ Deterministic fixture contract is clean.

Common ancestor db615d78ebb7 → HEAD fe67c3e589ec; benchmark order: head-first; workflow: success.

Public 48-site run · informational

Metric Base HEAD Δ
Run status success success
Extracted rows / contract 184 / 240 184 / 240 0 (0.00%)
Contract fill 76.67% 76.67% 0.00 pp (0.00%)
Sites with rows 38 / 48 38 / 48 0 (0.00%)
Sites meeting row contract 36 / 48 36 / 48 0 (0.00%)
Unexpected empty sites 10 10 0 (0.00%)
Partial-row sites 2 2 0 (0.00%)
Site outcomes extracted: 37; HTTP error + rows: 1; empty: 7; HTTP error + empty: 1; snapshot error + empty: 2 extracted: 36; HTTP error + rows: 2; empty: 7; HTTP error + empty: 1; snapshot error + empty: 2
Observed duration 55.59 s 56.54 s +0.96 s (+1.72%)
Estimated CPU 52.05 s 54.48 s +2.43 s (+4.66%)
Peak PSS 271.05 MiB 279.54 MiB +8.50 MiB (+3.13%)
Peak RSS 275.02 MiB 281.47 MiB +6.45 MiB (+2.35%)
Peak threads 27 27 0 (0.00%)
Mismatched sites 0 0 0
Timeout with items 0 0 0
Category rows Base HEAD Δ
news 35 / 40 35 / 40 0
stocks 20 / 40 20 / 40 0
tech 35 / 40 35 / 40 0
sports 27 / 40 27 / 40 0
games 37 / 40 37 / 40 0
life 30 / 40 30 / 40 0

Public-site content, timing, and memory are noisy. This single A/B run reports evidence only; site outcome counts explain missing rows without treating them as a deterministic regression.

CPU and memory timelines

These are bounded 40-point views of the same complete process-tree samples used by the HTML report. CPU uses 100% per occupied logical core; memory lines are RSS first and PSS second when complete PSS samples are available.

Base

xychart-beta
    title "Base CPU"
    x-axis "Elapsed seconds" [1.535, 3.038, 4.539, 5.539, 6.039, 7.041, 7.541, 9.544, 11.046, 12.548, 14.05, 15.552, 16.553, 17.054, 18.557, 20.059, 21.562, 23.064, 24.565, 26.067, 28.069, 29.57, 31.07, 32.573, 34.076, 35.577, 37.079, 38.581, 40.081, 41.582, 43.084, 44.585, 46.586, 48.088, 49.59, 51.092, 52.593, 54.094]
    y-axis "CPU percent" 0 --> 200
    line [119.93, 103.86, 101.97, 173.93, 165.98, 163.93, 143.85, 181.51, 105.91, 127.9, 123.92, 21.94, 0, 3.99, 0, 2, 81.91, 85.81, 55.99, 91.9, 131.74, 105.86, 147.88, 163.7, 53.84, 109.9, 149.82, 53.87, 73.95, 9.99, 119.98, 91.89, 13.99, 145.86, 173.53, 99.75, 117.85, 167.85]
Loading
xychart-beta
    title "Base memory: RSS then PSS"
    x-axis "Elapsed seconds" [0.035, 1.535, 3.038, 4.539, 5.539, 6.039, 7.041, 7.541, 9.544, 11.046, 12.548, 14.05, 15.552, 16.553, 17.054, 18.557, 20.059, 21.562, 23.064, 24.565, 26.067, 28.069, 29.57, 31.07, 32.573, 34.076, 35.577, 37.079, 38.581, 40.081, 41.582, 43.084, 44.585, 46.586, 48.088, 49.59, 51.092, 52.593, 54.094, 55.586]
    y-axis "Memory MiB" 0 --> 500
    line [12.17, 96.08, 128.75, 135.58, 162.91, 147.35, 157.47, 162.92, 179.64, 174.48, 178.83, 180.09, 164.43, 142, 141.35, 143.23, 143.66, 152.47, 147.27, 136.58, 149.64, 158.57, 275.02, 205.3, 229.3, 157.7, 184.59, 142.31, 139.31, 143.76, 139.21, 206.42, 186.67, 157.16, 182.35, 164.13, 157.1, 153.29, 190.61, 0]
    line [9.5, 93.09, 126.02, 132.62, 159.92, 144.45, 154.53, 160.1, 176.35, 170.25, 175.44, 176.82, 161.09, 138.66, 138.01, 139.88, 140.31, 148.14, 143.93, 133.23, 146.41, 155.32, 271.05, 201.6, 226.14, 154.42, 181.21, 139.01, 135.94, 140.44, 135.92, 201.38, 183.37, 154.28, 179.1, 161.61, 153.63, 149.82, 187.1, 0]
Loading

HEAD

xychart-beta
    title "HEAD CPU"
    x-axis "Elapsed seconds" [1.535, 3.038, 4.541, 6.043, 6.543, 7.044, 8.045, 9.546, 11.047, 12.548, 14.048, 15.55, 17.052, 17.553, 19.056, 20.557, 22.058, 23.56, 25.062, 26.564, 28.565, 30.067, 31.57, 33.072, 34.573, 36.075, 37.578, 39.08, 41.082, 42.583, 44.086, 45.588, 47.089, 48.592, 50.094, 52.096, 53.598, 55.1]
    y-axis "CPU percent" 0 --> 500
    line [135.83, 133.71, 103.76, 193.97, 161.9, 137.71, 139.99, 131.87, 173.89, 131.87, 123.96, 117.75, 2, 2, 99.78, 125.97, 4, 119.8, 101.79, 155.94, 105.97, 105.74, 103.72, 105.88, 134.05, 125.87, 55.93, 97.96, 53.96, 113.82, 2, 61.95, 11.99, 117.85, 147.85, 79.96, 97.94, 161.84]
Loading
xychart-beta
    title "HEAD memory: RSS then PSS"
    x-axis "Elapsed seconds" [0.035, 1.535, 3.038, 4.541, 6.043, 6.543, 7.044, 8.045, 9.546, 11.047, 12.548, 14.048, 15.55, 17.052, 17.553, 19.056, 20.557, 22.058, 23.56, 25.062, 26.564, 28.565, 30.067, 31.57, 33.072, 34.573, 36.075, 37.578, 39.08, 41.082, 42.583, 44.086, 45.588, 47.089, 48.592, 50.094, 52.096, 53.598, 55.1, 56.543]
    y-axis "Memory MiB" 0 --> 500
    line [11.76, 119.93, 129.07, 142.39, 149.07, 156.39, 171.31, 158.98, 185.7, 169.29, 158.3, 182.15, 176.12, 158.88, 135.76, 141.04, 155.05, 135.88, 146.39, 145.52, 162.57, 281.47, 205.48, 178.82, 175.47, 181.36, 152.23, 145.15, 150.34, 155.14, 158.92, 143.94, 166.43, 141.55, 153.78, 148.41, 153.19, 155.26, 190.38, 0]
    line [9.18, 117.05, 126.22, 139.48, 146.3, 153.48, 168.57, 156.05, 182.64, 166.2, 155.5, 179.34, 173.01, 155.92, 132.8, 138.07, 152.23, 132.92, 143.43, 142.84, 161.42, 279.54, 202.57, 175.92, 172.52, 178.27, 149.27, 142.2, 147.48, 152.18, 155.96, 140.98, 163.47, 138.59, 150.85, 145.46, 150.25, 152.31, 187.57, 0]
Loading

Deterministic fixture · required contract

The fixture exercises 15 routes: 8 are expected to emit rows and 7 intentionally exercise empty, loading, or timeout behavior.

Metric Base HEAD Δ
Run status success success
Extracted rows / contract 40 / 40 40 / 40 0 (0.00%)
Contract fill 100.00% 100.00% 0.00 pp (0.00%)
Sites with rows 8 / 15 8 / 15 0 (0.00%)
Sites meeting row contract 15 / 15 15 / 15 0 (0.00%)
Unexpected empty sites 0 0 0
Partial-row sites 0 0 0
Site outcomes extracted: 7; HTTP error + rows: 1; empty: 3; timeout + empty: 4 extracted: 7; HTTP error + rows: 1; empty: 3; timeout + empty: 4
Observed duration 19.88 s 19.90 s +0.01 s (+0.06%)
Estimated CPU 0.42 s 0.43 s +0.01 s (+2.38%)
Peak PSS 58.26 MiB 60.37 MiB +2.10 MiB (+3.61%)
Peak RSS 60.79 MiB 62.74 MiB +1.95 MiB (+3.21%)
Peak threads 18 18 0 (0.00%)
Mismatched sites 0 0 0
Timeout with items 0 0 0

Full HTML, JSON, CSV, logs, and page snapshots: workflow run and full spider-bench-results artifact.

The public-web A/B is informational. The exact HEAD fixture contract runs as a separate required CI check; timing and public-site content deltas remain non-blocking.

@github-actions

github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown

Sequential Navigation Soak A/B

✅ HEAD completed the 200-navigation resilience and memory observation.

One browser process, one target, and one CDP session navigate CSDN → SegmentFault → Huaban → example.com repeatedly. This run issued 200 Page.navigate commands per binary.

Common ancestor db615d78eb → HEAD fe67c3e589; benchmark order: head-first; workflow: success.

Session resilience

Metric Base HEAD
Attempted / planned 200 / 200 200 / 200
Direct observable pass 200 / 200 200 / 200
Failures / recovered 0 / 0 0 / 0
Recovery failures 0 0
Lifecycle order violations 0 0
Network order violations 0 0
Wall time 269.1 s 276.0 s

A public-page failure is reported separately from an unrecoverable session. The soak requires all navigation attempts, zero failed recovery, zero lifecycle/network ordering violations, and complete resource evidence.

Process-tree memory

Metric Base HEAD Δ
Boundary samples 200 200 0
Boundary RSS samples 200 200 0
Boundary PSS samples 200 200 0
Periodic peak RSS 214.1 MiB 222.1 MiB +8.0 MiB
Periodic peak PSS 211.2 MiB 219.4 MiB +8.2 MiB
RSS · first 10 avg 164.5 MiB 167.4 MiB +3.0 MiB
RSS · last 10 avg 163.0 MiB 174.7 MiB +11.8 MiB
RSS · last − first window -1.5 MiB +7.3 MiB +8.8 MiB
RSS · warm slope / 100 nav +2.6 MiB +5.5 MiB +2.9 MiB
PSS · first 10 avg 161.8 MiB 164.2 MiB +2.4 MiB
PSS · last 10 avg 159.8 MiB 171.9 MiB +12.1 MiB
PSS · last − first window -2.0 MiB +7.7 MiB +9.7 MiB
PSS · warm slope / 100 nav +2.5 MiB +5.7 MiB +3.2 MiB
Peak file descriptors 61 61 0
Peak threads 31 31 0

HEAD memory by 50-navigation quarter

HEAD range Avg RSS Final RSS Peak RSS Avg PSS Final PSS Peak FD
1–50 165.9 MiB 158.7 MiB 211.0 MiB 162.7 MiB 155.7 MiB 55
51–100 169.0 MiB 154.2 MiB 205.6 MiB 166.2 MiB 151.5 MiB 56
101–150 171.4 MiB 161.8 MiB 198.2 MiB 168.7 MiB 159.0 MiB 57
151–200 174.6 MiB 159.0 MiB 222.0 MiB 171.8 MiB 156.3 MiB 57

Raw reports and per-navigation boundary samples: workflow run and full sequential-navigation-soak-results artifact.

Public-site timing and memory are observational. Use the A/B deltas and trend shape as evidence, not as a deterministic performance threshold.

@ldm0
ldm0 force-pushed the wpt-misc-fix branch 2 times, most recently from 859c592 to 97d8138 Compare August 28, 2026 18:02
@github-actions

github-actions Bot commented Aug 28, 2026

Copy link
Copy Markdown

CI Regression Report

Source CI run · source state at render: in_progress · artifacts: 5/5

Check Status Signal
Release regression HEAD/base failures 0/0; raw binary +1.341543%
Frontend differential 1,014/1,020 cases matched; 6 issues
Agent episodes 8/8 Moli episodes passed; 0 failures
Runtime/CDP contracts 26 contract cases; 0 failures
CDP smoke 45/48 groups passed; 510 scenarios
Release regression — ✅ HEAD/base failures 0/0; raw binary +1.341543%

Package and image size

Metric Base HEAD Delta Delta %
Raw binary 146.18 MiB 148.14 MiB +1.96 MiB +1.341543%
Stripped binary 100.32 MiB 101.97 MiB +1.65 MiB +1.647099%
gzip binary 50.03 MiB 50.84 MiB +824.09 KiB +1.608507%
Rootfs 153.08 MiB 155.04 MiB +1.96 MiB +1.282297%
gzip rootfs 58.80 MiB 59.69 MiB +917.79 KiB +1.524326%

Startup latency and PSS

Case Base p50 HEAD p50 Delta Base PSS HEAD PSS Delta
Serve ready 27.29 ms 27.16 ms −0.13 ms 4.57 MiB 4.97 MiB +416.50 KiB
CDP first page 50.65 ms 50.66 ms +0.01 ms 4.38 MiB 4.60 MiB +231.00 KiB
CDP warm page 12.90 ms 13.08 ms +0.18 ms 48.26 MiB 49.61 MiB +1.35 MiB
CLI about:blank 14.45 ms 14.58 ms +0.13 ms 4.00 MiB 4.72 MiB +733.00 KiB
CLI local JS 17.81 ms 18.37 ms +0.56 ms 3.74 MiB 5.00 MiB +1.26 MiB

Concurrency matrix

Concurrency Base p50 HEAD p50 Delta Base PSS HEAD PSS Delta HEAD failures Unstable B/H
1 15.31 ms 17.33 ms +2.02 ms 1.13 MiB 1020.00 KiB −136.00 KiB 0 0/0
5 19.51 ms 22.71 ms +3.20 ms 13.15 MiB 13.12 MiB −31.00 KiB 0 0/0
10 18.61 ms 24.68 ms +6.06 ms 14.48 MiB 17.07 MiB +2.59 MiB 0 0/0
25 19.33 ms 22.91 ms +3.58 ms 12.55 MiB 19.03 MiB +6.48 MiB 0 0/0
100 20.05 ms 22.32 ms +2.28 ms 13.21 MiB 14.32 MiB +1.11 MiB 0 0/0
Frontend differential — ❌ 1,014/1,020 cases matched; 6 issues
Match DOM mismatch Diagnostic mismatch Moli error Reference error Infrastructure error Mismatched frames Duration
1,014 6 0 0 0 0 21 6m 25.27s

First failing cases

  • react/parser-document-boundaries/domparser-xml-errorsdom_mismatch · first difference $.frames[3].dom.children[1].children[2].children[1].children[0].children[1].children[0].children[0].children[1].children[0].nodeValue · frames platform-2, ready, settled
  • react/history-navigation-boundaries/child-context-historydom_mismatch · first difference $.frames[2].dom.children[1].children[2].children[1].children[0].children[1].children[0].children[0].children[0].contentDocument.children[1].children[2].children · frames platform-1, platform-2, ready +1 more
  • vue/parser-document-boundaries/domparser-xml-errorsdom_mismatch · first difference $.frames[3].dom.children[1].children[2].children[1].children[0].children[1].children[0].children[0].children[1].children[0].nodeValue · frames platform-2, ready, settled
  • vue/history-navigation-boundaries/child-context-historydom_mismatch · first difference $.frames[2].dom.children[1].children[2].children[1].children[0].children[1].children[0].children[0].children[0].contentDocument.children[1].children[2].children · frames platform-1, platform-2, ready +1 more
  • angular/parser-document-boundaries/domparser-xml-errorsdom_mismatch · first difference $.frames[3].dom.children[1].children[2].children[1].children[0].children[1].children[0].children[0].children[1].children[0].nodeValue · frames platform-2, ready, settled
  • angular/history-navigation-boundaries/child-context-historydom_mismatch · first difference $.frames[2].dom.children[1].children[2].children[1].children[0].children[1].children[0].children[0].children[0].contentDocument.children[1].children[2].children · frames platform-1, platform-2, ready +1 more
Agent episodes · Moli vs Chromium — ✅ 8/8 Moli episodes passed; 0 failures
Fast contract Episodes Passed Assertions Ready p50 Episode p50
Moli 8 8 47/47 3.99 ms 25.87 ms
Chromium 8 8 47/47 276.06 ms 82.73 ms
Operation p50 Chromium Moli Delta Delta %
navigate 42.49 ms 7.16 ms −35.32 ms −83.15%
observe 0.85 ms 0.86 ms +0.01 ms +1.32%
fill 4.05 ms 3.27 ms −0.78 ms −19.35%
click 4.21 ms 3.69 ms −0.52 ms −12.38%
Idle-resource episode Peak RSS Peak PSS Average CPU Peak CPU Peak processes Sampler
Moli 65.03 MiB 62.33 MiB 0.67% 10.01% 1
Chromium 1281.87 MiB 333.22 MiB 1.83% 91.50% 13 ⚠️ PSS partial
Runtime and CDP session contracts — ✅ 26 contract cases; 0 failures
Suite Cases Failures Median case p50 Median case p95 Median peak PSS p50
Synthetic fetch 13 0 17.64 ms 18.27 ms 684.00 KiB
Long-lived CDP session 13 0 19.93 ms 20.42 ms
CDP smoke — ❌ 45/48 groups passed; 510 scenarios

Workers: 4 · cumulative group time: 144.82 s · failed groups: 3

Slowest group Scenarios Duration Status
target-lifecycle 24 16.89 s
multi-page 45 11.48 s
chromium-cdp 56 11.47 s
dom-input 27 10.89 s
layout-screenshot 5 7.75 s

Failed groups

  • action-windowfailed · Traceback (most recent call last): File "/__w/moli/moli/moli-cdp-smoke/moli_cdp_smoke/runner.py", line 705, in async_main await _await_group( File "/__w
  • browser-semanticsfailed · worker exited with 1
  • puppeteerfailed · Traceback (most recent call last): File "/__w/moli/moli/moli-cdp-smoke/moli_cdp_smoke/runner.py", line 711, in async_main await _await_group( File "/__w

All artifact fields are parsed by the trusted default-branch renderer; missing or invalid inputs remain visible as unavailable.

@ldm0
ldm0 force-pushed the wpt-misc-fix branch 7 times, most recently from a97a74a to 3fb43c5 Compare September 4, 2026 10:32
@ldm0
ldm0 force-pushed the wpt-misc-fix branch 9 times, most recently from 149278f to e22fcdc Compare September 8, 2026 14:31
@ldm0
ldm0 force-pushed the wpt-misc-fix branch 6 times, most recently from a828761 to f5b6ba0 Compare September 14, 2026 12:49
ldm0 added 28 commits September 22, 2026 21:48
Run main-document dynamic inline scripts through the shared classic-script
executor in the document's main world. Keep currentScript set while parse and
runtime exceptions are synchronously reported, then restore the outer script
without propagating the exception through the inserting DOM operation.

Cover nested error handlers, thrown object identity,
re-insertion, shadow trees, borrowed child-realm insertion methods, isolated
worlds, and deferred microtasks. Remove the redundant inline load-event
scheduling entry point.
Mark the main document completely loaded after its load dispatch, even if a callback started more child work. Keep descendant completion accounting separate so later fragment navigations create their own history entry.
Use the Window holder's native realm before the ambient child dispatch marker. Promise reactions in the top realm must keep seeing top-level named properties when they run inside a child callback.
Track committed session-history positions across frames and plan classic History and Navigation API traversals against the same timeline. Preserve queued delta positions across asynchronous commits, apply forward pruning across navigables, and release deferred work after commit, cancellation, or non-displayable responses.

Synchronize CDP history resets after all realms finish pruning, and keep non-displayable responses retryable without settling the Navigation API promises.

Check the initiating document's committed sandbox policy for every affected frame. Keep committed classic History positions after frame removal while dropping removed traversal targets. Cover interleaved, cross-document, queued, mixed-API, and controlled network cases.
Set the canceled flag when aborting a navigate event during dispatch, including iframe traversal events that are not author-cancelable. Preserve the flag when a precommit handler aborts the navigation after dispatch has ended.

Keep cross-document history traversal running when stop() cancels its Navigation API event and promises. Continue checking that its original Window and Document are active before queuing the load.

Cover detachment, window.stop(), and nested navigation in both phases, plus the non-cancelable preventDefault control. Verify abort listeners, promise rejection identity, the exception realm, and cross-document restoration.

Spec: https://html.spec.whatwg.org/multipage/nav-history-apis.html#abort-the-ongoing-navigation
Spec: https://html.spec.whatwg.org/multipage/document-lifecycle.html#stop-loading
Track interception before handlers run so stop(), detachment, and
reentrant navigation settle the correct promises and retain the
committed entry.

Share settlement across Navigation and Location, run child browser
interceptions through the full lifecycle, and retain target fragment
metadata and URL rewrite eligibility.

Validation: cargo fmt --all; workspace/all-targets/all-features Clippy
with -D warnings; nextest (19611 passed, 13 skipped). Also passed 431
focused tests, 37 WPT cases and variants, 1 crashtest, and 39 Chromium
comparisons.
Reject child navigations whose URL repeats more than one committed ancestor, ignoring fragments while preserving query and host boundaries. Keep about URLs, POST requests, and history traversals exempt.

Cancel rejected load bookkeeping before fetching so recursive frames remain at initial about:blank and ancestor loads can finish. Cover Navigation and Location with a real HTTP regression and URL admission boundary cases.

Give nested lifecycle fixtures distinct query parameters so their intended unload assertions are not suppressed by recursive-frame admission.
Bind Navigation objects to native Document identity and use the initial-empty lifecycle flag instead of the URL to disable entries. Preserve initialness through document.open(), and replace the Navigation object when javascript: creates a new Document without changing its URL.

Keep underlying History and Location navigation working when Navigation entries and events are disabled. Reject explicit pushes from initial documents and preserve the required pending promises. Cover initial, srcdoc, javascript, and subsequently loaded blank documents using a fixture also compared against Chrome.

Preserve fragment changes on a retained popup Document before its queued close task runs, while continuing to abort navigation when a navigate handler closes the window.
Carry committed renderer history through browser navigation requests and
restore structured state, entry identities, and activation before new
Document scripts execute. Read the latest committed source entries when
creating the destination so state updates made during a pending response
are retained.

Keep browser traversals aligned with native Document identities, rebuild
private history ordinals for restored top-level entries, and use native
entry indices for fragment mutations after a cross-origin history prefix.

Cover structured-state restoration, pending-navigation source updates,
fragment indices, browser-owned back/forward traversal, and same-Document
realm and element preservation after WebDriver history restoration.
Allow top-level navigation owner actions from the current Document through
the in-flight navigation gate so they can cancel the previous request.
Keep exact scheduler predecessors and Page residence validation in place.

Cover an unresponsive first request replaced by page JavaScript without
further client commands, and ensure only the replacement enters history.
Collect joint-history children from the owning root document so popup iframe
navigations contribute to their own history without pruning opener entries.
Keep root commits valid before the new native Document handle is installed.

Use the existing detached-content predicate when synthesizing iframe load
events, leaving live popup and child-document frames to the native lifecycle.
Cover same-document history forks and cross-document popup traversals while
checking that the opener history is unchanged.
Plan src and srcdoc push/replace operations from the committed document,
its load state, and the initiator origin. Publish local attribute commits
to joint session history without exposing pending entries synchronously.

Preserve same-origin srcdoc replacement keys and route live popup iframe
setAttribute calls through the shared src navigation path. Cover load
phases, coalesced srcdoc writes, fragment transitions, and popup ownership.

Keep initial attribute commits lazy when there is no joint history
mutation, preserving the scheduled child realm and lifecycle boundaries.
Retain srcdoc resources by history Document identity, including the original source, base URL, policy and origin. Restore each entry URL separately and apply the current iframe sandbox flags when reconstructing the Document.

Cover top-level and popup child traversal, classic and Navigation API state, and sandbox script/origin changes.
Keep child entries and srcdoc resources with their parent Document identity
when top-level and popup Documents are replaced. Restore their original joint
history steps, avoid traversing descendants of a retiring parent, and prune
forward entries when navigation branches from an earlier step.

Preserve parser-created frame identities in navigation projections. Cover
named and unnamed frames, script-created parents, nested Documents, entry
state and identity, and interleaved multi-step traversals through CDP.
Remove duplicate navigation fixture definitions and keep the verified XHR content-type case out of the failure catalog. All 420 WPT runner tests pass.
Use the upstream native header and async response types in the branch-specific Fetch, XHR, worker, and service-worker paths. Keep local URL ByteString boundaries and route parkable images through the shared CORS redirect checks.
Initialize the history field in the upstream navigation fixture. Use the existing 8 MiB stack helper for the two deep traversal tests whose replacement-navigation path exceeds the default test-thread stack.
Keep one branded SVGElement declaration with both className and ownerSVGElement. Retain the upstream owner lookup and its broader regression coverage while removing the duplicate declaration, callback, and older test.
Keep a single copy of the identical CSP base64url and CSS alt-counter regressions already present upstream.
The public header projection already sorts and combines the internal list. Avoid applying normalization a second time in iteration and response body consumers, which removed the separator space contributed by a trailing empty field.
Construct popup load events through the intrinsic Event constructor and apply the legacy Document target override to load and pageshow. Keep dispatch paths and listener receivers on the popup Window.

Cover native interfaces, trust, cancellation, cleanup, redispatch, constructor overrides, retirement during load, and failed initial navigation without a materialized Document.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant