Cypress 中的页面对象模式?

bku*_*era 2 e2e-testing cypress

我想使用类似于 Selenium 等框架中存在的页面对象模式的工作流程。login.spec.js我想在 my 中使用 my editSettings.spec.js,因为它需要用户登录。

我如何在赛普拉斯中实现这一目标?我可以从一个测试文件导出函数以在另一个测试文件中使用吗?

bku*_*era 6

是的,Cypress 支持在 UI 中创建和重用操作的功能,例如以用户身份登录。

然而,Cypress 还允许您比用户更强大地控制浏览器的状态。

例如:我创建一个测试,“用户可以使用有效的用户名和密码登录” - Cypress 导航到登录页面,在用户字段中键入,在密码字段中键入并单击“登录”按钮。页面对象模式会让您在每个需要用户登录的测试(大多数测试)中重用此操作

赛普拉斯支持这一点;然而,这比应有的速度要慢。导航到登录页面、输入信息、处理响应以及导航到正在测试的页面需要花费大量时间。 相反Cypress的 API 允许执行以下操作:

  • 用于使用cy.request()登录凭据直接访问您的服务器。这不需要应用程序的状态,不需要在字段中输入,不需要单击按钮或页面直接
  • 您的站点使用的任何 cookie都会自动设置,或者您可以使用响应设置 localStorage
  • 将此设置为自定义命令,在每次测试之前调用它,然后繁荣 - 您几乎立即生成了用户状态,最重要的是无碎片