sitespeed-utils

1.0.1 • Public • Published

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
        }
      }
    }
  ]
}

Package Sidebar

Install

npm i sitespeed-utils

Weekly Downloads

4

Version

1.0.1

License

Apache-2.0

Last publish

Collaborators

  • tonyerwin