我注意到我已经使用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命令的第一个参数),执行初始化函数并以注册用户的身份进入先前打开的页面; 恢复测试。
答案 0 :(得分:1)
e2e测试应该与用于呈现页面的框架无关。我认为您不应使用类似waitForAngularJS
的方法。
只是这样重写Expect语句:
await t
.expect(Selector('.modal-title').innerText).eql('My Modal', {timeout: 10000});
您也可以直接在TestCafe命令行上设置assertion timeout。