【问题标题】:Does TestCafe require useRole call in every test/beforeEachTestCafe 是否需要在每个 test/beforeEach 中调用 useRole
【发布时间】:2019-02-28 18:54:19
【问题描述】:

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

我们的应用程序需要用户身份验证,现在我们只测试一个用户,所以我们不需要切换用户会话。

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

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

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

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

【问题讨论】:

    标签: testing automation automated-tests e2e-testing testcafe


    【解决方案1】:

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

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

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

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

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

    最后,是的,useRole 重新加载应用页面,因为每个测试都在没有页面历史记录的沙盒中开始。

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

    【讨论】:

    • 谢谢我一直在深入挖掘并在我拥有的另一个网站上进行测试。我意识到我也必须在 useRole 之后手动使用 navigateTo,因为我的应用程序会将匿名用户重定向到登录名。所以 tc 重新开始,被重定向到登录,然后用 userRole 刷新,但卡在不应该的地方。
    猜你喜欢
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    相关资源
    最近更新 更多