如何解决登录后重定向逻辑不适用于 TestCafe 角色
我正在为 React SPA 编写 e2e 测试。我的登录逻辑如下:
- 如果用户在未登录的情况下访问受保护的路由,该路由将保存在 localStorage (
post_login_redirect
) 中,然后用户将被重定向到登录页面。 - 登录成功后,如果localStorage中存在
post_login_redirect
,则重定向到保存的路由,否则重定向到home(/
)。
在我的测试中,我在每个钩子之前的夹具中调用了 useRole。见下文:
const adminUser = Role(
`http://myapp.com/login`,async t => {
await t
.typeText('input[name="username"]',"admin@admin.com")
.typeText('input[name="password"]',"12345")
.click('button[type="submit"]');
}
);
fixture("Some fixture").page("http://myapp.com/companies/").beforeEach(async t => {
await t.useRole(adminUser);
});
test("Company list",async t => {
await t.expect(Selector("div").withText("COMPANY LIST").exists).ok();
});
运行此测试时会发生什么:
- testcafe 导航到
/companies
- 我的应用代码检测到用户未登录,创建
post_login_redirect
并重定向到/login
- testcafe 通过导航到
/login
并提交表单来执行我的角色 - 我的应用代码将用户重定向到
/
(而不是保存在 localStorage 中的预期/companies/
) - testcafe 导航到
/login
据我所知,在第 3 步,localStorage 正在被清除,这解释了第 4 步。
如果我对我的角色使用 preserveUrl:true
,则不会执行第 5 步。无论如何它应该导航到 /companies
,因为它是我的装置定义的 URL。
我希望在 Role 执行后恢复第 2 步中的 localStorage,或者 testcafe 记住它在 Role 执行后需要导航到的实际 URL。
感谢您的帮助。
解决方法
您的测试似乎是正确的,TestCafe 应该可以使用它。使用 Roles 机制应该不会清除 localStorage,因此您的 post_login_redirect
值被清除是意料之外的。
我们愿意协助您研究该问题。请使用以下链接在 GitHub 上创建一个单独的问题并共享您的项目或创建一个演示该问题的最小示例:https://github.com/DevExpress/testcafe/issues/new?assignees=&labels=&template=bug-report.md。
如果您无法在 GitHub 上共享您的项目,可以将其发送至 support@devexpress.com
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。