fix: resolve the 12 remaining browser compatibility failures - #731
lanyue-llk wants to merge 8 commits into
Conversation
50b81ee to
7ac5464
Compare
lanyue-llk
left a comment
There was a problem hiding this comment.
已对照 #640 的审查关注点检查协议边界、默认行为与生命周期,并核对本 PR 的改动及 CI。下面两处会影响新增 Inspector 接口的实际客户端使用;其余输入、下载和绘制路径未发现足以评论的确定性回归。
lanyue-llk
left a comment
There was a problem hiding this comment.
复查最新提交:上轮两条 Inspector 评论对应的单会话行为已修复。Rust 结构整体符合仓库既有风格;以下两处是可定位的功能边界,另有一处新增状态没有生产用途。
lanyue-llk
left a comment
There was a problem hiding this comment.
复查最新提交的跨目标状态、分块模糊、Inspector、输入及下载链路。上一轮三项修复在当前代码和新增测试覆盖的场景下成立;下面这处是浏览器范围状态的后续生命周期缺口。
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. |
Spider Bench A/B✅ All benchmark browser service runs completed; results are informational. Public HEAD: 179 / 240 rows; 37 / 48 sites produced rows; 11 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.536, 3.038, 4.539, 6.541, 8.042, 9.544, 11.045, 12.547, 14.048, 15.549, 17.551, 19.051, 20.552, 22.054, 23.554, 25.056, 26.558, 28.06, 28.561, 30.064, 31.566, 33.067, 34.569, 36.071, 37.573, 39.075, 40.576, 41.077, 42.579, 44.08, 45.582, 47.084, 48.585, 50.085, 52.087, 53.589, 55.09, 55.591]
y-axis "CPU percent" 0 --> 500
line [125.9, 115.86, 123.87, 171.62, 175.89, 85.97, 175.53, 119.74, 75.99, 153.64, 2, 2, 113.75, 29.99, 39.97, 89.97, 137.91, 109.75, 101.82, 141.68, 107.97, 131.81, 101.86, 23.98, 65.96, 53.85, 0, 15.99, 115.93, 95.89, 4, 41.97, 116.07, 135.81, 79.89, 105.89, 119.92, 203.69]
xychart-beta
title "Base memory: RSS then PSS"
x-axis "Elapsed seconds" [0.034, 1.536, 3.038, 4.539, 6.541, 8.042, 9.544, 11.045, 12.547, 14.048, 15.549, 17.551, 19.051, 20.552, 22.054, 23.554, 25.056, 26.558, 28.06, 28.561, 30.064, 31.566, 33.067, 34.569, 36.071, 37.573, 39.075, 40.576, 41.077, 42.579, 44.08, 45.582, 47.084, 48.585, 50.085, 52.087, 53.589, 55.09, 55.591, 56.179]
y-axis "Memory MiB" 0 --> 500
line [11.98, 107.95, 117.13, 140.72, 148.77, 172.02, 156.21, 183.47, 167.13, 158.87, 163.54, 156.68, 137.95, 154.31, 146.24, 142.63, 149.32, 168.55, 283.8, 209.77, 203.46, 175.3, 167.55, 173.75, 148.38, 146.18, 147.84, 142.47, 143.25, 207.57, 182.16, 159.94, 162.34, 172.34, 164.51, 156.45, 147.86, 173.98, 198.52, 0]
line [8.83, 104.25, 113.6, 137.06, 145.21, 168.31, 152.51, 179.85, 163.44, 155.31, 159.99, 153.13, 134.47, 150.83, 143.23, 139.23, 145.84, 165.13, 281.76, 205.7, 200.03, 170.4, 164.1, 170.39, 144.89, 142.7, 144.35, 138.98, 139.77, 204.25, 178.44, 156.44, 159.13, 168.03, 160.88, 152.8, 144.1, 170.43, 192.98, 0]
HEADxychart-beta
title "HEAD CPU"
x-axis "Elapsed seconds" [2.54, 5.041, 7.041, 7.542, 9.544, 12.047, 14.55, 16.553, 19.056, 21.56, 24.062, 26.564, 27.065, 28.568, 31.071, 33.574, 36.077, 38.08, 40.584, 43.086, 45.589, 48.092, 50.094, 52.598, 53.098, 55.1, 57.603, 59.606, 62.11, 64.613, 67.116, 69.619, 71.621, 74.124, 76.627, 79.13, 81.131, 83.634]
y-axis "CPU percent" 0 --> 500
line [7.99, 61.99, 151.99, 207.94, 165.92, 193.84, 78.01, 131.89, 119.83, 3.99, 43.94, 111.91, 107.81, 149.71, 149.65, 123.68, 37.98, 81.94, 119.89, 6, 23.98, 2, 2, 21.94, 0, 0, 19.99, 19.95, 0, 21.98, 0, 21.98, 2, 5.99, 11.99, 145.92, 150.2, 101.71]
xychart-beta
title "HEAD memory: RSS then PSS"
x-axis "Elapsed seconds" [0.035, 2.54, 5.041, 7.041, 7.542, 9.544, 12.047, 14.55, 16.553, 19.056, 21.56, 24.062, 26.564, 27.065, 28.568, 31.071, 33.574, 36.077, 38.08, 40.584, 43.086, 45.589, 48.092, 50.094, 52.598, 53.098, 55.1, 57.603, 59.606, 62.11, 64.613, 67.116, 69.619, 71.621, 74.124, 76.627, 79.13, 81.131, 83.634, 86.009]
y-axis "Memory MiB" 0 --> 500
line [12.15, 103.38, 121.41, 149.23, 138.58, 170.37, 177.92, 171.11, 187.14, 142.38, 147.55, 152.64, 213.75, 259.18, 197.29, 166.84, 174.65, 141.43, 148.13, 176.3, 239.88, 243.35, 244.69, 243.33, 243.25, 243.25, 243.21, 242.12, 242.13, 242.13, 242.12, 242.11, 242.1, 144.5, 159.07, 142.5, 173.19, 152.47, 151.5, 0]
line [9.02, 99.93, 117.96, 145.77, 135.18, 166.88, 174.4, 168, 183.73, 138.9, 144.22, 149.15, 210.29, 255.71, 193.81, 163.43, 171.16, 137.95, 144.45, 173.06, 236.25, 239.79, 240.97, 239.61, 239.53, 239.53, 239.48, 238.39, 238.39, 238.39, 238.39, 238.39, 238.5, 140.95, 155.43, 138.85, 169.54, 148.82, 147.86, 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. |
CI Regression ReportSource CI run · source state at render:
Release regression — ✅ HEAD/base failures 0/0; raw binary +0.120642%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 — ✅ 48/48 groups passed; 535 scenariosWorkers: 4 · cumulative group time: 143.47 s · failed groups: 0
WebMainBench · 545 pages — ⚪ artifact unavailable or invalidArtifact unavailable or invalid. See the source CI run for infrastructure details. All artifact fields are parsed by the trusted default-branch renderer; missing or invalid inputs remain visible as unavailable. |
ad0df22 to
7decd0c
Compare
6764ef7 to
09188b2
Compare
7decd0c to
cf7c84a
Compare
09188b2 to
31619c6
Compare
cf7c84a to
bafea04
Compare
31619c6 to
42c1734
Compare
bafea04 to
35859cd
Compare
42c1734 to
a1dc627
Compare
a1dc627 to
e692b1f
Compare
原 372 项评测中的 12 个失败包含 10 项 Moli 实现缺陷、1 项实现与评测混合问题、1 项评测前提错误。本 PR 直接 target #640 的
codex/browser-eval-root-causes,当前基于 #640 头45f8c72e,并已将自身提交真正 rebase 到该头部;两段历史均没有 merge commit。生产修改补齐共享协议、输入、网络终态、绘制链路与样式环境所有权;未按 case ID、页面结构或客户端名称添加分支。--enable-automation限制的真实启动参数查询、窗口 bounds 查询和局部更新语义;以现有 CDP 类型返回 computed style 所需字段。net::ERR_ABORTED,使真实 Playwright 导航正确结束,文件仍完成下载并通过 checksum。Stylo 的环境变量支持单独提交至 lexmount/stylo #1,其目标是 Moli 实际消费的
moli分支。当前固定到个人 fork 的不可变 commit3d44ed30808997861946a3f4b84a20318c4d451c;该提交基于lexmount/stylo:moli@3c8bbb45,保留已有content / counter()等能力。这是样式引擎层修改,未在 JS/CSS 返回值表面替换结果。评测实现另见 Lexbench #28,基于已有 #25:复用任务级 browser_automation 配置为双方启用
--enable-automation;视口先设置 780×600/DPR 1,保留原三条宽度断言并增加视觉视口断言。原报告冻结副本曾全局添加自动化标志,当前提交已用任务级配置替代。独立的 适配器可见性 PR #29 不参与这 12 项。审查修复:
Overlay.highlightNode使用仓库现有的 CDP 类型解析完整已知参数;默认值标志与盒模型颜色一起正常高亮,需要额外绘制能力的选项(如showInfo: true、网格配置和selector)返回指明选项的协议错误。Overlay.enable在有效 target 上直接完成;hideHighlight/disable在无文档时可完成,在跨文档导航期间清理仍附着的旧页面,导航取消后高亮不会残留。本轮审查修复:浏览器级媒体与文字缩放由 BrowserContext 持有默认值,并与 Page target 覆盖值统一合成;新 target、导航和页面会话解绑都读取同一有效状态。模糊视觉分块运行同一线性预乘高斯滤镜,使 4K 截图保持在瞬时内存预算内;删除没有生产消费者的 Overlay 布尔状态。Stylo Device setter 拒绝非有限或非正缩放,并在 Stylo 仓库直接测试 CSS 环境值与输入边界。
支持边界:滚动入口目前支持一次鼠标 wheel 手势;显式定时、触摸、fling、overscroll、重复等选项返回不支持。高亮支持盒模型颜色和矩形,不接受未实现的配置。窗口沿用现有虚拟窗口模型。视觉模拟不宣称不同栅格器逐像素等同,也不改变打印输出。
历史验证证据按提交区分:前序
f8006a62b的二进制 SHA-256 为5860b4969a83de031e33ef0354203cf7554ca41249da456e35e8ba2c6e2ee343,在原始 12 项的历史批次pr731_review_12中每项 3 次、Moli 36/36 通过;Chromium 沿用此前同评测合同的 36/36 对照。当前头e692b1f7已触发远端 CI;按本轮约定只执行了cargo fmt --all和 diff 检查,未在本地编译或运行测试。审查图解与证据
完整验证报告:逐项根因、Chromium 对照与原始证据
以下为 ImageGen 生成的机制示意图;执行结果与原始证据见报告。
评测前提:自动化启动配置与显式视口
启动参数决定自动化接口是否可用;视口断言必须建立相同的 CSS 像素与 DPR 前提。
协议发现与类型化响应
域注册、分发与 Schema 使用同一数据源;响应字段满足真实客户端的类型化解析约定。
滚动事件与默认动作
滚动手势进入现有命中测试、wheel 事件取消与嵌套滚动链路。
绘制层次与实时几何
页面滤镜与 Inspector 覆盖层分别合成;高亮使用当前布局几何,不写入页面 DOM。
文字缩放:环境值、样式失效与重新计算
Moli 将缩放偏好传入 Stylo Device 并触发样式重算;Stylo 提供 env(preferred-text-scale)。只有引用该环境值的 CSS 参与缩放,普通固定字号保持原值。
下载接管与导航终态
附件下载接管导航后,导航结束与文件完成分别报告,避免客户端永远等待文档加载。