1

ブラウザーから表示したときに正しく読み込まれる単純な angular / requirejs / node プロジェクトがあります。カルマを設定して e2e テストを取得しようとしています。

angular-require-js シードからすべての e2e 構成とディレクトリ構造を自分のプロジェクトにコピーしました。残念ながら、私自身のプロジェクトでのテストでは、奇妙な (そして変化し続ける!) 結果が得られます。私が実行しようとしている簡素化されたテストは次のとおりです。

describe('My Application', function() {
    beforeEach(function() {
        browser().navigateTo('/');
        sleep(0.5);
    });

    it('shows an "Ask a Question" button on the index page', function() {

        expect(element('a').text()).toBe('Ask a Question');

    });
});

時々、テストは失敗します

Executed 1 of 1 (1 FAILED) (0.785 secs / 0.614 secs)

Firefox 22.0 (Mac) My Application shows an "Ask a Question" button on the index page FAILED
element 'a' text
http://localhost:9876/base/test/lib/angular/angular-scenario.js?1375035800000:25397:     Selector a did not match any elements.

(しかしa、ページには要素があります!)

時々テストがハングします

Executed 0 of 0! これらの場合、テスト ランナー ブラウザーはテストを実行しようとしていることを示しますが、完了しません。

ずっとこのままでいい

永遠にこのままです。このハング中にアプリがブラウザに表示されます。

それなしelement('a')では常に通過します

一貫した結果を得る唯一の方法は、element(). 私が(true).toBe(true)を期待すると、1回のテストのうち1回は常にパスします。

どうすればこれをデバッグできますか?

どう進めばいいのか途方に暮れています。テスト ブラウザは、関連する 'a' 要素とすべてを含む、私のアプリを正しく表示しています。テストランナー自体は、何かを実行する必要があることを時々認識しているようで、a要素を決して見つけられません。テスト実行プロセスをステップ実行する方法はありますか? これは [x] の設定が間違っている場合によくある問題ですか?

ご提案ありがとうございます。

karma-e2e.conf.js

basePath = '../';

files = [
  'test/lib/angular/angular-scenario.js',
  ANGULAR_SCENARIO_ADAPTER,
  'test/e2e/**/*.js'
];

autoWatch = false;

browsers = ['Firefox'];

singleRun = true;

proxies = {
  '/': 'http://localhost:3000/'
};

urlRoot = "__karma__";

junitReporter = {
  outputFile: 'test_out/e2e.xml',
  suite: 'e2e'
};
4

1 に答える 1