looser coupling between running and reporting UIs
Currently, the build process compiles the markup from main.html with the benchpress harness html in template.html, outputting it as a single index.html in the build folder. Because the code under test and the reporting UI are all in the same context, certain constraints are placed on the reporting UI that make it difficult to make great. For example:
- The reporting app can't be an Angular app, because it can't rely on a certain version of Angular being loaded, which adds up to a lot of imperative JavaScript to make the UI interactive. This also makes testing of the app difficult.
- Same with using other libraries like jQuery, bootstrap, etc.
- CSS used for the reporting dashboard is also applied to the markup under test, potentially impacting performance
It would make the development experience of benchpress better if the benchmark code could be executed in an iframe with only the code under test + more limited version of the bp.js lib. This would require a more intelligent server component to run the benchmarks, which could manage messaging between the runner and the reporting app.
Jeff, I already set up an external server for this (for AngularDart) which is agnostic to the repo or the frontend. Let's talk on using that one – or upgrading it to support these use cases.
Can you point me to the source for this?
Per some discussion with @tbosch yesterday, the reporting/control application should by default execute the benchmarks in an iframe, but should give the user the option of running each new run (not each sample) in its own new incognito window.