workbuddy 支持通过 cli 为 web 应用快速生成 playwright 或 cypress 端到端测试代码:对 playwright,基于页面路径自动分析 dom 并生成含等待、断言、截图的 typescript 测试;对 cypress,依据自然语言指令构建 describe/it 块、cy.visit()、data-cy 定位及 cy.intercept() 模拟响应;生成代码均启用失败截图与 trace 记录,支持 ui 调试和语义化定位。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望借助 WorkBuddy 为 Web 应用快速生成 Playwright 或 Cypress 的端到端测试代码,但尚未明确其对两类框架的适配能力与生成路径,则需依据当前已验证的集成机制进行操作。以下是实现此目标的步骤:
一、确认 WorkBuddy 对 Playwright 的支持方式
WorkBuddy 当前通过 CLI 工具链直接对接 Playwright 的测试运行器(@playwright/test),支持基于页面路径自动分析 DOM 结构并生成可执行的 TypeScript 测试文件,无需手动编写 locator 链或等待逻辑。该流程依赖项目中已存在标准 Playwright 配置与浏览器驱动。
1、确保项目根目录下存在 playwright.config.ts 文件,且其中已定义 projects 和 use 配置项。
2、执行命令 npx playwright install chromium firefox webkit 完成多浏览器驱动安装。
3、运行 workbuddy e2e --framework playwright --page /login,指定待测路由路径。
4、WorkBuddy 将自动识别页面内关键交互元素(如 input[data-testid="username"]、button[type="submit"])并生成含自动等待、断言与截图配置的完整 spec 文件。
二、确认 WorkBuddy 对 Cypress 的支持方式
WorkBuddy 支持以自然语言指令驱动 Cypress 测试脚本生成,自动构建 describe/it 块、cy.visit() 调用、基于 data-cy 属性的安全元素定位及响应式断言结构,适用于登录、表单提交、列表渲染等典型用户流。
1、确认项目中已初始化 Cypress 并存在 cypress.config.ts 及 cypress/e2e/ 目录。
WorkBuddy 桌宠工厂 —— 给一张角色图、一个 codex.pet 链接、一条 codex-pets.net 下载 URL、或一份现成的精灵表,就能自动创建一只可联动 WorkBuddy 状态的桌面宠物。当用户说"创建桌宠"、"做一只桌宠"、"用这张图做桌宠"、"从 codex.pet 安装桌宠"、"导入 codex 桌宠 XX"、"装一下 codex-pets.net 上的 XX&quo
2、执行命令 workbuddy e2e --framework cypress --prompt "用户输入有效邮箱后点击注册按钮,应跳转至欢迎页面并显示用户名"。
3、WorkBuddy 将解析项目中的路由定义、组件 props 类型及 API 响应结构,匹配对应 Cypress 命令链。
4、生成的文件将保存至 cypress/e2e/auth-flow.spec.ts,包含 cy.intercept() 拦截模拟响应及 cy.get().should('be.visible') 等稳定性增强写法。
三、验证生成代码的可执行性与调试支持
WorkBuddy 生成的测试脚本默认启用失败时自动截图与 Trace 记录功能,便于在 CI 或本地调试中快速定位问题根源。该能力在 Playwright 中通过 playwright.config.ts 的 trace 配置生效,在 Cypress 中则依赖 cypress.config.ts 中的 video 与 screenshot 设置。
1、检查生成文件所在目录是否被测试运行器识别:Playwright 要求文件位于 tests/ 下,Cypress 要求位于 cypress/e2e/ 下。
2、对 Playwright 执行 npx playwright test --ui 启动可视化调试界面,拖动时间轴回放每一步操作。
3、对 Cypress 执行 npx cypress open 启动桌面版 Test Runner,查看实时 DOM 快照与命令日志。
4、确认生成代码中所有 cy.get() 或 page.getByRole() 调用均使用语义化属性(如 data-cy、aria-label),避免依赖不稳定 CSS 选择器。










