Browse Source

Merge pull request #104 from gmetais/develop

v1.7.7
Gaël Métais 9 years ago
parent
commit
d22f9b81b2
7 changed files with 61 additions and 22 deletions
  1. 19 5
      bin/cli.js
  2. 8 1
      front/src/css/rule.css
  3. 10 1
      front/src/less/rule.less
  4. 1 1
      front/src/views/index.html
  5. 8 0
      front/src/views/rule.html
  6. 4 4
      lib/metadata/policies.js
  7. 11 10
      package.json

+ 19 - 5
bin/cli.js

@@ -1,10 +1,11 @@
 #!/usr/bin/env node
 #!/usr/bin/env node
 
 
-var debug = require('debug')('ylt:cli');
-var meow = require('meow');
-var path = require('path');
+var debug       = require('debug')('ylt:cli');
+var meow        = require('meow');
+var path        = require('path');
+var jstoxml     = require('jstoxml');
 
 
-var ylt = require('../lib/index');
+var ylt         = require('../lib/index');
 
 
 var cli = meow({
 var cli = meow({
     help: [
     help: [
@@ -19,6 +20,7 @@ var cli = meow({
         '  --cookie             Adds a cookie on the main domain.',
         '  --cookie             Adds a cookie on the main domain.',
         '  --auth-user          Basic HTTP authentication username.',
         '  --auth-user          Basic HTTP authentication username.',
         '  --auth-pass          Basic HTTP authentication password.',
         '  --auth-pass          Basic HTTP authentication password.',
+        '  --reporter           The output format: "json" or "xml". Default is "json".',
         ''
         ''
     ].join('\n'),
     ].join('\n'),
     pkg: '../package.json'
     pkg: '../package.json'
@@ -67,6 +69,12 @@ options.cookie = cli.flags.cookie || null;
 options.authUser = cli.flags.authUser || null;
 options.authUser = cli.flags.authUser || null;
 options.authPass = cli.flags.authPass || null;
 options.authPass = cli.flags.authPass || null;
 
 
+// Output format
+if (cli.flags.reporter && cli.flags.reporter !== 'json' && cli.flags.reporter !== 'xml') {
+    console.error('Incorrect parameters: reporter has to be "json" or "xml"');
+    process.exit(1);
+}
+
 
 
 (function execute(url, options) {
 (function execute(url, options) {
     'use strict';
     'use strict';
@@ -76,7 +84,13 @@ options.authPass = cli.flags.authPass || null;
         then(function(data) {
         then(function(data) {
 
 
             debug('Success');
             debug('Success');
-            console.log(JSON.stringify(data, null, 2));
+            switch(cli.flags.reporter) {
+                case 'xml':
+                    console.log(jstoxml.toXML(data, {indent: '  '}));
+                    break;
+                default:
+                    console.log(JSON.stringify(data, null, 2));
+            }
 
 
         }).fail(function(err) {
         }).fail(function(err) {
             
             

+ 8 - 1
front/src/css/rule.css

@@ -29,9 +29,16 @@
   border-radius: 0.5em;
   border-radius: 0.5em;
   margin: 0 auto 0.5em;
   margin: 0 auto 0.5em;
 }
 }
+.rule h3 {
+  margin-bottom: 0em;
+}
+.rule .okThreshold {
+  font-style: italic;
+  font-size: 0.9em;
+}
 .rule .message {
 .rule .message {
   width: 80%;
   width: 80%;
-  margin: 0 auto;
+  margin: 1.5em auto;
 }
 }
 .rule .message p {
 .rule .message p {
   margin: 0.5em;
   margin: 0.5em;

+ 10 - 1
front/src/less/rule.less

@@ -32,9 +32,18 @@
     margin: 0 auto 0.5em;
     margin: 0 auto 0.5em;
 }
 }
 
 
+.rule h3 {
+    margin-bottom: 0em;
+}
+
+.rule .okThreshold {
+    font-style: italic;
+    font-size: 0.9em;
+}
+
 .rule .message {
 .rule .message {
     width: 80%;
     width: 80%;
-    margin: 0 auto;
+    margin: 1.5em auto;
     p {
     p {
         margin: 0.5em;
         margin: 0.5em;
     }
     }

+ 1 - 1
front/src/views/index.html

@@ -2,7 +2,7 @@
 <p class="price">Free and open source!</p>
 <p class="price">Free and open source!</p>
 
 
 <form ng-submit="launchTest()" >
 <form ng-submit="launchTest()" >
-    <input type="{{$root.isTouchDevice? 'url' : 'text'}}" name="url" ng-model="url" placeholder="http://www.mysite.com" class="url" />
+    <input type="text" name="url" ng-model="url" placeholder="http://www.mysite.com" class="url" />
     <input type="submit" value="Launch test" class="launchBtn" ng-class="{disabled: !url}" />
     <input type="submit" value="Launch test" class="launchBtn" ng-class="{disabled: !url}" />
     <div class="settings">
     <div class="settings">
         <div class="device">
         <div class="device">

+ 8 - 0
front/src/views/rule.html

@@ -14,6 +14,14 @@
                 <span ng-if="rule.policy.unit == 'bytes'">{{rule.value | bytes}}</span>
                 <span ng-if="rule.policy.unit == 'bytes'">{{rule.value | bytes}}</span>
                 <span ng-if="rule.policy.unit != 'bytes'">{{rule.value}}</span>
                 <span ng-if="rule.policy.unit != 'bytes'">{{rule.value}}</span>
             </h3>
             </h3>
+            <div class="okThreshold" ng-if="rule.score < 100 && rule.policy.isOkThreshold !== undefined">
+                Have
+                <span ng-if="rule.policy.unit == 'bytes'">{{rule.policy.isOkThreshold | bytes}}</span>
+                <span ng-if="rule.policy.unit != 'bytes'">{{rule.policy.isOkThreshold}}</span>
+                <span ng-if="rule.policy.isOkThreshold > 0 && rule.policy.isOkThreshold < rule.policy.isBadThreshold">or less</span>
+                <span ng-if="rule.policy.isOkThreshold > rule.policy.isBadThreshold">or more</span>
+                to get the 100/100 score.
+            </div>
             <div ng-bind-html="rule.policy.message" class="message"></div>
             <div ng-bind-html="rule.policy.message" class="message"></div>
         </div>
         </div>
     </div>
     </div>

+ 4 - 4
lib/metadata/policies.js

@@ -195,8 +195,8 @@ var policies = {
         "label": "document.write calls",
         "label": "document.write calls",
         "message": "<p>They slow down the page construction, especially if they are used to insert scripts in the page. Remove them ASAP.</p><p>If you cannot remove them because they come from a third-party script (such as ads), have a look at <a href=\"https://github.com/krux/postscribe\" target=\"_blank\">PostScribe</a>.</p>",
         "message": "<p>They slow down the page construction, especially if they are used to insert scripts in the page. Remove them ASAP.</p><p>If you cannot remove them because they come from a third-party script (such as ads), have a look at <a href=\"https://github.com/krux/postscribe\" target=\"_blank\">PostScribe</a>.</p>",
         "isOkThreshold": 0,
         "isOkThreshold": 0,
-        "isBadThreshold": 10,
-        "isAbnormalThreshold": 20,
+        "isBadThreshold": 5,
+        "isAbnormalThreshold": 10,
         "hasOffenders": true,
         "hasOffenders": true,
         "offendersTransformFn": function(offenders) {
         "offendersTransformFn": function(offenders) {
             return {
             return {
@@ -254,8 +254,8 @@ var policies = {
         "tool": "phantomas",
         "tool": "phantomas",
         "label": "Global variables",
         "label": "Global variables",
         "message": "<p>It is a bad practice because they clutter up the global namespace. If two scripts use the same variable name in the global scope, it can cause conflicts and it is generally hard to debug.</p><p>Global variables also take a (very) little bit longer to be accessed than variables in the local scope of a function.</p>",
         "message": "<p>It is a bad practice because they clutter up the global namespace. If two scripts use the same variable name in the global scope, it can cause conflicts and it is generally hard to debug.</p><p>Global variables also take a (very) little bit longer to be accessed than variables in the local scope of a function.</p>",
-        "isOkThreshold": 30,
-        "isBadThreshold": 150,
+        "isOkThreshold": 40,
+        "isBadThreshold": 200,
         "isAbnormalThreshold": 700,
         "isAbnormalThreshold": 700,
         "hasOffenders": true,
         "hasOffenders": true,
         "offendersTransformFn": function(offenders) {
         "offendersTransformFn": function(offenders) {

+ 11 - 10
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "yellowlabtools",
   "name": "yellowlabtools",
-  "version": "1.7.6",
+  "version": "1.7.7",
   "description": "Online tool to audit a webpage for performance and front-end quality issues",
   "description": "Online tool to audit a webpage for performance and front-end quality issues",
   "license": "GPL-2.0",
   "license": "GPL-2.0",
   "author": {
   "author": {
@@ -17,13 +17,13 @@
   },
   },
   "main": "./lib/index.js",
   "main": "./lib/index.js",
   "dependencies": {
   "dependencies": {
-    "angular": "1.4.4",
-    "angular-animate": "1.4.4",
-    "angular-chart.js": "0.7.6",
+    "angular": "1.4.5",
+    "angular-animate": "1.4.5",
+    "angular-chart.js": "0.8.3",
     "angular-local-storage": "0.2.2",
     "angular-local-storage": "0.2.2",
-    "angular-resource": "1.4.4",
-    "angular-route": "1.4.4",
-    "angular-sanitize": "1.4.4",
+    "angular-resource": "1.4.5",
+    "angular-route": "1.4.5",
+    "angular-sanitize": "1.4.5",
     "async": "1.4.2",
     "async": "1.4.2",
     "body-parser": "1.13.3",
     "body-parser": "1.13.3",
     "chart.js": "1.0.2",
     "chart.js": "1.0.2",
@@ -34,6 +34,7 @@
     "express": "4.13.3",
     "express": "4.13.3",
     "imagemin": "3.2.0",
     "imagemin": "3.2.0",
     "imagemin-jpegoptim": "4.0.0",
     "imagemin-jpegoptim": "4.0.0",
+    "jstoxml": "0.2.3",
     "lwip": "0.0.7",
     "lwip": "0.0.7",
     "meow": "3.3.0",
     "meow": "3.3.0",
     "minimize": "1.7.0",
     "minimize": "1.7.0",
@@ -54,7 +55,7 @@
     "grunt-contrib-copy": "~0.8.1",
     "grunt-contrib-copy": "~0.8.1",
     "grunt-contrib-cssmin": "~0.13.0",
     "grunt-contrib-cssmin": "~0.13.0",
     "grunt-contrib-htmlmin": "~0.4.0",
     "grunt-contrib-htmlmin": "~0.4.0",
-    "grunt-contrib-jshint": "~0.11.2",
+    "grunt-contrib-jshint": "~0.11.3",
     "grunt-contrib-less": "~1.0.1",
     "grunt-contrib-less": "~1.0.1",
     "grunt-contrib-uglify": "~0.9.2",
     "grunt-contrib-uglify": "~0.9.2",
     "grunt-env": "~0.4.4",
     "grunt-env": "~0.4.4",
@@ -63,11 +64,11 @@
     "grunt-inline-angular-templates": "~0.1.5",
     "grunt-inline-angular-templates": "~0.1.5",
     "grunt-line-remover": "~0.0.2",
     "grunt-line-remover": "~0.0.2",
     "grunt-mocha-test": "~0.12.7",
     "grunt-mocha-test": "~0.12.7",
-    "grunt-replace": "~0.10.2",
+    "grunt-replace": "~0.11.0",
     "grunt-usemin": "~3.1.1",
     "grunt-usemin": "~3.1.1",
     "grunt-webfont": "~0.5.4",
     "grunt-webfont": "~0.5.4",
     "matchdep": "~0.3.0",
     "matchdep": "~0.3.0",
-    "mocha": "~2.2.5",
+    "mocha": "~2.3.2",
     "sinon": "~1.16.1",
     "sinon": "~1.16.1",
     "sinon-chai": "~2.8.0"
     "sinon-chai": "~2.8.0"
   },
   },