前端测试派发计划
目标:将 web/user 和 web/admin 的前端测试覆盖率从当前 155 个用例提升到 500+
当前状态
| 模块 | 已有测试 | 待补 |
|---|---|---|
| web/user utils | auth, videoCard, safeStorage, liveMeetingStatus, clipboard, drafts, currentUser | adminPage, echartsCore, expNotify, notification, reconnectingWs, userId |
| web/user store | user, teriteri | index |
| web/user composables | 无 | 18 个 composable 全部待补 |
| web/user components | LoginRegister (5) | 其余 379 个组件待补 |
| web/admin utils | auth | adminPage, echartsCore, liveMeetingStatus, safeStorage, toWebP |
| web/admin store | admin | 无 |
| web/admin composables | 无 | useAdminLiveRooms |
派发任务
Agent 1: web/user utils 补齐
目标文件: 新建以下测试文件
web/user/app/utils/notification.test.tsrequestNotificationPermission: 已授权/未授权/被拒绝isNotificationSupported: 支持/不支持isNotificationEnabled: granted/non-grantedshowNotification: 正常显示/无权限notifyStreamLive/notifyMention: 参数传递
web/user/app/utils/reconnectingWs.test.tscreateReconnectingWS: 创建连接send: 连接打开/关闭close: 主动关闭isOpen: 状态检查- 重连逻辑:指数退避、最大重试、心跳
web/user/app/utils/expNotify.test.tsrefreshUserWithNotify: 升级/获得经验/无变化/未登录- mock
userApi.getUserById
web/user/app/utils/currentUser.test.ts(已有,确认覆盖)web/user/app/utils/userId.test.ts(如存在导出函数)
技术要求:
- vitest + happy-dom
- mock WebSocket:
vi.fn()+ 手动触发 onopen/onmessage/onclose - mock Notification API:
vi.fn()替换 window.Notification - 测试文件放被测文件同目录
Agent 2: web/user composables 补齐
目标文件: 新建以下测试文件
web/user/app/composables/useAuth.test.tsweb/user/app/composables/useLiveRoomPlayer.test.tsweb/user/app/composables/useLiveRoomRealtime.test.tsweb/user/app/composables/useLiveRoomList.test.tsweb/user/app/composables/useLiveRoomSession.test.tsweb/user/app/composables/useLiveRoomFollow.test.tsweb/user/app/composables/useLiveRoomInteractions.test.tsweb/user/app/composables/useLivePushRoomSetup.test.tsweb/user/app/composables/useLivePushRoomControls.test.tsweb/user/app/composables/useLivePushAudienceMonitor.test.tsweb/user/app/composables/useLiveLinkmic.test.tsweb/user/app/composables/useCreatorStats.test.tsweb/user/app/composables/useChunkedManuscriptUpload.test.tsweb/user/app/composables/usePeerConnectionMesh.test.tsweb/user/app/composables/useWhipPublisher.test.tsweb/user/app/composables/usePrefetch.test.tsweb/user/app/composables/useTabsVideoAlign.test.tsweb/user/app/composables/useZoomCompact.test.ts
技术要求:
- 每个 composable 需要先读源码了解依赖
- mock API 调用:
vi.mock('@/api/client') - mock WebSocket/WebRTC 等浏览器 API
- 测试 setup/teardown(onMounted/onUnmounted)
- 测试文件放 composables 目录下
Agent 3: web/admin utils 补齐
目标文件: 新建以下测试文件
web/admin/app/utils/adminPage.test.tsweb/admin/app/utils/echartsCore.test.tsweb/admin/app/utils/liveMeetingStatus.test.tsweb/admin/app/utils/safeStorage.test.tsweb/admin/app/utils/toWebP.test.tsweb/admin/app/composables/useAdminLiveRooms.test.ts
技术要求:
- 先读每个源码文件了解导出函数
- 纯函数直接测试,有依赖的 mock
- 测试文件放被测文件同目录
注意事项
- 不要修改任何已有文件
- 每个测试文件顶部加 vitest import:
import { describe, it, expect, vi, beforeEach } from 'vitest' - Store 测试需要初始化 Pinia:
setActivePinia(createPinia()) - Mock 外部依赖:axios, element-plus, @/api/* 等
- 写完每个文件后验证:
cd /home/a1/mybilibili/web/user && npx vitest run app/xxx/xxx.test.ts - 最终全量验证:
npx vitest run