testing - TestCafe 是否需要在每个 test/beforeEach 中调用 useRole
问题描述
我一直在为需要用户身份验证的应用程序评估 TestCafe。文档不是很清楚,我很难直接回答我们应该如何使用 userRole。
我们的应用程序需要用户身份验证,现在我们只测试一个用户,所以我们不需要切换用户会话。
我已经定义了 aRole
并且它正确地进行了身份验证。但我注意到以下几点:
- 我需要
useRole
在每个测试中首先调用才能使用经过身份验证的会话 - 每次
useRole
调用(每次测试中的第一次)TestCafe 将浏览器导航回原始登录 URL(或任何preserveUrl
保存登录后的 URL)
这些陈述中的任何一个都是错误的吗?我无法想象这在真实环境中是如何工作的,这是大量的重定向。
第 2 项似乎是正确的,devexpress github 贡献者回答“目前,TestCafe 不能在不重新加载或触发页面导航的情况下使用角色”,所以如果我必须调用useRole
每个测试,这实际上会使 HTTP 导航负载加倍。
解决方案
的目的useRole
是仅对应用程序进行一次身份验证(每个用户):这意味着您将在第一个测试中看到登录页面,所有其他测试将直接在用户已通过身份验证的应用程序页面上开始。
问题是每个测试都在沙箱中运行。沙箱是每个测试而不是每个夹具。这意味着当测试开始执行时,它会在一个没有 cookie 和本地存储的全新沙箱中开始。
重新应用 cookie 和本地存储的唯一方法是调用useRole
. 这就是为什么useRole
必须在每次测试开始时调用。
useRole
是一个巨大的节省时间。当我开始使用 TestCafe 时(一年多前)useRole
还不存在,每个测试都从提供登录页面开始。
useRole
当您需要在测试中在不同用户之间切换时,它会更加有用。
然后完成,是useRole
的,重新加载应用程序页面,因为每个测试都在没有页面历史记录的沙箱中开始。
您正在寻找的是一个不存在的功能:不要在测试之间重新加载页面。如果您不想每次都重新加载页面,请在一个test
方法中完成所有测试。
推荐阅读
- r - 将表型和基因型转换为 R 中的列联表
- wordpress - 添加新产品时自动添加所有 WooCommerce 产品属性
- vb.net - Visual Basic 验证
- javascript - Select2 追加新选项文本为空白
- r - R lme4ord 安装错误:“错误:对象 'sigma' 未由 'namespace:lme4' 导出”
- flutter - Flutter:以编程方式导致使用 darkTheme
- react-native - 将 prop 从组件传递到堆栈导航器
- c - cublas 矩阵矩阵乘法在应用于具有多个 GPU 的一个非常长的维度的矩阵时会产生内部错误
- html - 如何使用 HTML 并排放置两个投票项目?
- node.js - 将 Amazon DynamoDB 与 jest 一起使用 - 如何在测试运行之前等待数据库填充?