TestCafe是否在每个test / beforeEach中都需要useRole调用

问题描述 投票:4回答:1

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

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

我已经定义了一个Role并且它正确地进行了身份验证。但我注意到以下几点:

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

这些陈述中哪一个是错的?我无法想象这在真实环境中是如何工作的,这是一个疯狂的重定向。

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

testing automated-tests e2e-testing testcafe
1个回答
6
投票

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

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

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

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

当您需要在测试中切换不同用户之间时,useRole更有用。

然后完成,是的,useRole重新加载应用页面,因为每个测试都在没有页面历史记录的沙箱中启动。

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

© www.soinside.com 2019 - 2024. All rights reserved.