Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/axemclion/browser-perf

Performance Metrics for Web Browsers
https://github.com/axemclion/browser-perf

browser-perf javascript metrics perfmatters performance performance-metrics web-performance wiki-page

Last synced: about 2 months ago
JSON representation

Performance Metrics for Web Browsers

Awesome Lists containing this project

README

        

# browser-perf

- Is a NodeJS based tool
- For measuring browser performance metrics (like frame rates, expensive layouts, paints, styles, etc.)
- For Web pages, Cordova/Phonegap and other Hybrid applications.
- Metrics are measured while mimicking real user interactions - clicking buttons, typing content, etc.
- Tool collects the metrics from sources like `about:tracing`, Chrome Devtools timeline, IE UI Responsiveness tab, Xperf, etc.
- Monitor this information regularly by integrating the tool with continuous integration systems.

## Documentation
Read more on [why browser-perf here](https://github.com/axemclion/browser-perf/wiki#why-browser-perf-).

Please see the [wiki pages](https://github.com/axemclion/browser-perf/wiki/_pages) for more information.
You can find information about supported browsers, [getting started](https://github.com/axemclion/browser-perf/wiki/Setup-Instructions), [command line usage](https://github.com/axemclion/browser-perf/wiki/Command-Line-Usage), reference for the [Node API](https://github.com/axemclion/browser-perf/wiki/Node-Module---API) etc.

## Usage

### Command line

Install the tool using `npm install -g browser-perf` and then run

```
$ browser-perf http://yourwebsite.com --browsers=chrome,firefox --selenium=ondemand.saucelabs.com --username=username --accesskey=accesskey
```

- Replace username and access key with the [saucelabs.com](http://saucelabs.com) username and accesskey
- If you have [Selenium](http://www.seleniumhq.org/download/) set up, you could substitute `ondemand.saucelabs.com` with `localhost:4444/wd/hub`
- You can also use [BrowserStack](http://browserstack.com) credentials and substitute `ondemand.saucelabs.com` with `hub.browserstack.com`

See the [wiki page](https://github.com/axemclion/browser-perf/wiki/Command-Line-Usage) for an extensive list of command line options and more usage scenarios.

Here is a video of the command line usage
[![Demo of browser-perf](https://img.youtube.com/vi/0HmAFrUCIUI/0.jpg "Demo of browser-perf")](https://www.youtube.com/watch?v=0HmAFrUCIUI)

## Node Module

browser-perf is also a node module and has the following API

```javascript

var browserPerf = require('browser-perf');
browserPerf('/*URL of the page to be tested*/', function(err, res) {
// res - array of objects. Metrics for this URL
if (err) {
console.log('ERROR: ' + err);
} else {
console.log(res);
}
}, {
selenium: 'http://localhost:4444/wd/hub',
browsers: ['chrome', 'firefox']
username: SAUCE_USERNAME // if running tests on the cloud
});

```
See the [API wiki page](https://github.com/axemclion/browser-perf/wiki/Node-Module---API) for more details on configuring.
Instructions on using it for Cordova apps is also on the [wiki](https://github.com/axemclion/browser-perf/wiki/Setup-Instructions#wiki-cordova-applications)

## Scenario
- Websites can become slow
- over time as more CSS and Javascript is added
- due to a single commit that adds expensive CSS (like gradients)
- We use tools in [Chrome](https://developers.google.com/chrome-developer-tools/docs/timeline) or [Internet Explorer](http://msdn.microsoft.com/en-us/library/ie/dn255009%28v=vs.85%29.asp) only when the site is too slow.
- Tools like YSlow and Page Speed are great, but will it not be better if the are a part of continuous integration?
- Tools like this(http://npmjs.org/package/browser-perf) and [Phantomas](https://github.com/macbre/phantomas) can fill the gap to monitor site performance every time a checkin is performed.

## License
Licensed under BSD-2 Clause. See License.txt for more details

## Contact
Please ping [me](http://twitter.com/nparashuram) if you would need help setting this up.