2.4 KiB
2.4 KiB
浏览器验证工具(零依赖)
这些脚本用 Node 内置的 WebSocket 直接讲 CDP(Chrome DevTools Protocol),
不需要 puppeteer/playwright 这类依赖。目的只有一个:给"页面里到底发生了什么"留下证据,
因为像素和截图的判断在这套环境里不可靠(模型读不了图,readPixels 在合成后会返回清空缓冲)。
inspect-page.mjs —— 单页检查
CHROME=/root/.cache/ms-playwright/chromium-1223/chrome-linux64/chrome
tsx scripts/browser/inspect-page.mjs "$CHROME" \
"http://127.0.0.1:5173/map.html?data=samples/fixtures" \
scripts/browser/checks/map-save-load.js --screenshot /tmp/map.png
它会启动一个 headless Chromium(SwiftShader 软件 WebGL2),打开 URL,等待页面加载, 把 check 脚本的返回值打印成 JSON,可选截图。
many-pages.mjs —— N 页同时跑(联机用)
tsx scripts/browser/many-pages.mjs "$CHROME" \
"http://127.0.0.1:5173/net.html?data=samples/fixtures&ws=ws://127.0.0.1:8787&peers=3&peer=0" \
"http://127.0.0.1:5173/net.html?data=samples/fixtures&ws=ws://127.0.0.1:8787&peers=3&peer=1" \
"http://127.0.0.1:5173/net.html?data=samples/fixtures&ws=ws://127.0.0.1:8787&peers=3&peer=2" \
--seconds 20 --shot /tmp/coop
每一页是一个独立的 Chromium 实例(标签页级复用在这套 CDP 流程里会把两次导航混在一起,
曾经导致"两页都跑成了 peer 0"这种假象)。它按页分发不同的方向键,让每个角色只受本页按键驱动,
结束时打印每页的 window.__d2web* 状态。判定靠状态字段,不靠看图。
checks/ —— 页面内脚本
| 文件 | 目标页面 | 做什么 |
|---|---|---|
map-save-load.js |
map.html |
走位砍怪 → 存档 → 继续跑 → 读档,比较存档点与恢复后的位置/击杀/金币/地面/等级 |
walk-state.js |
walk.html |
读真实 MPQ(暗黑1 spawn.mpq)后的就绪状态、tick、drawCalls、glError |
net-state.js |
net.html |
单机模式的状态:世界 tick、角色数、怪物数、tps |
act-state.js |
acts.html(?live=1) |
读归档路径:归档是否读入、DS1 象限、格数、瓦片引用缺失数、图集尺寸,以及按键后的位移与朝向 |
act-pack-state.js |
acts.html(默认) |
资源包路径:是否走 pack、首帧装了几页(证明懒加载)、出画面毫秒数、按键位移与朝向 |