Skip to content

aerwin/sitespeed-utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

Convenience utility to run sitespeed.io tests using ES6 promises. In addition, it faciliates integration of sitespeed.io budget tests with Mocha.

usage examples:

run a sitespeed.io test

code

var sitespeedUtil = require('sitespeed-utils');

// load config from a file(path can be specified)
var sitespeedConfig = require('./config/sitespeed.json');

// run test
sitespeedUtil.run(sitespeedConfig).then(
  function(data) {
    // Tests completed without error. The data
    // param contains the full set of everything
    // sitepseed.io generates.
  },
  function(errors) {
    // error occured
  }
);

sitespeed.json example

The JSON passed to sitespeedUtil.run can contain any parameter supported by sitespeed.io.

{
  "url": "http://www.cnn.com",

  "comment-on-depth": "Depth of 0 has to be specified as a string or it is ingnored.",
  "depth": "0"
}

run performance budget test using mocha

code

var sitespeedUtil = require('sitespeed-utils');

// load config from a file(path can be specified)
var config = require('./config/mocha-budget.json');

// Execute test
describe('Sitespeed Utils Test', function() {
    // Determine the mochaTimeout threshold
    var mochaTimeout = (typeof config.mochaTimeout === 'number' && config.mochaTimeout) || 120000;

    // Need to bump up time for the Sitespeed tests
    this.timeout(mochaTimeout);

    it('performanceBudgetTest', function() {
        return sitespeedUtil.mochaBudgetTest(config);
    });
});

mocha-testcases.json example

The schema for Mocha tests assumes that you'll want to run tests for 1 to N pages on a single site. For convenience, there is a testCases block, and mochaBudgetTest will execute a test for each one. Each test case can use different sitespeed.io params.

{
  "baseUrl": "http://mochajs.org",
  "mochaTimeout": 120000,
  "testCases": [
    {
      "pathname": "/",
      "budget": {
        "rules": {
          "criticalpath": 63,
          "spof": 90,
          "cssnumreq": 90,
          "cssimagesnumreq": 90,
          "jsnumreq": 90,
          "yemptysrc": 90,
          "ycompress": 66,
          "ycsstop": 90,
          "yjsbottom": 90,
          "yexpressions": 90,
          "ydns": 24,
          "yminify": 89,
          "redirects": -1,
          "noduplicates": 88,
          "yetags": 22,
          "yxhr": 90,
          "yxhrmethod": 90,
          "mindom": 90,
          "yno404": 90,
          "ymincookie": 90,
          "ycookiefree": 35,
          "ynofilter": 90,
          "avoidscalingimages": 90,
          "yfavicon": 90,
          "thirdpartyasyncjs": 90,
          "cssprint": 90,
          "cssinheaddomain": 79,
          "syncjsinhead": 89,
          "avoidfont": 39,
          "totalrequests": 73,
          "expiresmod": -1,
          "longexpirehead": -1,
          "nodnslookupswhenfewrequests": 90,
          "inlinecsswhenfewrequest": 90,
          "textcontent": 5,
          "thirdpartyversions": 90,
          "ycdn": -1,
          "connectionclose": -1,
          "privateheaders": 89
        }
      }
    }
  ]
}

About

Convenience utility to run sitespeed.io tests using ES6 promises. In addition, it faciliates integration of sitespeed.io budget tests with Mocha.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors