# cy-ai：用自然语言让 Cypress 自动生成端到端测试代码

> 介绍 cy-ai 项目，一个基于大语言模型的 Cypress 插件，让开发者可以用自然语言描述测试意图，自动生成 E2E 测试代码，大幅降低前端测试门槛。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-06-11T04:07:16.000Z
- 最近活动: 2026-06-11T04:21:06.376Z
- 热度: 161.8
- 关键词: Cypress, E2E测试, 大语言模型, LLM, 自动化测试, 前端开发, AI辅助开发, LangChain, Ollama
- 页面链接: https://www.zingnex.cn/forum/thread/cy-ai-cypress-68c5a50c
- Canonical: https://www.zingnex.cn/forum/thread/cy-ai-cypress-68c5a50c
- Markdown 来源: ingested_event

---

## 原作者与来源

- 原作者/维护者：ai-action
- 来源平台：github
- 原始标题：cy-ai
- 原始链接：https://github.com/ai-action/cy-ai
- 来源发布时间/更新时间：2026-06-11T04:07:16Z

## 原作者与来源\n\n- **原作者/维护者**：ai-action 组织\n- **来源平台**：GitHub\n- **原始标题**：cy-ai\n- **原始链接**：<https://github.com/ai-action/cy-ai>\n- **发布时间**：2025年5月创建，持续更新至2026年6月\n- **许可证**：MIT License\n\n---\n\n## 引言：测试编写的痛点\n\n在前端开发中，端到端（E2E）测试是保障产品质量的重要环节。Cypress 作为流行的 E2E 测试框架，虽然功能强大，但编写测试代码仍然需要开发者熟悉其 API 和语法。对于复杂的交互场景，测试代码往往冗长且难以维护。\n\n有没有一种方式，让测试编写变得像说话一样简单？\n\ncy-ai 项目给出了一个优雅的答案：利用大语言模型（LLM），让开发者用自然语言描述测试意图，自动生成对应的 Cypress 测试代码。\n\n---\n\n## 项目概述：什么是 cy-ai\n\ncy-ai 是一个开源的 Cypress 插件，由 ai-action 组织开发和维护。它通过集成大语言模型，为 Cypress 添加了一个 `cy.ai()` 命令，允许开发者使用自然语言描述来生成端到端测试代码。\n\n项目的核心设计理念是**降低测试编写的认知负担**。开发者不再需要记忆大量的 Cypress API，只需要描述"想要测试什么"，剩下的交给 AI 来完成。\n\n### 技术栈与依赖\n\n- **基础框架**：Cypress（E2E 测试框架）\n- **编程语言**：TypeScript\n- **AI 集成**：LangChain（用于与 LLM 交互）\n- **本地模型支持**：Ollama（支持 qwen2.5-coder、codellama 等模型）\n- **包管理**：NPM / Yarn\n\n---\n\n## 核心机制：自然语言到测试代码的转换\n\ncy-ai 的工作流程可以概括为三个步骤：\n\n### 1. 意图捕获\n\n开发者使用自然语言描述测试步骤：\n\n```javascript\ncy.ai('see heading \"Example Domain\"')\n```\n\n这段代码告诉 AI："验证页面上能看到标题 'Example Domain'"。\n\n### 2. 上下文构建\n\ncy-ai 会自动捕获当前页面的 HTML 内容，将其作为上下文传递给大语言模型。这让 AI 能够基于实际的页面结构生成准确的测试代码。\n\n### 3. 代码生成\n\n大语言模型根据任务描述和页面上下文，生成对应的 Cypress 代码。生成的代码遵循 Cypress 的最佳实践，不包含冗余的 describe 和 it 包装（因为已经在测试函数内部）。\n\n---\n\n## 安装与配置\n\n### 前置要求\n\n使用 cy-ai 需要准备以下环境：\n\n1. **Cypress**：已安装的 Cypress 测试框架\n2. **Ollama**：本地运行的大语言模型服务\n\n### 安装步骤\n\n通过 NPM 或 Yarn 安装：\n\n```bash\n# NPM\nnpm install cy-ai --save-dev\n\n# Yarn\nyarn add cy-ai --dev\n```\n\n在 Cypress 支持文件中导入命令：\n\n```typescript\n// TypeScript\necho \"import 'cy-ai'\" >> cypress/support/commands.ts\n\n// JavaScript\necho \"require('cy-ai')\" >> cypress/support/commands.js\n```\n\n### 启动本地模型\n\n```bash\n# 启动 Ollama 服务\nollama serve\n\n# 下载推荐的代码模型\nollama pull qwen2.5-coder\n```\n\n### Chrome 浏览器配置\n\n如果使用 Chrome 运行测试，需要禁用 `chromeWebSecurity` 以避免 CORS 问题：\n\n```javascript\n// cypress.config.js\nimport { defineConfig } from 'cypress'\n\nexport default defineConfig({\n  chromeWebSecurity: false,\n})\n```\n\n---\n\n## 进阶用法：自定义与扩展\n\n### 使用不同的语言模型\n\ncy-ai 默认使用 qwen2.5-coder 模型，但支持通过 LangChain 切换到其他模型：\n\n```typescript\nimport { Ollama } from '@langchain/ollama'\nimport { prompt } from 'cy-ai'\n\nconst llm = new Ollama({\n  model: 'codellama',\n  numCtx: 16384,\n})\n\nconst chain = prompt.pipe(llm)\n\ncy.ai('prompt', { llm: chain })\n```\n\n### 自定义提示模板\n\n开发者可以完全自定义生成代码的提示模板：\n\n```typescript\nimport { PromptTemplate } from '@langchain/core/prompts'\nimport { Ollama } from '@langchain/ollama'\n\nconst llm = new Ollama({\n  model: 'codellama',\n  numCtx: 16384,\n})\n\nconst prompt = PromptTemplate.fromTemplate(`\nYou are writing an E2E test step with Cypress.\n\nRules:\n1. Return JavaScript Cypress code without \"describe\" and \"it\".\n\nTask: {task}\n\nHTML:\n\\`\\`\\`html\n{html}\n\\`\\`\\`\n`)\n\nconst chain = prompt.pipe(llm)\ncy.ai('prompt', { llm: chain })\n```\n\n### 全局配置\n\n使用 `cy.aiConfig()` 设置全局选项：\n\n```javascript\ncy.aiConfig({\n  llm: chain,\n  log: false,\n  regenerate: true,\n  timeout: 1000 * 60 * 3, // 3分钟\n})\n```\n\n支持的配置项：\n\n- **llm**：自定义 LangChain Runnable\n- **log**：是否显示命令日志（默认 true）\n- **regenerate**：是否重新生成代码（默认 false）\n- **timeout**：等待超时时间（默认 2 分钟）\n\n---\n\n## 实际应用场景\n\n### 场景一：快速原型验证\n\n在产品原型阶段，功能迭代快速，测试代码需要频繁调整。使用 cy-ai，开发者可以用自然语言快速描述新的测试场景，无需手动编写和维护测试代码。\n\n### 场景二：非技术团队成员参与测试\n\n产品经理或 QA 工程师可能不熟悉 Cypress API，但可以使用 cy.ai() 用自然语言编写测试用例，降低团队沟通成本。\n\n### 场景三：遗留项目的测试补全\n\n对于缺乏测试覆盖的遗留项目，cy-ai 可以快速生成基础测试套件，作为后续完善测试的起点。\n\n---\n\n## 项目现状与社区\n\n截至 2026 年 6 月，cy-ai 项目展现出健康的开源生态：\n\n- **星标数**：7\n- **技术栈**：TypeScript\n- **持续集成**：配置了构建和测试工作流\n- **文档**：完善的 README 和 Wiki\n- **示例项目**：提供了 cypress-ai-demo 示例仓库\n- **许可证**：MIT（宽松开源许可）\n\n项目目前处于积极开发阶段，社区可以通过 GitHub Issues 和 Discussions 参与贡献。\n\n---\n\n## 技术意义与展望\n\ncy-ai 代表了**AI 辅助开发工具**的一个重要方向：将大语言模型的能力无缝集成到现有的开发工作流中。\n\n### 核心价值\n\n1. **降低门槛**：让不熟悉 Cypress API 的开发者也能编写测试\n2. **提高效率**：用自然语言描述替代繁琐的代码编写\n3. **增强可维护性**：AI 生成的代码遵循一致的风格和最佳实践\n\n### 未来展望\n\n随着大语言模型能力的不断提升，类似的 AI 辅助工具将会在更多开发环节出现：\n\n- 自动生成单元测试\n- 智能代码重构建议\n- 自然语言驱动的 CI/CD 配置\n- 自动化文档生成\n\ncy-ai 为这一趋势提供了优秀的实践范例。\n\n---\n\n## 总结与建议\n\ncy-ai 是一个值得关注的开源项目，它巧妙地将大语言模型与 Cypress 结合，为前端测试领域带来了新的可能性。\n\n**适合尝试的人群**：\n\n- 希望降低 E2E 测试编写门槛的前端团队\n- 正在探索 AI 辅助开发工具的开发者\n- 需要快速建立测试覆盖的敏捷团队\n\n**使用建议**：\n\n1. 从简单的测试场景开始，逐步熟悉 AI 生成代码的风格\n2. 结合团队代码审查，确保生成代码符合项目规范\n3. 关注项目更新，及时获取新功能和改进\n\ncy-ai 展示了 AI 如何成为开发者的得力助手，而不是替代者。在这个人机协作的新时代，掌握这类工具将成为开发者的重要竞争力。
