用途:用于在完成 playground 包的前端改动后,执行端到端(E2E)验证,确认页面能正确渲染且交互可用。
前置条件:需要 Playwright MCP 服务器。若 browser_navigate 工具不可用,需提示用户添加: claude mcp add playwright -- npx @playwright/mcp@latest
验证流程:先构建 CLI(pnpm build:cli),再进入 playground/e2e/kitchen-sink 目录运行 pnpm dev 启动开发服务器,应用地址为 http://localhost:4111,需等待服务器就绪。受影响路由定义在 packages/playground/src/App.tsx,需全部浏览验证。随后用 Playwright MCP 的 browser_navigate 访问各路由,目视检查改动渲染是否正确,并测试被修改的交互元素,可用 browser_screenshot 截图供用户查看。
编写测试:需为已验证的行为编写 Playwright 测试,位置在 packages/playground/e2e/tests/ 下,按路由映射文件路径,例如 /agents 对应 agents/page.spec.ts,/agents/:id/... 对应 agents/$agentId/page.spec.ts,/tools 对应 tools/page.spec.ts,/workflows/:id 对应 workflows/$workflowId/page.spec.ts,/mcps 对应 mcps/page.spec.ts 等;布局与导航测试放 page.spec.ts,流式/聊天测试放 stream.spec.ts。已有 spec 文件则追加 test() 块,否则新建并包含导入、afterEach 等样板。AI 流式响应(text-delta、工具调用、工作流执行)应使用 selectFixture() + nanoid() 保证隔离与确定性;静态 UI、导航、表单、确定性工具执行无需 fixture。约定包括:始终在 test.afterEach 调用 resetStorage();流式测试在 beforeEach 创建新浏览器上下文;定位器优先级为 getByTestId > getByRole > getByLabel > locator('text=...');异步/流式断言使用 { timeout: 20000 };聊天会话 ID 用 nanoid();适用处用 page.reload() 验证记忆持久化;用 toMatchAriaSnapshot() 做稳定布局断言。
Kitchen-Sink 扩展:需要新 fixture 或实体时,在 e2e/kitchen-sink/fixtures/ 添加 <name>.fixture.ts 并在 fixtures/index.ts 注册;在 e2e/kitchen-sink/types.ts 和 e2e/tests/utils/select-fixture.ts 的 Fixtures 联合类型中加入名称;新工具/智能体/工作流加入 e2e/kitchen-sink/src/mastra/ 对应文件。
运行与限制:执行 cd packages/playground && pnpm test:e2e 运行测试,失败需修复并重跑至全绿。资料未提供收费、价格、性能指标或跨浏览器支持等信息。