4

分度器テストをいくつか行っていますが、次のようなエラーが表示されることがあります。

Message:
     timeout: timed out after 10000 msec waiting for spec to complete
   Stacktrace:
     undefined

一部のテストではランダムに発生する可能性があります。通常、BrowserStack でテストすると、3 ~ 5 ビルドに 1 回エラーが表示されます。しかし、最近、私は SauceLabs とほぼすべて (すべて!) を試しましたが、すべてのテストがそのエラーで失敗するわけではありません。おそらく、SauceLabs は非常に遅いため、エラーが頻繁に発生します...

だからここに質問があります:

  1. 分度器/セレンでテスト実行タイムアウトを変更する方法はありますか? BrowserStack/Saucelabs でも変更する必要があります。
  2. エラーが頻繁に発生するのはなぜですか? テストに何か問題がありますか? ほとんどの場合、複雑でも実行時間も長くないようです。繰り返しますが、ローカル マシンではほとんどの場合問題ありません。

次に例を示します。

   it('should check that login gives error on empty or incorrect email', function () {
      p.get('/#/login');
      p.findElement(protractor.By.css('button[type="submit"]')).click();
      expect(p.findElement(protractor.By.css('.alert-danger')).getText()).toEqual('E-mailadres is niet geldig');
      p.findElement(protractor.By.model('user.email')).sendKeys('test-1xtc.vc');
      p.findElement(protractor.By.css('button[type="submit"]')).click();
      expect(p.findElement(protractor.By.css('.alert-danger')).getText()).toEqual('E-mailadres is niet geldig');
      p.findElement(protractor.By.model('user.email')).clear();
    });

アプリはAngularJS、セレン2.20、分度器0.20.1を使用しています

4

5 に答える 5

3

分度器/セレンでテスト実行タイムアウトを変更する方法はありますか?

allScriptsTimeoutはい:)分度器設定で(分度器FAQから)経由で行うことができます

defaultTimeoutIntervalinjasmineNodeOptsオプションを設定することもできます (分度器の referenceConf.jsから)

エラーが頻繁に発生するのはなぜですか? テストに何か問題がありますか? ほとんどの場合、複雑でも実行時間も長くないようです。繰り返しますが、ローカル マシンではほとんどの場合問題ありません。

あなたのテストを見ずに言うのは難しい. あなたが提供した例は私には良さそうです。

于 2014-03-31T13:53:27.110 に答える
2

あなたのプロジェクトは angularjs プロジェクトですか? どこかで $interval または $timeout サービスを使用していますか? その場合は、$timeout の代わりに $interval を使用し、オプションの「count」パラメーターを 1 に調整してみてください ( https://docs.angularjs.org/api/ng/service/ $interval#usage) 。 . 最近、同様の問題が発生し、この方法で解決しました。

于 2015-06-22T22:56:11.950 に答える
1

config上記の回答で言及されていないファイルの別のプロパティを使用して解決しました。

getPageTimeout : 100000 //in millis, i.e., 100 secs
于 2015-11-03T07:51:27.277 に答える
0

itジャスミンには、仕様ごと、つまりジャスミン フレームワークごとにタイムアウトがあります。そのため、いずれかの仕様 ( it) がジャスミン仕様のデフォルトのタイムアウトを超えると、その仕様に失敗します。

解決策: 1 つの個別のスペックの jasmine スペック タイムアウトをオーバーライドするには、それに 3 番目のパラメーターを渡します。 it(description, testFn, timeout_in_millis)

it('description of test case', function() {
   /*your test 
               steps
                    here*/
},120000);//120 seconds timeout for this spec

タイムアウトの詳細について は、こちら

于 2016-11-05T12:28:43.790 に答える
0

ソースラボのデフォルト時間は 90 秒だと思います。秒単位の値をとるidleTimeout変数を使用して、conf.jsファイルから変更できます。例

idleTimeout = 90; // equals 90 seconds

  exports.config = {
  //Includes test sub-sub-foldersbefore any tests in sub folders 
  specs: ['tests/*/*/*.js', 'tests/*/*.js', ],


  // use jasmine 2
  framework: 'jasmine2',
  capabilities :  {
                browserName: "chrome",
                // this takes seconds so 120 would be 120 seconds.
                idleTimeout = 120;
            },
},

特定のスペック ファイルの値を変更する必要がある場合は、スペック ファイル内でこれを使用できます。または、saulabs の値が高くても DEFAULT_TIMEOUT_INTERVAL が低い場合、タイムアウトになります。

// this takes in miliseconds so 1000 = 1 second
jasmine.DEFAULT_TIMEOUT_INTERVAL = 120000;
于 2015-08-17T18:56:52.473 に答える