SuperAPI AI 工具集

cypress-e2e

测试与质量

查看项目

更新于 10-16 03:47

技能介绍

用途:这是一个 Cypress 端到端测试技能,面向 QA 自动化场景,帮助编写、审查和调试 Web 应用的 Cypress E2E 测试。

核心原则:Cypress 运行在浏览器内,并非 Selenium;命令异步但可链式调用,不应使用 async/await;断言可自动重试;用 cy.intercept() 控制网络请求;测试之间保持隔离,认证用 cy.session()。

主要能力与模式:

  • 项目结构约定,如 cypress/e2e、fixtures、support、pages、plugins 等目录,以及 cypress.config.ts 配置(baseUrl、viewport、超时、retries、setupNodeEvents、component 配置等)。
  • 自定义命令:通过 Cypress.Commands.add 定义 login、loginByApi、getByTestId 等,并声明 Chainable 类型。
  • 使用 cy.session() 缓存认证状态,配合 validate 校验。
  • Page Object 模式:以类封装页面元素与操作,导出单例页面对象。
  • 测试结构:describe/it/beforeEach,覆盖登录、表单校验、文件上传、多标签页处理等。
  • 网络拦截:cy.intercept() 返回 fixture、模拟 500 错误、延迟响应、校验查询参数等。
  • Fixture:cy.fixture 加载 users.json 等测试数据,配合 this 上下文使用。
  • 组件测试:cy.mount 挂载 React 组件,配合 cy.stub 验证点击等交互。
  • CI 集成:GitHub Actions 中调用 cypress-io/github-action,指定浏览器矩阵、start、wait-on、record 等。

必要用法与最佳实践:优先用 cy.intercept() 而非 cy.server()/cy.route();认证用 cy.session();选择器用 data-testid;避免 cy.wait(ms),改用 cy.wait('@alias');测试保持独立,用 beforeEach;命令不返回 Promise;用 cy.request() 做状态准备。反模式包括 async/await、把命令赋给变量、任意等待、访问外部站点、嵌套回调、过度使用 cy.wrap()、测试实现细节等。调试可用 cy.log()、cy.debug()、cy.pause()、cy.screenshot(),交互模式运行 npx cypress open。

限制:资料未提供该技能的收费、价格、平台支持范围与效果数据,暂未提供。