TestCafe是否在每次测试之前/之前都要求useRole调用

时间:2019-02-28 18:54:19

标签: testing automated-tests e2e-testing testcafe

我一直在为需要用户身份验证的应用评估TestCafe。该文档不是很清楚,我很难直接回答我们应该如何使用useRole。

我们的应用程序需要用户身份验证,现在我们仅测试一个用户,因此我们无需切换用户会话。

我已经定义了Role并且它可以正确验证。但是我注意到了以下几点:

  1. 我需要在每次测试中首先致电useRole才能使用经过身份验证的会话
  2. 每次调用useRole(在每个测试中都是第一次),TestCafe会将浏览器导航回原始登录URL(或任何preserveUrl保存登录后的内容)

这两个陈述中的任何一个都不对吗?我无法想象它在实际环境中如何工作,这是一个疯狂的重定向。

项目2似乎是正确的,一位devexpress github贡献者回答说:“当前,TestCafe在不重新加载或触发页面导航的情况下不能使用角色”,因此,如果我必须在每次测试中都调用useRole,这实际上会使HTTP导航加倍加载。

1 个答案:

答案 0 :(得分:6)

useRole的用途是(每个用户)仅对应用进行一次身份验证:这意味着您将在第一个测试中看到登录页面,而所有其他测试将直接在应用页面上启动,用户已经通过身份验证。

问题在于每个测试都在沙箱中运行。沙盒是根据测试而不是夹具进行的。这意味着当测试开始执行时,它将在没有cookie且没有本地存储的全新沙盒中启动。

重新应用cookie和本地存储的唯一方法是调用useRole。这就是为什么必须在每次测试开始时调用useRole的原因。

useRole可以节省大量时间。当我(一年多以前)开始使用TestCafe时,useRole不存在,每个测试都将从提供登录页面开始。

useRole在需要在测试内切换不同用户之间时更为有用。

然后要完成,是的,useRole将重新加载App页面,因为每个测试都在没有页面历史记录的沙箱中开始。

您正在寻找的功能是不存在的:不要在测试之间重新加载页面。如果您不想每次都重新加载页面,请使用单个test方法进行所有测试。