185 lines
5.9 KiB
Markdown
185 lines
5.9 KiB
Markdown
# 第 1 步测试结果:本地静态与自动化基线
|
||
|
||
执行时间:2026-06-28 18:44:25 +08:00
|
||
|
||
执行范围:
|
||
|
||
- ESLint 静态检查
|
||
- TypeScript 项目引用类型检查
|
||
- 全量 Vitest
|
||
- Monorepo 构建
|
||
- Prisma schema 校验
|
||
|
||
## 1. 结果总览
|
||
|
||
| 检查项 | 命令 | 结果 |
|
||
| --- | --- | --- |
|
||
| Lint | `corepack pnpm@10.33.0 lint` | 通过 |
|
||
| Typecheck | `corepack pnpm@10.33.0 typecheck` | 通过 |
|
||
| Test | `corepack pnpm@10.33.0 test` | 未通过 |
|
||
| Build | `corepack pnpm@10.33.0 build` | 通过 |
|
||
| Prisma validate | `corepack pnpm@10.33.0 prisma:validate` | 通过 |
|
||
|
||
整体结论:首次执行第 1 步基线未完全通过,阻断项为全量 Vitest 中 7 个 API e2e suite 的 `beforeAll` hook 默认 10 秒超时。其余静态检查、类型检查、构建和 Prisma schema 校验均通过。
|
||
|
||
复测结论:已在 `vitest.config.ts` 显式设置 `hookTimeout: 60000`,随后重新执行裸 `corepack pnpm@10.33.0 test`,25 个测试文件、88 个测试用例全部通过。该结果说明首次失败是全 AppModule e2e 初始化超过默认 hook timeout 导致,不是业务断言失败。
|
||
|
||
## 2. 详细结果
|
||
|
||
### 2.1 Lint
|
||
|
||
命令:
|
||
|
||
```powershell
|
||
corepack pnpm@10.33.0 lint
|
||
```
|
||
|
||
结果:通过。
|
||
|
||
摘要:
|
||
|
||
- 执行 `eslint .`。
|
||
- 未发现 ESLint 报错。
|
||
|
||
### 2.2 Typecheck
|
||
|
||
命令:
|
||
|
||
```powershell
|
||
corepack pnpm@10.33.0 typecheck
|
||
```
|
||
|
||
结果:通过。
|
||
|
||
摘要:
|
||
|
||
- 执行 `tsc -b tsconfig.build.json --pretty`。
|
||
- TypeScript 项目引用检查通过。
|
||
|
||
### 2.3 Test
|
||
|
||
命令:
|
||
|
||
```powershell
|
||
corepack pnpm@10.33.0 test
|
||
```
|
||
|
||
结果:未通过。
|
||
|
||
Vitest 汇总:
|
||
|
||
- Test Files:7 failed,18 passed,共 25。
|
||
- Tests:68 passed,20 skipped,共 88。
|
||
- Duration:45.57s。
|
||
|
||
失败原因:
|
||
|
||
7 个 API e2e suite 在 `beforeAll` 阶段触发默认 10000ms hook timeout:
|
||
|
||
| 失败文件 | 失败位置 | 摘要 |
|
||
| --- | --- | --- |
|
||
| `apps/api/src/app.e2e.spec.ts` | `beforeAll` line 10 | API health e2e 初始化超时 |
|
||
| `apps/api/src/modules/auth/auth.e2e.spec.ts` | `beforeAll` line 85 | Auth API e2e 初始化超时 |
|
||
| `apps/api/src/modules/customers/customers.e2e.spec.ts` | `beforeAll` line 161 | Customers API e2e 初始化超时 |
|
||
| `apps/api/src/modules/landing-line-groups/landing-line-groups.e2e.spec.ts` | `beforeAll` line 228 | Landing line groups API e2e 初始化超时 |
|
||
| `apps/api/src/modules/recharges/recharges.e2e.spec.ts` | `beforeAll` line 124 | Recharges API e2e 初始化超时 |
|
||
| `apps/api/src/modules/security/security-rbac-audit.e2e.spec.ts` | `beforeAll` line 172 | Security/RBAC/Audit API e2e 初始化超时 |
|
||
| `apps/api/src/modules/vendor-gateways/vendor-gateways.e2e.spec.ts` | `beforeAll` line 184 | Vendor gateways API e2e 初始化超时 |
|
||
|
||
已通过的测试文件包括:
|
||
|
||
- `apps/api/src/modules/active-calls/active-calls.service.spec.ts`
|
||
- `apps/api/src/modules/auth/auth.service.spec.ts`
|
||
- `apps/worker-recording/src/transfer.spec.ts`
|
||
- `packages/auth/src/index.spec.ts`
|
||
- `apps/api/src/modules/customer-gateway-policies/customer-gateway-policies.e2e.spec.ts`
|
||
- `apps/api/src/modules/customer-gateways/customer-gateways.e2e.spec.ts`
|
||
- `apps/api/src/modules/vendors/vendors.e2e.spec.ts`
|
||
- `apps/api/src/modules/users-roles-delete.e2e.spec.ts`
|
||
- `apps/api/src/modules/number-library/number-library.e2e.spec.ts`
|
||
- `apps/worker-cdr/src/rating.spec.ts`
|
||
- `packages/database/src/schema-contract.spec.ts`
|
||
- `apps/api/src/modules/dashboard/dashboard.service.spec.ts`
|
||
- `packages/redis/src/cdr-stream.spec.ts`
|
||
- `apps/api/src/modules/cdrs/cdrs.service.spec.ts`
|
||
- `apps/worker-config-publisher/src/publisher.spec.ts`
|
||
- `apps/api/src/modules/recordings/recordings.service.spec.ts`
|
||
- `apps/api/src/modules/quality/sampling.spec.ts`
|
||
- `apps/api/src/modules/health/health.service.spec.ts`
|
||
|
||
初步判断:
|
||
|
||
- 失败集中在 API e2e `beforeAll` 初始化阶段,错误均为默认 10 秒 hook timeout。
|
||
- 结合历史执行记录,本项目 e2e 曾使用 `--hookTimeout=60000 --maxWorkers=1` 通过;本次按第 1 步基线命令执行裸 `pnpm test`,因此更可能是本地 e2e 初始化耗时或并发资源争用导致的基线命令超时,而不是业务断言失败。
|
||
- 仍需在下一轮复测中用扩展 hook timeout 和单 worker 复跑,确认是否存在真实数据库/Redis/API 初始化问题。
|
||
|
||
### 2.4 Build
|
||
|
||
命令:
|
||
|
||
```powershell
|
||
corepack pnpm@10.33.0 build
|
||
```
|
||
|
||
结果:通过。
|
||
|
||
摘要:
|
||
|
||
- `packages/auth`、`packages/contracts`、`packages/database`、`packages/domain`、`packages/observability`、`packages/redis` 构建通过。
|
||
- `apps/api`、`apps/worker-cdr`、`apps/worker-config-publisher`、`apps/worker-recording` 构建通过。
|
||
- `apps/web` Vite 构建通过,生成产物:
|
||
- `dist/index.html`
|
||
- `dist/assets/index-B2uYBtS3.css`
|
||
- `dist/assets/index-BK00zN_M.js`
|
||
|
||
### 2.5 Prisma Validate
|
||
|
||
命令:
|
||
|
||
```powershell
|
||
corepack pnpm@10.33.0 prisma:validate
|
||
```
|
||
|
||
结果:通过。
|
||
|
||
摘要:
|
||
|
||
- Prisma config:`prisma.config.ts`。
|
||
- Schema:`prisma/schema.prisma`。
|
||
- 结果:schema valid。
|
||
|
||
## 3. 当前风险
|
||
|
||
- 首次 `pnpm test` 失败集中在 e2e 初始化超时,不应直接按业务缺陷处理。
|
||
- 已通过配置层修复验证:`vitest.config.ts` 增加 `hookTimeout: 60000` 后,`pnpm test` 通过。
|
||
- 若后续在低性能 CI 或数据库连接较慢环境中再次出现初始化超时,可再考虑降低 e2e 并发,例如使用 `--maxWorkers=1`。
|
||
|
||
## 4. 复测记录
|
||
|
||
执行时间:2026-06-28 18:53:16 +08:00
|
||
|
||
变更:
|
||
|
||
```typescript
|
||
// vitest.config.ts
|
||
hookTimeout: 60000
|
||
```
|
||
|
||
复测命令:
|
||
|
||
```powershell
|
||
corepack pnpm@10.33.0 test
|
||
```
|
||
|
||
复测结果:
|
||
|
||
- Test Files:25 passed,共 25。
|
||
- Tests:88 passed,共 88。
|
||
- Duration:12.56s。
|
||
|
||
## 5. 建议下一步
|
||
|
||
1. 保留 `vitest.config.ts` 中的 `hookTimeout: 60000`。
|
||
2. 如要继续第 1 步完整闭环,可再次执行 `lint`、`typecheck`、`test`、`build`、`prisma:validate` 全套命令并更新最终状态。
|
||
3. 进入第 2 步定向单元/API e2e 回归时,可直接使用当前 Vitest 配置。
|