# PR 文章截图步骤 本页规定宣传素材的准备顺序。隔离启动和自动化实现以 [Electron UI 自动化规范](../quality/electron-ui-automation.md#3-当前源码与隔离启动)为准, 不重复维护另一套测试机制。目前仓库没有通用的一键完整 App 截图命令;执行者需要复用或 按规范准备临时驱动,不能将下面的流程描述当作已经实现的自动化脚本。 ## 1. 确认版本和素材 从仓库根目录检查 `git rev-parse HEAD`、`git status --short`、`node --version` 和 `node -p "require('electron/package.json').version"`。依赖缺失时按 [开发与构建](../../BUILD.md)准备,不重复安装已满足的依赖。 在本轮 `review.md` 中记录目标提交、实际构建来源、平台、语言、主题、缩放和截图清单。 优先采用 1280×800 内容区、统一主题与中文界面,按演示需要调整,并记录实际尺寸。 每张图先写清要说明的动作和结果。重点 PR 优先连续演示,常规 PR 只拍需要解释的界面变化。 ## 2. 准备隔离环境 使用本轮专用临时目录,包含 profile、演示工作区、驱动和原始截图。不要复制整套私人会话。 仅使用公开或明确虚构的演示资料,凭据沿用已授权的安全配置方式,不写入文档、脚本或图片。 使用可确认属于目标版本的产物。`npm start` 只预览已有产物,不自动重建,也不自动隔离数据; `npm run dev` 同样不能代替隔离启动器。`GOODBUDDY_WORKSPACE` 只指定工作区,不隔离用户数据库。 不存在可直接假定有效的 `GOODBUDDY_TEST_MODE` 或 `GOODBUDDY_USER_DATA` 开关。 开发场景的构建方法见自动化规范;发布准备遵循[发布手册](../development/release-runbook.md), 宣传材料不自动授权本地生产构建、打包或 packaged-app 探测。没有匹配产物时记录缺口, 继续其他材料准备,不能将旧产物截图标成新版本。 ## 3. 启动与操作 按自动化规范准备独立 Node supervisor 和 Electron bootstrap: 1. 在 Electron ready 之前设置专用 `userData`、`sessionData` 和日志路径,再动态导入对应产物的 `out/main/index.js`,由生产 Main 创建窗口并加载真实 Preload、Renderer。 2. supervisor 从仓库解析 Electron,清除子进程环境中的 `ELECTRON_RUN_AS_NODE`,设置有限期限。 检查最终用户数据路径仍在临时目录,避免便携模式覆盖隔离配置。 3. 按实际临时驱动路径执行 `node "<本轮临时目录>/run.mjs"`。这是驱动适配完成后的命令模板, 不是仓库现成入口。记录驱动来源、实际命令、入口文件与构建身份。 4. 从正常 UI 创建演示项目、会话和配置。通过 Electron 输入 API 操作,等待目标状态、字体和布局 就绪后使用 `capturePage().toPNG()` 截图。不能注入完成事件或假答案替代真实任务。 现有 `node build/run-browser-tabs-electron-e2e.cjs` 可供参考启动与进程监督方式, 但它是浏览器服务集成测试,不是完整应用截图命令。网页浏览器工具也不能直接当作桌面控制器。 组件 fixture 只能作为明确标注的辅助示意,不作为主功能完成的证据。 ## 4. 审阅与归档 逐张打开原图,检查文字可读、菜单没有遮挡关键内容、状态和正文描述一致,以及是否含私人数据。 对原生浏览器视图等复合界面,确认截图实际包含要展示的内容;不能仅凭 PNG 文件存在判定成功。 保存原图,裁切或标注另存;处理不能改变产品含义。 将采用的图片放入本轮 `assets/`,用相对路径写进文章。`review.md` 记录操作步骤、文件名、 实际观察结果、图片审阅情况及模型/服务调用情况。失败时保留阶段和脱敏诊断,列出待补素材。 先归档必要材料,再停止本轮进程、服务并清理临时 profile;不得按进程名批量结束用户应用。 发布前核对最终版本行为是否仍与截图一致;有变化则重拍受影响部分。