** cypress coding notice 个人编码守则 **
- 尽量用 cy.get 不用 chain,例如 cy.get().contains cy.get().eq() 等 chain
- 将页面封装为类,对任何单页面的修改归结于对一个类的修改,成为 UI 层
- 跨页面的操作封装为 API,如 login,logout,openXxxMenu,业务的逻辑修改归结为只对 api 的修改,成为 service 层
- 业务对象封装为对象,对上述两层的传入参数只能是对象,不能是属性,成为 data 层
- 对数据操作等公用算法封装 api,成为 util 层
- 后端的 api 请求封装为类,成为 api 层
- 对复杂的 UI 类封装为动态 chainable 类,支持链式调用;对简单的 UI 类封装为 static 类,无需实例化
其它
- 用 axios 不用 cy.request
- 原则上不允许有 eslint 问题
- 待 verify 的 case list 原则上不允许有 case 间相互依赖
- 对上述第 3 条而言,环境初始化和数据初始化等非业务 verify case,封装进 init 类型 case,cypress 中使用不同 case 集进行先后调用
- cypress 的 command 封装,只针对与特定页面无关操作,例如 getAndClick/ clearAndType,不封装单个页面的序列操作,以便于团队内多人开发