Skip to content

About

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

Resources

Stars

1 star

Watchers

2 watching

Forks

Latest commit

 

History

14 Commits

Folders and files

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

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages