验证 pardonned 的变更
静态 Astro 站点 — 没有服务器运行时。在真实的浏览器中针对构建后的 dist/ 目录进行验证。
构建与服务
pnpm build # 需要 data/pardonned.db(参见 CLAUDE.md)
cd dist && python3 -m http.server 8123 --bind 127.0.0.1 # 在后台运行
驱动
playwright 已经是一个 devDependency(被爬虫使用),并且已经安装了 Chromium — 在仓库根目录编写一个一次性的 .mjs 文件(这样 node 可以从 node_modules 解析 playwright),用 node 运行,用完后删除。
关键流程位于页面上的内联脚本中(例如 /search/ 的过滤/排序/分页状态全部在客户端处理,通过 history.replaceState 同步到 URL 参数)。
注意事项
- PostHog 存根问题: 构建后的页面嵌入了真正的 PostHog 代码片段,它会执行
window.posthog = e,并覆盖通过addInitScript安装的任何存根。要观察posthog.capture的调用,需要在加载后打补丁:page.evaluate(() => { window.posthog = { ...window.posthog, capture: (n, p) => window.__ev.push({n, p}) } })。 - /search 上的窗口分页: 从第 1 页只能点击第 1、2、…、最后一页。要到达深层页面,可以通过 URL 中的
?page=N加载,或者反复点击“下一页”。 - Astro 开发模式与构建模式:
pnpm dev也可以工作,但 URL 状态行为应该针对生产构建进行验证,因为内联脚本才是真正随产品发布的。