【问题标题】:Waiting for AngularJS initialization after using navigateTo使用 navigateTo 后等待 AngularJS 初始化
【发布时间】:2019-07-19 09:09:32
【问题描述】:

我注意到我必须使用navigateTo 进行使用已验证用户的测试。如果我用.page 定义它们,它只会让我回到登录屏幕,因为它似乎看不到角色/状态。

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

我也相信任何beforeEach 逻辑在navigateTo 方法之前运行,这会破坏我们需要“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命令的第一个参数),执行初始化函数,作为注册用户进入之前打开的页面; 继续测试。

【问题讨论】:

    标签: angularjs testing automated-tests web-testing testcafe


    【解决方案1】:

    e2e 测试应该与用于呈现页面的框架无关。在我看来,你不应该使用像waitForAngularJS 这样的方法。 只需像这样重写期望语句:

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

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

    【讨论】:

    • 我既同意又不同意,但在使用 github.com/DevExpress/testcafe-angular-selectors 时,不可知论的部分是没有意义的。
    • 这可以工作,但在采取行动之前需要断言。如果我必须点击触发元素,我需要在click() 之前显式添加一个“预期”,我一直在使用.expect(Selector('.ng-scope').exists).ok()
    猜你喜欢
    • 2016-07-27
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 2020-11-01
    • 2023-03-10
    • 2017-11-12
    • 2014-12-28
    相关资源
    最近更新 更多