用途:该技能帮助运行并调试 Happy/VibeBox 项目的端到端测试。所有命令假设在项目根目录执行。支持平台:Web 使用 Playwright 进行 OAuth 认证测试;iOS 与 Android 使用 Maestro 测试(暂未实现,资料标注为 future)。
适用时机:用户要求运行 e2e 测试、演示功能(尤其面向领导层)、提及测试失败或调试、讨论 OAuth 与认证测试、提及 Playwright 或 Maestro、询问测试状态时自动激活。
核心流程:
- 检查前置条件,先用 check-services.sh 或手动验证:Docker 服务(Postgres、Logto)是否运行;Next.js 是否在 3003 端口;Expo web 是否在 8081 端口;Happy Server 配置是否正确。检查命令示例:docker ps | grep -E "postgres|logto"、lsof -ti:3003、lsof -ti:8081、grep HAPPY_SERVER_URL server/.env.local。预期配置:Docker 为 localhost:3001(Logto)与 localhost:3002(Postgres);Next.js 为 localhost:3003 且 HAPPY_SERVER_URL=https://api.cluster-fluster.com;Expo web 为 localhost:8081 且 EXPO_PUBLIC_API_URL=http://localhost:3003;Happy Server 默认使用 https://api.cluster-fluster.com,不要覆盖。
- 按顺序启动缺失服务:cd docker 后 docker compose up -d;cd server 后 yarn dev;cd client 后 EXPO_PUBLIC_API_URL=http://localhost:3003 yarn web。注意:切勿设置 EXPO_PUBLIC_HAPPY_SERVER_URL,让其使用官方默认地址;本地测试始终设置 EXPO_PUBLIC_API_URL=http://localhost:3003。
- 运行测试:cd client/tests/e2e/web 后 EXPO_PUBLIC_API_URL=http://localhost:3003 node oauth-authentication.test.js。测试会打开浏览器、访问 http://localhost:8081、点击 Sign In with Logto、自动创建新用户、完成完整 OAuth 流程、验证认证状态、逐步截图并清晰显示成功或失败。
- 解读结果:成功标志包括各步骤绿色勾选、最终 URL 为 http://localhost:8081/(不是 /callback)、localStorage 含 ID token、认证状态 isAuthenticated=true、日志无 404 或 500 错误。常见问题:最终 URL 为 /callback 需检查环境配置;/api/* 出现 404 需检查 EXPO_PUBLIC_API_URL;/v1/* 出现 CORS 错误需检查 Happy Server URL(不应为 localhost);测试挂起需检查所有服务是否运行。详见 TROUBLESHOOTING.md。
关键文件:测试文件 client/tests/e2e/web/oauth-authentication.test.js;测试文档 client/tests/e2e/web/README.md;截图 client/tests/e2e/web/tmp/oauth-redirect/;服务端配置 server/.env.local;API 客户端 client/sources/services/api.ts;Happy Server 配置 client/sources/sync/serverConfig.ts。
环境变量:客户端(Expo)EXPO_PUBLIC_API_URL 为 VibeBox 平台 API(本地设为 http://localhost:3003),EXPO_PUBLIC_HAPPY_SERVER_URL 为 Happy Server API(不要设置,用默认 https://api.cluster-fluster.com);服务端(Next.js)HAPPY_SERVER_URL 设为 https://api.cluster-fluster.com。
最佳实践:先检查前置条件,不假设服务已运行;使用正确环境变量(错误配置导致约 90% 问题);阅读完整测试输出而非只看最终状态;检查 404/500 错误;验证最终 URL 为 / 而非 /callback;测试自动截图便于调试。演示模式:确保所有服务完美运行,完整可见输出运行测试,突出关键成功标志,必要时展示截图,强调完整 OAuth 流程(无弹窗、完整重定向)。相关文档:PREREQUISITES.md、TROUBLESHOOTING.md、scripts/check-services.sh。
限制:当前仅 Web Playwright OAuth 测试可用,iOS 与 Android 的 Maestro 测试尚未实现,资料未提供其发布时间或具体实现细节。