The protractor easily provides an active expectation of certain conditions. After starting the proxy on 8887. I used browser.driver.wait for this solution:
// protractor.conf.js var browsermob = require('browsermob-proxy').Proxy; var webdriver = require('selenium-webdriver'); var fs = require('fs'); // ... var proxy; var conf = { // Typical protractor configuration // ... beforeLaunch: function(){ proxy = new browsermob({ port : 8887 }); }, onPrepare: function (){ browser.driver.get('http://localhost:8080/index.html'); var proxyReady = false; proxy.start(8888, function(err, data){ if (!err) { proxy.startHAR(8888, 'test', true, true, function(){ proxyReady = true; }); } else { console.error(err); } }); browser.driver.wait(function(){ return proxyReady; }); }, onComplete: function () { var proxyDone = false; proxy.getHAR(8888, function(err, resp) { if (!err) { console.log('har saved at output.har'); fs.writeFileSync('test/diagnostics/output.har', resp, 'utf8'); } else { console.err('Error getting HAR file: ' + err); } proxy.stop(8888, function() { proxyDone = true; }); }); return browser.driver.wait(function(){ return proxyDone; }); }, }
source share