1

在 TestCafe 中使用角色时,我似乎无法让角色正确注销。或者,更重要的是,我无法使用相同的角色执行两个连续的测试。

一点背景:

我正在测试一个需要登录的企业网站(抱歉,无法共享)。使用t.useRole(account)登录时效果很好。当我有两个连续测试使用同一个帐户登录时,就会出现我的问题。第一次登录成功,第二次登录失败。发生这种情况时,我添加了控制台日志以告知登录块何时被调用并且我没有从第二个测试中收到。在阅读用户角色文档时,它显示当初始化角色时会生成一个 cookie,随后的 userRole 调用将重新加载给定帐户的页面。由于某种原因,这在我的环境中不起作用,因为我正在测试的页面被重定向到登录页面。
此时我的解决方案是发出注销方法,但这没有帮助。作为注销的一部分,我还尝试切换到匿名用户,但同样没有成功。

示例注销代码(使用页面模型):

async function logout (t) {
await t
    .expect(accountDropdown.exists).ok()
    .click(accountDropdown)
    .expect(accountLogout.exists).ok()
    .click(accountLogout)
    .useRole(Role.anonymous());
};

示例角色代码:

const normalUser = Role(`${url}`, async t=>{
console.log(' - Logging in as Normal User')
await t
    .expect(await loginEmail.exists).ok()
    .click(loginEmail)
    .typeText(loginEmail, env.Email)
    .click(loginPassword)
    .typeText(loginPassword, env.Password)
    .click(loginSubmit)
    if( manageAccount.exists ) {
        await t.click(manageAccount)
    } 
}, { preserveUrl: true });

在这一点上,我很难过。非常感谢任何帮助或建议。

4

1 回答 1

0

该问题是由同时使用preserveUrlpageUrl函数引起的。我们将在以下问题的背景下进一步调查此问题:

preserveUrl 和 pageUrl 函数不能一起工作

现在,我建议您删除 pageUrl,因为在使用 preserveUrl 时没有必要:

 const normalUser = Role(`${url}`, async t=>{
      console.log(' - Logging in as Normal User')
      // ...
 }, { preserveUrl: true });

 fixture `LiveManager` 
     //.page`URL`  
     .beforeEach( async t => {
       await t.setTestSpeed(0.85);
 })
于 2018-08-06T09:16:09.247 回答