123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- var Q = require('q');
- var debug = require('debug')('ylt:runner');
- var phantomasWrapper = require('./tools/phantomas/phantomasWrapper');
- var colorDiff = require('./tools/colorDiff');
- var domAccessAgregator = require('./tools/domAccessAgregator');
- var mediaQueriesChecker = require('./tools/mediaQueriesChecker');
- var redownload = require('./tools/redownload/redownload');
- var rulesChecker = require('./rulesChecker');
- var scoreCalculator = require('./scoreCalculator');
- var Runner = function(params) {
- 'use strict';
- var deferred = Q.defer();
- // The pivot format
- var data = {
- params: params,
- toolsResults: {}
- };
- // Execute Phantomas first
- phantomasWrapper.execute(data)
- .then(function(phantomasResults) {
- data.toolsResults.phantomas = phantomasResults;
- // Mix all DOM Access metrics together
- data = domAccessAgregator.agregate(data);
- // Compare colors
- data = colorDiff.compareAllColors(data);
- // Check media queries
- data = mediaQueriesChecker.analyzeMediaQueries(data);
- // Redownload every file
- return redownload.recheckAllFiles(data);
- })
- .then(function(data) {
- // Rules checker
- var policies = require('./metadata/policies');
- data.rules = rulesChecker.check(data, policies);
- // Scores calculator
- var scoreProfileGeneric = require('./metadata/scoreProfileGeneric.json');
- data.scoreProfiles = {
- generic : scoreCalculator.calculate(data, scoreProfileGeneric)
- };
- if (data.toolsResults.phantomas.offenders.blockedRequests) {
- data.blockedRequests = data.toolsResults.phantomas.offenders.blockedRequests;
- }
- // Finished!
- deferred.resolve(data);
- })
- .fail(function(err) {
- debug('Run failed');
- debug(err);
- deferred.reject(err);
- });
- return deferred.promise;
- };
- module.exports = Runner;
|