8

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 の最新バージョンを使用しています。どんな助けでも大歓迎です。事前にどうもありがとうございました!

4

5 に答える 5

-1

baseUrl: 'http://<ci-server-address>/',分度器conf.jsで削除しようとしています

于 2018-05-15T07:41:07.550 に答える