I am looking for a way to regularly test the front-end performance of my web application.
Specifically, I'm interested in the time it takes to resolve hostnames, to get responses from the servers, to download/render/execute resources, etc. I also want to measure these things when interacting with the application, not just when loading the page.
I could use Firebug or Chrome Developer Tools while interacting with my web application manually, but I want this front-end performance testing to be a part of my continuous integration process. I want to have nightly front-end performance test results, so that it becomes easy to catch performance regressions. That is why one of my preliminary conclusions is that I want to leverage my existing functional Selenium/WebDriver test suite (or a subset of the test suite).
So assuming I'm using Selenium to interact with my web application, what I really need is a tool to measure the front-end performance in the browser.
So far I've looked at three options:
1) browsermob-proxy
browsermob-proxy is an open source proxy that captures performance data using the HAR format. It provides an HTTP REST API in addition to Java and NodeJS bindings. Because it's a proxy which analyzes HTTP traffic, it doesn't give me any information about what is happening in the browser (e.g. rendering and so on), which is what I am most interested in.
2) WebPagetest
WebPagetest is also open source software, and available as a free cloud service at webpagetest.org. It is possible (and not too hard) to set up a private instance of this service. I give it a URL and I get a performance report of the loading of that page. However, it doesn't allow me to monitor the application while I am interacting with it - which is vital - especially in a single page web application with a lot of stuff going on on the client-side - like mine.
3) Compuware APM AJAX Edition (formerly DynaTrace AJAX Edition)
Compuware APM AJAX Edition is free (as in gratis) proprietary software that uses browser plugins to capture information from the browser while browsing, meaning it can automatically gather data during a Selenium test suite execution.
It's pretty easy to automate it and integrate the execution of it into a continuous integration process, but the reporting leaves a lot to be desired. Test results are grouped into "sessions" which is the period from the browser window is opened until it is closed. There is no functionality for comparing test results over time, which makes it hard to track progress and catch regressions.
Compuware APM AJAX Edition is the best alternative I've seen so far - but there has to be something better out there - right?