不要告诉任何人,但我们的应用程序尚未单页.我可以通过为路由提供别名来等待给定的XHR请求,但是如何等待某个导航完成并且浏览器安全地位于新页面上?
使用cypress.io测试角度网页时,最好/最可靠的方法是检测页面何时完全加载和空闲.不只是onload事件.需要包括所有XHR请求,角度摘要周期完成以及所有渲染完成,包括所有动画完成.
原因是此时我想测试该页面不包含元素并且无法测试,直到上述所有内容完全完成.
我收到表单,当我触发单击提交按钮时,这会导致刷新当前页面。之后我想做一些断言。我如何知道页面已完成刷新并且我可以开始搜索元素?
cy.get('#formButton').click() // adds new item and refresh page
// do assertions on page
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一些基本测试来尝试新的Cypress库。在我的测试中,我正在cy.visit('http://mywebsite.com');加载一个使用 SystemJS 的 AngularJS 应用程序。
如果我正确理解 Cypress,我不需要做任何其他事情,它会确保在运行其他任何操作之前加载页面。然而,这似乎不起作用,因为页面已加载,但 SystemJS 仍在加载模块。
在不使用 的情况下,如何让 Cypress 等待所有 SystemJS 模块加载,然后再运行更多测试cy.wait(5000)?
编辑
感谢 Dwelle,这是适合我的解决方案。我将初始的 System.import 包装在一个承诺中,一旦 AngularJS 应用程序启动,该承诺就会得到解决。
window.APP_READY = new Promise(function(resolve, reject) {
System.import('app').then(function(app) {
angular.element(document).ready(function() {
angular.bootstrap(document, ['app']);
resolve();
});
});
});
Run Code Online (Sandbox Code Playgroud)
然后在测试中
cy.visit('http://mywebsite.com').its('APP_READY');
Run Code Online (Sandbox Code Playgroud)