Protractor と Cucumber を使用して、Web アプリケーション用の E2E テストを含むリポジトリを作成しようとしています。このリポジトリから始めました: https://github.com/spektrakel-blog/angular-protractor-cucumber
分度器にアプリケーションを通常の Web ページとして扱うように強制すると、テストは正常に実行されます。テスト ランナーはアプリケーションとやり取りしており、何らかの結果を期待しています。問題は、「Then」アサートをチェックする前に、ゾーンが安定するのを待つために分度器にAngularを検出させたいということです。
ここに私のprotractor.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 の最新バージョンを使用しています。どんな助けでも大歓迎です。事前にどうもありがとうございました!