Repository navigation
refactor(fetch): share Body MIME extraction - #1225
Conversation
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 Public 48-site run · informational
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 timelinesThese 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. Basexychart-beta
title "Base CPU"
x-axis "Elapsed seconds" [1.035, 1.536, 2.538, 4.04, 5.042, 6.544, 7.545, 8.546, 9.047, 10.048, 11.549, 12.551, 14.053, 15.054, 16.556, 17.556, 19.058, 20.06, 21.561, 22.562, 24.063, 25.063, 26.564, 27.566, 29.067, 30.067, 31.569, 32.57, 34.071, 35.073, 35.573, 36.575, 37.577, 39.079, 40.08, 41.581, 42.583, 44.085]
y-axis "CPU percent" 0 --> 500
line [31.98, 143.72, 135.73, 127.89, 169.64, 171.85, 97.95, 199.8, 151.84, 65.9, 141.84, 143.6, 77.85, 125.97, 8, 55.99, 61.95, 137.62, 101.84, 137.92, 121.99, 148.02, 121.95, 135.88, 151.91, 105.97, 41.96, 25.99, 141.99, 15.99, 0, 75.93, 15.98, 3.99, 129.85, 143.93, 109.8, 171.79]
xychart-beta
title "Base memory: RSS then PSS"
x-axis "Elapsed seconds" [0.034, 1.035, 1.536, 2.538, 4.04, 5.042, 6.544, 7.545, 8.546, 9.047, 10.048, 11.549, 12.551, 14.053, 15.054, 16.556, 17.556, 19.058, 20.06, 21.561, 22.562, 24.063, 25.063, 26.564, 27.566, 29.067, 30.067, 31.569, 32.57, 34.071, 35.073, 35.573, 36.575, 37.577, 39.079, 40.08, 41.581, 42.583, 44.085, 44.612]
y-axis "Memory MiB" 0 --> 500
line [12.37, 89.88, 114.05, 113.66, 163.68, 175.02, 199.56, 145.54, 189.43, 182.99, 153.68, 179.6, 175.21, 151.52, 159.77, 159.83, 154.78, 146.24, 175.45, 286.95, 197.68, 217.24, 230.45, 143.78, 154.01, 167.93, 155.77, 149.4, 155.93, 219.85, 164.8, 164.73, 173.93, 174.47, 157.67, 175.53, 166.73, 160.32, 153.07, 0]
line [9.06, 86.29, 110.49, 110.25, 160.07, 171.44, 195.9, 142.05, 185.92, 179.38, 150.01, 175.94, 171.22, 147.8, 156.1, 156.16, 151.11, 142.65, 171.15, 283.31, 194.08, 213.7, 226.99, 140.34, 150.54, 164.37, 152.25, 145.68, 152.34, 216.35, 161.21, 161.14, 170.49, 170.88, 154.08, 171.88, 163.03, 157.01, 149.42, 0]
HEADxychart-beta
title "HEAD CPU"
x-axis "Elapsed seconds" [1.54, 2.54, 3.04, 4.54, 5.54, 6.04, 7.541, 9.042, 10.544, 12.045, 13.547, 14.548, 16.05, 17.551, 19.053, 20.555, 22.057, 23.56, 25.06, 26.562, 27.563, 28.063, 29.565, 31.067, 32.568, 34.071, 35.572, 37.075, 38.576, 40.077, 41.077, 42.58, 44.082, 45.584, 47.087, 48.588, 50.091, 51.592]
y-axis "CPU percent" 0 --> 200
line [113.85, 125.97, 133.96, 100, 187.95, 137.95, 184.02, 116.01, 153.86, 55.96, 139.98, 17.99, 19.99, 0, 4, 99.94, 19.99, 105.73, 103.98, 131.93, 109.93, 103.93, 119.93, 129.92, 28.03, 45.86, 77.94, 9.97, 117.89, 72.01, 11.98, 2, 135.83, 137.78, 0, 2, 57.83, 141.83]
xychart-beta
title "HEAD memory: RSS then PSS"
x-axis "Elapsed seconds" [0.038, 1.54, 2.54, 3.04, 4.54, 5.54, 6.04, 7.541, 9.042, 10.544, 12.045, 13.547, 14.548, 16.05, 17.551, 19.053, 20.555, 22.057, 23.56, 25.06, 26.562, 27.563, 28.063, 29.565, 31.067, 32.568, 34.071, 35.572, 37.075, 38.576, 40.077, 41.077, 42.58, 44.082, 45.584, 47.087, 48.588, 50.091, 51.592, 52.987]
y-axis "Memory MiB" 0 --> 500
line [12.35, 110.22, 125.01, 137.96, 144.5, 160.54, 188.74, 178.06, 196.9, 165.93, 181.29, 183.73, 165.14, 152.89, 151.87, 151.41, 169.28, 148.07, 169.38, 158.96, 196.36, 304.1, 217.91, 231.13, 163.89, 159.43, 171.68, 158.93, 153.47, 187.45, 215.75, 182.4, 161.21, 190.03, 153.88, 155.5, 155.49, 160.64, 167.57, 0]
line [9.07, 106.71, 121.7, 134.44, 139.72, 157.19, 184.55, 174.41, 193.28, 162.33, 177.66, 170.96, 161.36, 149.24, 148.21, 147.76, 165.63, 144.42, 165.46, 155.39, 192.78, 300.6, 214.46, 227.52, 159.32, 155.91, 167.98, 155.24, 149.82, 183.5, 210.88, 178.77, 157.58, 186.35, 150.28, 151.9, 151.89, 157.29, 163.94, 0]
Deterministic fixture · required contractThe fixture exercises 15 routes: 8 are expected to emit rows and 7 intentionally exercise empty, loading, or timeout behavior.
Full HTML, JSON, CSV, logs, and page snapshots: workflow run and full 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. |
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 Common ancestor Session resilience
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
HEAD memory by 50-navigation quarter
Raw reports and per-navigation boundary samples: workflow run and full Public-site timing and memory are observational. Use the A/B deltas and trend shape as evidence, not as a deterministic performance threshold. |
CI Regression ReportSource CI run · source state at render:
Release regression — ✅ HEAD/base failures 0/0; raw binary +0.000005%Package and image size
Startup latency and PSS
Concurrency matrix
Frontend differential — ✅ 1,020/1,020 cases matched; 0 issues
Agent episodes · Moli vs Chromium — ✅ 8/8 Moli episodes passed; 0 failures
Runtime and CDP session contracts — ✅ 26 contract cases; 0 failures
CDP smoke — ✅ 52/52 groups passed; 616 scenariosWorkers: 4 · cumulative group time: 182.74 s · failed groups: 0
WebMainBench · 545 pages — ✅ 545/545 completed; 0 unexpected failures
Frozen HTML · Linux · Diagnostics: All artifact fields are parsed by the trusted default-branch renderer; missing or invalid inputs remain visible as unavailable. |
Make Body.formData() and Body.blob() use the same Fetch MIME-record extraction helper instead of selecting content type through different algorithms. Preserve main’s stream-consumer machinery and timing. Window and worker regressions cover duplicate Content-Type values, invalid later MIME records, MIME serialization with preserved parameter values and unsupported FormData MIME types.
This is one independent commit extracted from the committed wpt-misc-fix snapshot (
eb8f3731cadc6927129a9b5a66df869ba04e92b1), adapted to main5fdac079e8912c7e6e79b5f915c99eed57eabf36.Validation of the exact committed tree:
cargo fmt --allcargo clippy --workspace --all-targets --all-features -- -D warningscargo nextest run --no-fail-fast: 19665 passed, 16 existing skips; 32 build jobs and 32 test threads, retries disabled. The local scheduling configuration reserves all test slots for four existing timing-sensitive tests; no new exclusions.Validated and pushed head:
b19cf34d8941a9e64ca513da2fa01909a9403fbc.The multipart regression also preserves a mixed-case boundary through MIME extraction. The first full run found an incorrect lowercase charset expectation in the new test; the exact expectation was corrected to preserve parameter value casing, as required by MIME serialization, then all mandatory gates were rerun.