runner.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. var Q = require('q');
  2. var debug = require('debug')('ylt:runner');
  3. var phantomasWrapper = require('./tools/phantomas/phantomasWrapper');
  4. var jsExecutionTransformer = require('./tools/jsExecutionTransformer');
  5. var colorDiff = require('./tools/colorDiff');
  6. var weightChecker = require('./tools/weightChecker/weightChecker');
  7. var rulesChecker = require('./rulesChecker');
  8. var scoreCalculator = require('./scoreCalculator');
  9. var Runner = function(params) {
  10. 'use strict';
  11. var deferred = Q.defer();
  12. // The pivot format
  13. var data = {
  14. params: params,
  15. toolsResults: {}
  16. };
  17. // Execute Phantomas first
  18. phantomasWrapper.execute(data)
  19. .then(function(phantomasResults) {
  20. data.toolsResults.phantomas = phantomasResults;
  21. // Treat the JS Execution Tree from offenders
  22. data = jsExecutionTransformer.transform(data);
  23. // Compare colors
  24. data = colorDiff.compareAllColors(data);
  25. // Redownload every file
  26. return weightChecker.recheckAllFiles(data);
  27. })
  28. .then(function(data) {
  29. // Rules checker
  30. var policies = require('./metadata/policies');
  31. data.rules = rulesChecker.check(data, policies);
  32. // Scores calculator
  33. var scoreProfileGeneric = require('./metadata/scoreProfileGeneric.json');
  34. data.scoreProfiles = {
  35. generic : scoreCalculator.calculate(data, scoreProfileGeneric)
  36. };
  37. delete data.toolsResults.phantomas.metrics.javascriptExecutionTree;
  38. delete data.toolsResults.phantomas.offenders.javascriptExecutionTree;
  39. delete data.toolsResults.phantomas.metrics.scrollExecutionTree;
  40. delete data.toolsResults.phantomas.offenders.scrollExecutionTree;
  41. // Finished!
  42. deferred.resolve(data);
  43. })
  44. .fail(function(err) {
  45. debug('Run failed');
  46. debug(err);
  47. deferred.reject(err);
  48. });
  49. return deferred.promise;
  50. };
  51. module.exports = Runner;