javascript - 使用量角器进行 e2e 测试的 Google 优化
问题描述
应实施登录优化以加快所有 e2e 测试的执行时间。目前,在我们进行每次测试后,Chrome 浏览器都会关闭,并且应该再次进行下一次会话登录,以便继续进行另一次测试。在这个问题上应该如何以及应该改变什么。有什么建议吗?
解决方案
您可能会考虑使用不同的 selenium 节点运行 selenium 网格。如果您在每次测试结束时不运行 browser.quit 或 browser.close,您的浏览器实例可以配置为在 selenium 网格中无休止地运行。这样使用上面提到的 Xotabu4 方法,您可以使用browser.manage().addCookie(...)
. 如果需要,您还可以清除浏览器 cookie。
现在您正在运行的浏览器实例将拥有您正在运行的测试的 auth cookie,您将不再需要担心登录。如果您使用 docker 容器在 selenium 网格中运行这些测试会更好,因为您可以监控不同的 chrome/firefox 节点以及它们中的任何一个是否死亡或重新启动。您必须配置 chrome 节点容器,以便每次重新启动节点时,将身份验证 cookie 添加到浏览器。
我给您的另一个建议是在您的自动化测试环境中禁用身份验证检查并在不同的环境中测试身份验证。我知道此建议的质量会因您的应用程序而异。
每个需要登录的测试场景在每次运行任何其他测试之前运行登录功能。其中一个常见的事情是登录功能。如果您将该功能抽象出来并确保该功能运行良好,然后禁用该功能并测试其他所有功能。你会节省很多时间。您唯一需要确定的是,登录功能以完全相同的方式与应用程序的其余移动部分集成。
推荐阅读
- intellij-idea - 在 IntelliJ IDEA 中连接设备
- typescript - Typescript intellisense 无法计算正确的类型,而是使用“any”
- node.js - 以安全的方式将 Jira 与 Lambda 链接起来以隐藏凭证
- linq - 应用于多个列时的聚合函数给出错误的结果
- sql - 一个查询中的两个变量 - pl/sql 过程
- mysql - 在 mysql 中重置自动增量值的真实示例
- angularjs - 优化 angularjs 中的 ng-bind 指令
- redis - 为什么从 redis zset 构造的 HashSet 保持排序?
- python - 无法合并两个排序的单链表,因为“类型对象'_Node'没有属性'_element'”
- javascript - Django 频道 1.x 如何对用户进行身份验证