** cypress coding notice 个人编码守则 **

  1. 尽量用 cy.get 不用 chain,例如 cy.get().contains cy.get().eq() 等 chain
  2. 将页面封装为类,对任何单页面的修改归结于对一个类的修改,成为 UI 层
  3. 跨页面的操作封装为 API,如 login,logout,openXxxMenu,业务的逻辑修改归结为只对 api 的修改,成为 service 层
  4. 业务对象封装为对象,对上述两层的传入参数只能是对象,不能是属性,成为 data 层
  5. 对数据操作等公用算法封装 api,成为 util 层
  6. 后端的 api 请求封装为类,成为 api 层
  7. 对复杂的 UI 类封装为动态 chainable 类,支持链式调用;对简单的 UI 类封装为 static 类,无需实例化

其它

  1. 用 axios 不用 cy.request
  2. 原则上不允许有 eslint 问题
  3. 待 verify 的 case list 原则上不允许有 case 间相互依赖
  4. 对上述第 3 条而言,环境初始化和数据初始化等非业务 verify case,封装进 init 类型 case,cypress 中使用不同 case 集进行先后调用
  5. cypress 的 command 封装,只针对与特定页面无关操作,例如 getAndClick/ clearAndType,不封装单个页面的序列操作,以便于团队内多人开发


↙↙↙阅读原文可查看相关链接,并与作者交流