我正在尝试使用 Protractor 和 Cucumber 为我的 Web 应用程序创建一个包含 E2E 测试的存储库。我从这个存储库开始:https ://github.com/spektrakel-blog/angular-protractor-cucumber
当我强制量角器将应用程序视为常规网页时,测试运行良好。测试运行程序正在与应用程序交互并期待一些结果。问题是,我想让 Protractor 检测 Angular,以便在检查“然后”断言之前等待区域稳定。
这是我的量角器.conf.js:
exports.config = {
allScriptsTimeout: 30000,
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--no-sandbox']
}
},
directConnect: true,
baseUrl: 'http://<ci-server-address>/',
specs: [
'./e2e/features/*.feature'
],
framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),
cucumberOpts: {
require: ['./e2e/steps/**/*.ts'],
strict: true,
format: [
'json:reports/summary.json'
],
dryRun: false,
compiler: []
},
onPrepare() {
browser.ignoreSynchronization = true;
require('ts-node').register({
project: 'e2e/tsconfig.e2e.json'
});
}
};
简而言之-测试使用以下配置运行,但是当我删除时browser.ignoreSynchronization = true;
,我收到以下错误:Timed out waiting for asynchronous Angular tasks to finish after 30 seconds. This may be because the current page is not an Angular application.
.
到目前为止我尝试过的事情(没有改进):
- 添加
ng-app
到<body>
标签 - 检查
window.getAllAngularRootElements()
-app-root
正确返回 - 检查
window.getAllAngularTestabilities()
- 返回一个Testability
对象 - 在 Chrome 上启动测试(有或没有沙箱)
- 在 Firefox 上启动测试
- 尝试部署我们的应用程序的 CI 服务器和本地环境
ng serve
我正在使用最新版本的 Protractor、Cucumber、Chai 和 TypeScript。任何帮助将非常感激。非常感谢您!