# AI Person E2E 这是独立的 Playwright 真实联调工程。`test:full` 默认会为当前批次自动启动并回收隔离的临时 API 与 Web,Web 使用随机本机端口并代理到临时 API;测试仍连接真实开发数据库和真实本地/上游能力,不使用业务 Mock,也不会把《账号.MD》中的凭据复制到工程、日志或报告。 ## 执行 确认 `ai_person_web`、`ai_person_api` 的依赖已经安装后,在本目录执行;无需提前手工启动 8001/8003: ```powershell pnpm install --frozen-lockfile pnpm run install:browsers pnpm run test:full ``` 临时进程使用仅存在于本次子进程环境中的随机远控 Pepper 和敏感词导入签名密钥,运行结束后会被精确回收。确需复用已启动的联调服务时,可设置 `E2E_USE_EXISTING_STACK=true`;其他可选项见 `.env.example`。 在执行 Playwright 前,runner 会调用 API 项目的 `scripts/seed_demo_business_data.py --summary-json`,按 manifest 幂等补齐持久演示数据并校验演示媒体文件;摘要保存在本批次的 `demo-seed-summary.json`。除非调用者已经完成同一份初始化,否则不要关闭这一步。 每次完整运行会生成独立目录: ```text artifacts/runs// screenshots/ test-results/ html-report/ results.json verification.json 全量E2E测试报告.md ``` 环境变量可写入本地 `.env`(已忽略),模板见 `.env.example`。账号默认从 `../账号.MD` 读取,仅支持 UTF-8 的“账号:…”与“密码:…”两项。 所有真实写入统一使用 `APE2E-` 标记,并在用例 `finally` 中逆序清理。全局菜单、品牌与基础配置必须快照后恢复;外部数字人、ASR/TTS、FFmpeg、第三方知识、实际终端等条件不满足时必须明确跳过,不能用 Mock 冒充联调成功。 逐页视觉验收不再只检查路由和标题:每个正式数据页必须先显示至少一条真实数据库行/卡片,并命中 `../ai_person_api/scripts/demo_seed_manifest.json` 中对应 `DEMO-` 演示实体的名称、编码或 slug,随后才允许生成成功截图。IAM、基础设置、菜单和个人中心也分别校验真实表格行、配置值或角色数据;空列表会直接使本批次失败。`DEMO-` 数据是开发环境的持久演示数据,不属于测试临时数据,后验收只清理 `APE2E-` 资源。 由于用例会填写真实密码、API Key 和一次性密钥,工程全局关闭 trace/video;成功和失败均保留全页截图,敏感输入区域由用例显式遮罩或在截图前清空。 `test:full` 在 Playwright 结束后还会自动执行后验收:扫描文本制品中的真实密码、Bearer/JWT 和测试临时密码,确认没有 trace/video,并通过正式 API 查询 IAM、配置、菜单与各业务资源中是否还存在 `APE2E` 标记数据。结果写入 `verification.json` 并汇总到 Markdown 报告。