ブラウザーから表示したときに正しく読み込まれる単純な 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'
};