我正在尝试创建一些基本测试来试用新的赛普拉斯库。在我的测试中,我cy.visit('http://mywebsite.com');
正在加载一个使用 SystemJS 的 AngularJS 应用程序。
如果我正确理解赛普拉斯,我不应该做任何其他事情,它会确保在运行其他任何事情之前加载页面。但是,这似乎不起作用,因为页面已加载,但 SystemJS 仍在加载模块。
如何让赛普拉斯等待所有 SystemJS 模块加载,然后再运行任何测试而不使用cy.wait(5000)
?
编辑
感谢 Dwelle,这是适合我的解决方案。我将初始 System.import 包装在一个 Promise 中,一旦 AngularJS 应用程序启动,该 Promise 就会得到解决。
window.APP_READY = new Promise(function(resolve, reject) {
System.import('app').then(function(app) {
angular.element(document).ready(function() {
angular.bootstrap(document, ['app']);
resolve();
});
});
});
然后在测试中
cy.visit('http://mywebsite.com').its('APP_READY');