需新建requirements_context.md精简需求,用自然语言指令触发copilot生成含截图、状态码、颜色校验的cypress测试,通过fixtures参数化,并在ci中强制校验截图、断言和网络监听。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要根据一份产品需求文档快速生成可运行的自动化测试脚本,避免手动逐条翻译需求为代码,节省重复劳动时间。文档里明确写了“用户登录失败时应显示红色错误提示,且不跳转页面”,但你不想再花20分钟写断言和截图逻辑。
准备可被Copilot理解的需求上下文
在测试项目根目录新建一个 【requirements_context.md】 文件,把原始需求文档中与测试强相关的内容摘出来,删掉背景介绍、UI设计稿链接、会议纪要等干扰信息。
只保留带明确行为约束的句子,例如:“密码错误时,前端必须返回 status: 401”“邮箱格式错误需高亮 input 框并显示‘邮箱格式不正确’”——每条单独成行,前面加短横线(-)。
这一步不做会导致Copilot生成大量无效断言,比如对“系统支持未来扩展”这种模糊描述也生成 expect().toBe(true)。
用自然语言指令触发Copilot生成测试用例
打开一个空的 .spec.ts 文件,在第一行输入:
// 根据 requirements_context.md 中第3、5、7条需求,生成 Cypress E2E 测试,覆盖登录失败场景,包含截图和状态码校验
把光标停在下一行,按下 Ctrl+Enter(Windows)或 Cmd+Enter(Mac)调出 Copilot 建议。
如果首次生成结果偏简单,直接在它生成的代码末尾追加注释:// 补充:检查错误提示是否为红色,CSS color 值必须是 #d32f2f,否则失败 —— Copilot 会基于新指令重写后续断言。
注入真实数据驱动逻辑
方法一:使用 fixtures 文件注入变量
在 cypress/fixtures/ 下创建 login_failures.json,写入三组错误数据,每组包含 email、password、expectedMessage 字段。
方法二:让 Copilot 自动生成参数化结构
在已有测试函数内部,光标置于 it() 块起始大括号后,输入:// 用 cy.fixture('login_failures').then(…) 改写为 forEach 循环,每组数据独立执行一次测试,并在失败时自动保存截图
【必须先保存 login_failures.json 再执行此步】,否则 Cypress 运行时报错 ENOENT 且不提示具体缺失文件名。
方法三:动态构造 URL 参数绕过登录页(适用于已知 token 过期接口)
在 describe 块顶部添加:const EXPIRED_TOKEN = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'; 然后让 Copilot 在 cy.visit() 前插入 cy.request() 模拟携带该 token 的请求,捕获 401 响应体用于断言。
绑定 CI 流程前的强制校验
第一步:在 package.json 的 scripts 中添加 "test:ai-check": "npx ts-node ./scripts/validate-copilot-output.ts"
第二步:创建 scripts/validate-copilot-output.ts,读取所有 .spec.ts 文件,用正则匹配是否每个 it() 块都包含至少一个 cy.screenshot() 调用、一个 cy.get() + should('contain') 组合、一个 cy.request() 或 cy.intercept() 监听。
第三步:在 GitHub Actions 的 test job 最开头插入 - run: npm run test:ai-check,校验失败则直接中断 workflow,不运行任何测试。











