@@ -30,26 +30,28 @@ tests/
3030├── smoke/
3131│ └── api-health.test.ts # 外部 API、adapter 定义、命令注册健康检查
3232src/
33- └── **/*.test.ts # 单元测试(当前 31 个文件)
33+ ├── **/*.test.ts # 核心单元测试(默认 `unit` project)
34+ └── clis/{zhihu,twitter,reddit,bilibili}/**/*.test.ts # 聚焦 adapter tests
3435```
3536
3637| 层 | 位置 | 当前文件数 | 运行方式 | 用途 |
3738| ---| ---| ---:| ---| ---|
38- | 单元测试 | ` src/**/*.test.ts ` | 31 | ` npx vitest run src/ ` | 内部模块、pipeline、adapter 工具函数 |
39+ | 单元测试 | ` src/**/*.test.ts ` (排除 ` src/clis/** ` ) | - | ` npm test ` | 内部模块、pipeline、runtime |
40+ | Adapter 测试 | ` src/clis/{zhihu,twitter,reddit,bilibili}/**/*.test.ts ` | - | ` npm run test:adapter ` | 保留 4 个重点站点的 adapter 覆盖 |
3941| E2E 测试 | ` tests/e2e/*.test.ts ` | 5 | ` npx vitest run tests/e2e/ ` | 真实 CLI 命令执行 |
4042| 烟雾测试 | ` tests/smoke/*.test.ts ` | 1 | ` npx vitest run tests/smoke/ ` | 外部 API 与注册完整性 |
4143
4244---
4345
4446## 当前覆盖范围
4547
46- ### 单元测试(31 个文件)
48+ ### 单元测试与 Adapter 测试
4749
4850| 领域 | 文件 |
4951| ---| ---|
5052| 核心运行时与输出 | ` src/browser.test.ts ` , ` src/browser/dom-snapshot.test.ts ` , ` src/build-manifest.test.ts ` , ` src/capabilityRouting.test.ts ` , ` src/doctor.test.ts ` , ` src/engine.test.ts ` , ` src/interceptor.test.ts ` , ` src/output.test.ts ` , ` src/plugin.test.ts ` , ` src/registry.test.ts ` , ` src/snapshotFormatter.test.ts ` |
5153| pipeline 与下载 | ` src/download/index.test.ts ` , ` src/pipeline/executor.test.ts ` , ` src/pipeline/template.test.ts ` , ` src/pipeline/transform.test.ts ` |
52- | 站点 / adapter 逻辑 | ` src/clis/apple-podcasts/commands .test.ts ` , ` src/clis/apple-podcasts/utils.test.ts ` , ` src/clis/bloomberg/utils.test.ts ` , ` src/clis/chaoxing/utils.test.ts ` , ` src/clis/coupang/utils.test.ts ` , ` src/clis/google/utils.test.ts ` , ` src/clis/grok/ask.test.ts ` , ` src/clis/ twitter/timeline.test.ts` , ` src/clis/weread/utils .test.ts ` , ` src/clis/xiaohongshu/creator-note-detail.test.ts ` , ` src/clis/xiaohongshu/creator-notes-summary.test.ts ` , ` src/clis/xiaohongshu/creator-notes.test.ts ` , ` src/clis/xiaohongshu/user-helpers.test.ts ` , ` src/clis/xiaoyuzhou/utils.test.ts ` , ` src/clis/youtube/transcript-group.test.ts ` , ` src/clis/zhihu/download .test.ts` |
54+ | 聚焦 adapter 逻辑 | ` src/clis/zhihu/download .test.ts ` , ` src/clis/twitter/timeline.test.ts ` , ` src/clis/reddit/read .test.ts ` , ` src/clis/bilibili/dynamic .test.ts ` |
5355
5456这些测试覆盖的重点包括:
5557
@@ -99,8 +101,11 @@ npm run build # 编译(E2E / smoke 测试需要 dist/main.js)
99101### 运行命令
100102
101103``` bash
102- # 全部单元测试
103- npx vitest run src/
104+ # 默认核心单元测试(不含大多数 adapter tests)
105+ npm test
106+
107+ # 聚焦 adapter tests(只保留 4 个重点站点)
108+ npm run test:adapter
104109
105110# 全部 E2E 测试(会真实调用外部 API / 浏览器)
106111npx vitest run tests/e2e/
@@ -192,7 +197,8 @@ it('producthunt me fails gracefully without login', async () => {
192197| Job | 触发条件 | 内容 |
193198| ---| ---| ---|
194199| ` build ` | push/PR 到 ` main ` ,` dev ` | ` tsc --noEmit ` + ` npm run build ` |
195- | ` unit-test ` | push/PR 到 ` main ` ,` dev ` | Node ` 20 ` 与 ` 22 ` 双版本运行 ` src/ ` 单元测试,按 ` 2 ` shard 并行 |
200+ | ` unit-test ` | push/PR 到 ` main ` ,` dev ` | Node ` 20 ` 与 ` 22 ` 双版本运行核心 ` unit ` tests,按 ` 2 ` shard 并行 |
201+ | ` adapter-test ` | push/PR 到 ` main ` ,` dev ` | Node ` 22 ` 运行聚焦的 ` zhihu/twitter/reddit/bilibili ` adapter tests |
196202| ` smoke-test ` | ` schedule ` 或 ` workflow_dispatch ` | 安装真实 Chrome,` xvfb-run ` 执行 ` tests/smoke/ ` |
197203
198204### ` e2e-headed.yml `
@@ -214,7 +220,7 @@ strategy:
214220 node-version : ['20', '22']
215221 shard : [1, 2]
216222steps :
217- - run : npx vitest run src/ --reporter=verbose --shard=${{ matrix.shard }}/2
223+ - run : npm test -- --reporter=verbose --shard=${{ matrix.shard }}/2
218224` ` `
219225:::
220226
0 commit comments