Skip to content

Latest commit

 

History

History
148 lines (108 loc) · 6.32 KB

DEVELOPMENT.md

File metadata and controls

148 lines (108 loc) · 6.32 KB

开发、测试与发布

本文以当前 package.json、WXT 配置和 GitHub Actions 工作流为准。

环境

  • Windows 建议使用 PowerShell 7。
  • 包管理器与运行时使用 Bun。
  • 浏览器目标为 Chrome MV3、Edge MV3 和 Firefox MV2。
git clone https://github.com/HTExplicit/boss-helper.git
Set-Location boss-helper
bun install

bun install 会执行 wxt prepare,生成 WXT 类型和构建辅助文件。

开发服务器

# Chrome
bun run dev

# Edge
bun run dev:edge

# Firefox
bun run dev:firefox

WXT 会启动目标浏览器开发环境。需要使用既有浏览器配置或手动加载扩展时,可先构建再从 .output/<browser>-<manifest> 加载。

测试与质量门

当前仓库没有名为 test 的 package script,测试命令是 Bun 自带的:

bun test
bun run check
bun run fmt:check
bun run lint
git diff --check
命令 目的
bun test 运行 tests/*.test.mjs 回归测试
bun run check 运行 vue-tsc --noEmit 类型检查
bun run fmt:check 检查源码和 Markdown 格式
bun run lint 运行带类型信息的 Oxlint
git diff --check 检查空白错误和冲突标记

优先运行与改动直接相关的测试;准备合并或发布时运行全部质量门和三个浏览器构建。已有工具警告必须与本次新增错误区分记录,不能把“命令退出成功”替代为“无警告”。

构建与打包

# 三浏览器并行构建
bun run build

# 单独构建
bun run build:chrome
bun run build:edge
bun run build:firefox

# 三浏览器 ZIP
bun run zip

默认输出:

目标 解压目录
Chrome .output/chrome-mv3
Edge .output/edge-mv3
Firefox .output/firefox-mv2

ZIP 由 WXT 写入 .output。.output、.wxt、dist、node_modules 和本地产物不提交到 Git。

修改原则

  1. 先从用户输入到最终筛选、请求或存储结果建立稳定复现。
  2. 为缺陷增加失败测试,再修复单一原因。
  3. 不为修复一个筛选项重写无关任务或界面。
  4. 页面运行行为与旧文档冲突时,以可复现的当前运行行为为准,并同步文档。
  5. 不改变已有存储 Key;历史拼写错误的 Key 也是兼容接口。
  6. 只有平台明确投递成功后才增加成功统计并写去重记录。
  7. 新的 BOSS 主动请求必须接入共享请求闸门,不能自行并发或无条件重试。
  8. 终止错误必须保持终止语义,不能在通用异常处理中降级成单岗位跳过。

聚焦回归

当前测试文件与关注点:

文件 关注点
tests/filter-keywords.test.mjs 岗位名和工作内容关键词、空值与特殊字符
tests/config-state.test.mjs 配置合并、替换和重置时的响应式引用
tests/boss-request-context.test.mjs BOSS 请求头、详情接口和无点击详情获取
tests/risk-control.test.mjs 请求串行、最小间隔、风险锁定和投递上限
tests/delivery-stop.test.mjs 终止错误、停止状态、成功统计和未知结果不重试
tests/mount-lifecycle.test.mjs 支持路由、重复挂载和生命周期清理
tests/content-message-event.test.mjs content 消息监听和清理
tests/statistics-percentage.test.mjs 统计零分母

真人页面验收

静态测试和构建不能替代已登录页面验收,但验收必须区分只读与写操作。

只读验收

  1. 加载未打包 Chrome 构建并打开职位推荐或搜索页。
  2. 确认只挂载一个 BossHelper 界面,页面不会因扩展反复刷新。
  3. 编辑岗位名和工作内容规则,保存后刷新,确认配置恢复。
  4. 检查岗位列表来源、分页状态和帮助文案。
  5. 不点击“开始”,不打开投递确认,不发送招呼语。

岗位详情筛选位于投递工作流内部。若要在真实页面验证详情接口,必须使用专门的调试入口或受控测试账号;不能把点击完整“开始”流程描述为只读验收。

写操作验收

只有在用户明确允许真实投递时执行:

  1. 使用专门测试条件把候选岗位限制到最小集合。
  2. 关闭自定义和 AI 招呼语,设置较低的每日上限。
  3. 记录任务前的当日成功数和去重数据。
  4. 执行一次并确认平台响应、成功统计和去重写入一致。
  5. 出现验证码、403/429、频繁、环境异常或未知结果时立即结束,不刷新后自动续跑。

账号处于限制状态时不执行真人请求验收,并在 PR 或发布报告中明确记录未完成项。

Pull Request

  • 分支默认使用 codex/<topic>。
  • PR 应包含:复现、根因、最小修复、测试、三浏览器构建结果、真人验收状态和未覆盖边界。
  • 合并前检查 git status,确保没有提交构建产物或来源不明文件。
  • Bugfix-only PR 不夹带界面重设计、存储重构或新产品功能。

版本与 GitHub Actions 发布

  • 每次完成可安装并推送的交付,至少递增 package.json 的 patch 版本;不要让连续交付共用同一个版本号。
  • package.json、扩展 manifest、Git 标签、ZIP 文件名和 GitHub Release 版本必须完全一致。
  • .github/workflows/main.yml 支持手动触发构建,也会在推送版本标签时执行 bun run zip。
  • 手动触发只上传包含 Chrome、Edge、Firefox ZIP 和 SHA256SUMS.txt 的 workflow artifact,不创建 Release。
  • 标签构建会先校验标签与 package.json 版本一致,再创建对应的正式版本 Release;sources ZIP 不对外发布。
  • 发布前必须等待本地及 CI 构建完成,并核对 manifest、产物清单和 SHA-256;不能只因命令已经启动就宣告发布成功。
  • 已推送的版本标签不可移动。标签发布后若需要修改源码,必须递增到下一 patch 版本。