I'd like to capture the network requests made by my application during a Protractor test suite run.
BrowserMob Proxy looks like a great tool for this.
I'd like to integrate BrowserMob Proxy into Protractor using the browsermob-node node.js binding as follows:
onPrepare
: Create a new proxy and start itbeforeEach
: start a new HARafterEach
: write the HAR to fileonComplete
: stop the proxy
However, browsermob-node's API requires that I pass callbacks to each of the methods and onPrepare
, onComplete
are assumed to be synchronous. There is no done
callback that I could pass.
My tests run on Firefox and iOS and Android (via Appium).
You need to denodeify callbacks, i.e. turn them into Promises so Protractor will wait for them.
Alternative 1: Using already included protractor.promise
Alternative 2: Using Q library
More info here and here.
Protractor easily provides active wait for certain conditions. After starting the proxy on 8887. I used
browser.driver.wait
for this solution: