6

分度器テスト スイートの実行中に、アプリケーションによって行われたネットワーク リクエストをキャプチャしたいと考えています。

BrowserMob Proxyは、このための優れたツールのようです。

次のようにbrowsermob-node node.js バインディングを使用して、BrowserMob Proxy を分度器に統合したいと思います。

  • onPrepare: 新しいプロキシを作成して起動します
  • beforeEach: 新しい HAR を開始します
  • afterEach: HAR をファイルに書き込みます
  • onComplete: プロキシを停止します

ただし、browsermob-node の API では、各メソッドにコールバックを渡す必要がありonPrepareonComplete同期していると見なされます。done渡すことができるコールバックはありません。

私のテストは、Firefox と iOS と Android (Appium 経由) で実行されます。

4

2 に答える 2

3

コールバックをdenodeifyする必要があります。つまり、Protractor が待機するようにそれらを Promise に変換する必要があります。

代替案 1: 既に含まれている protractor.promise を使用する

  //...
  onPrepare: function() {
    var deferred = protractor.promise.defer();
    proxy.doHAR('http://yahoo.com', function(err, data) {
      if (err) {
        deferred.reject('ERROR: ' + err);
      } else {
        deferred.fulfill(data);
      }
    });
    return deferred.promise;
  }

代替案 2: Q ライブラリを使用する

var Q = require('q');

  //...
  onPrepare: function() {
    var proxy_doHAR = Q.nfbind(proxy.doHAR);
    return proxy_doHAR('http://yahoo.com');
  }

詳細はこちらこちら

于 2014-09-01T19:37:26.063 に答える