For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh/docs/web/testing.md (or send Accept: text/markdown).
测试策略
理解确定性、浏览器、数据库与供应商检查各自证明了什么。
安装与配置
在执行任何步骤之前,请阅读开始之前 和终端基础知识。这些说明假设您在 VS Code 中打开了完整的 supastack monorepo;它的根 package.json 标记存储库根。在 pnpm 命令中,工作区包是应用程序或共享代码文件夹;在产品中,工作空间是团队的数据容器和安全边界。 corepack pnpm --filter ... 从 monorepo 选择一个包,同时从其根运行命令。如果您仅打开同步的移动或桌面文件夹,则它不包含 Web 后端、Docker 设置或根脚本:从此 monorepo 或可访问的托管服务器运行后端,并使用平台文件夹自己的脚本。环境变量是存储在本地 .env 文件或托管仪表板中的命名设置;更改后重新启动相关应用程序,并将服务器机密保留在 NEXT_PUBLIC_ 和 EXPO_PUBLIC_ 值之外。
1. 打开repository-root package.json查看检查命令。
2. 从该根文件夹运行 corepack pnpm test 进行自动化单元测试,然后运行 corepack pnpm --filter @supastack/web typecheck 进行 Web TypeScript 检查。
3. 对于浏览器行为,启动 Web 应用程序并运行 corepack pnpm test:e2e。预期:每个命令报告自己的结果;单元测试并不能证明真实的数据库、支付提供商、电子邮件服务或电话是否有效。
默认测试套件使用确定性的 fake/本地适配器。浏览器测试覆盖用户交互;数据库验收与外部供应商冒烟是独立门槛。先跑与变更行为相关的检查,再扩大范围。
corepack pnpm test
corepack pnpm check
corepack pnpm build
corepack pnpm test:e2e
corepack pnpm test:e2e:production要复制的命令
按照注释查看命令在哪个文件夹中运行。如果标记了两个终端,请打开两个终端窗口,并在使用第二个命令时保持第一个命令运行。
corepack pnpm test
corepack pnpm --filter @supastack/web typecheck
corepack pnpm test:e2e实现流程
行为变更先写一个失败的验收测试。让成功访问与匿名、跨工作区被拒成对出现。对表单与任务流,除正常路径外还要验证加载、错误与恢复行为。
被拦截的浏览器响应证明的是界面对该夹具的反应,而不是认证持久化、支付处理、供应商投递或真机回调。
验证与排障
如果数据库测试表明它已被跳过,请在报告数据库覆盖率之前设置其隔离的测试数据库。如果Web选项卡位于端口3001,则它是单独的apps/docs服务器;该套件 Web 应用程序在端口 3000 处启动。如果 Playwright 在首次 Windows 运行时失败,请完成浏览器安装并重新运行失败的命令;切勿关闭系统范围的安全性来解决它。
数据库门槛测试跳过时,先配置它的隔离测试数据库,再声称该门槛已通过。如果浏览器 runner 断言全绿却在 teardown 挂住,两个事实都要报告;卡住的进程不是干净的成功命令。
在 Windows 上,当 Defender 扫描新安装的 Playwright 浏览器或依赖项时,初始浏览器运行可能会超时。让安装完成,使用 corepack pnpm test:e2e 或 corepack pnpm test:e2e:production 重新运行失败的套件,并检查其跟踪和防御者保护历史记录(如果再次失败)。启用系统范围的保护。
本地浏览器套件拥有端口 3100,并拒绝重用已在该端口侦听的进程。如果另一个应用程序拥有 3100,则将 PLAYWRIGHT_PORT 设置为 corepack pnpm test:e2e 之前的空闲端口;这可以防止测试悄悄地针对另一个项目。