我一直在为需要用户身份验证的应用评估TestCafe。该文档不是很清楚,我很难直接回答我们应该如何使用useRole。
我们的应用程序需要用户身份验证,现在我们仅测试一个用户,因此我们无需切换用户会话。
我已经定义了Role
并且它可以正确验证。但是我注意到了以下几点:
useRole
才能使用经过身份验证的会话useRole
(在每个测试中都是第一次),TestCafe会将浏览器导航回原始登录URL(或任何preserveUrl
保存登录后的内容)这两个陈述中的任何一个都不对吗?我无法想象它在实际环境中如何工作,这是一个疯狂的重定向。
项目2似乎是正确的,一位devexpress github贡献者回答说:“当前,TestCafe在不重新加载或触发页面导航的情况下不能使用角色”,因此,如果我必须在每次测试中都调用useRole
,这实际上会使HTTP导航加倍加载。
答案 0 :(得分:6)
useRole
的用途是(每个用户)仅对应用进行一次身份验证:这意味着您将在第一个测试中看到登录页面,而所有其他测试将直接在应用页面上启动,用户已经通过身份验证。
问题在于每个测试都在沙箱中运行。沙盒是根据测试而不是夹具进行的。这意味着当测试开始执行时,它将在没有cookie且没有本地存储的全新沙盒中启动。
重新应用cookie和本地存储的唯一方法是调用useRole
。这就是为什么必须在每次测试开始时调用useRole
的原因。
useRole
可以节省大量时间。当我(一年多以前)开始使用TestCafe时,useRole
不存在,每个测试都将从提供登录页面开始。
useRole
在需要在测试内切换不同用户之间时更为有用。
然后要完成,是的,useRole
将重新加载App页面,因为每个测试都在没有页面历史记录的沙箱中开始。
您正在寻找的功能是不存在的:不要在测试之间重新加载页面。如果您不想每次都重新加载页面,请使用单个test
方法进行所有测试。