使用NavigationTo

时间:2019-02-25 21:41:30

标签: testcafe

我注意到我已经使用navigateTo进行使用已认证用户的测试。如果我用.page定义它们,它只是将我发送回登录屏幕,因为似乎看不到角色/状态。

我认为这是有意的,但文档尚不清楚,但这是我所做的一个假设,可能会影响我的实际问题。

我还相信,任何beforeEach逻辑都会在NavigationTo方法之前运行 ,这会破坏我们需要“ waitForAngularJS”的逻辑。

我有一个waitForAngularJS方法,我改用了官方的waitForAngular。在不使用身份验证的情况下(当我可以使用.page...时,它可以正常工作,但在使用身份验证时,它不能在“导航到”页面上运行。

fixture `demo1`
    .beforeEach(async () => {
        await waitForAngularJS();
    });

test('modal title', async t => {
    await t
        .useRole(regularUser)
        .navigateTo('http://127.0.0.1/some/page')
        // .. the "wait for angular" needs to run here, but can't
        .expect(Selector('.modal-title').innerText).eql('My Modal');
});

在该位置放置.wait(1000)可解决我的问题。当我使用.debug()时,我可以知道waitForAngular逻辑尚未在新页面上运行。

编辑:根据the forums,逻辑顺序是正确的:

  
    

打开灯具页面;     执行beforeEach函数;     执行useRole命令:转到角色初始化页面(useRole命令的第一个参数),执行初始化函数并以注册用户的身份进入先前打开的页面;     恢复测试。

  

1 个答案:

答案 0 :(得分:1)

e2e测试应该与用于呈现页面的框架无关。我认为您不应使用类似waitForAngularJS的方法。 只是这样重写Expect语句:

await t
  .expect(Selector('.modal-title').innerText).eql('My Modal', {timeout: 10000});

您也可以直接在TestCafe命令行上设置assertion timeout