From a6813a7ec10c04f3547349b7462bdc7597cb25bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20M=C3=A9tais?= Date: Fri, 20 Mar 2015 11:28:49 +0100 Subject: [PATCH 1/5] Fix z-index issue in the profiler --- front/src/css/timeline.css | 2 +- front/src/less/timeline.less | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/front/src/css/timeline.css b/front/src/css/timeline.css index e5ba04b..2816533 100644 --- a/front/src/css/timeline.css +++ b/front/src/css/timeline.css @@ -224,7 +224,7 @@ background: #EBD8E2; line-height: 1.3em; height: 1.3em; - z-index: 1; + z-index: 2; } .table .showingDetails .child span:hover { background: inherit; diff --git a/front/src/less/timeline.less b/front/src/less/timeline.less index 952c918..1968752 100644 --- a/front/src/less/timeline.less +++ b/front/src/less/timeline.less @@ -257,7 +257,7 @@ background: #EBD8E2; line-height: 1.3em; height: 1.3em; - z-index: 1; + z-index: 2; } } } From 7b74df7f041ecb3100a9e4695c0a9ac3c6f891f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20M=C3=A9tais?= Date: Fri, 20 Mar 2015 11:30:20 +0100 Subject: [PATCH 2/5] Add spy on getComputedStyle() --- front/src/js/directives/offendersDirectives.js | 17 ++++++++++++++--- lib/runner.js | 2 +- lib/tools/jsExecutionTransformer.js | 17 +++++++++++++++-- .../custom_modules/modules/domQYLT/domQYLT.js | 16 ++++++++++++++++ 4 files changed, 46 insertions(+), 6 deletions(-) diff --git a/front/src/js/directives/offendersDirectives.js b/front/src/js/directives/offendersDirectives.js index 45b8b33..828ae09 100644 --- a/front/src/js/directives/offendersDirectives.js +++ b/front/src/js/directives/offendersDirectives.js @@ -147,6 +147,9 @@ case 'addEventListener': return 'bind ' + args[0] + ' to ' + getDomElementButtonHTML(ctxt.elements[0], onASingleLine); + case 'getComputedStyle': + return getDomElementButtonHTML(args[0], onASingleLine) + (args[1] || ''); + case 'error': return args[0]; @@ -200,7 +203,7 @@ return 'append ' + joinArgs(args) + ' to ' + getJQueryContextButtonHTML(ctxt, onASingleLine); case 'jQuery - appendTo': - return 'append' + getJQueryContextButtonHTML(ctxt, onASingleLine) + ' to ' + args[0] + ''; + return 'append ' + getJQueryContextButtonHTML(ctxt, onASingleLine) + ' to ' + args[0] + ''; case 'jQuery - prepend': return 'prepend ' + joinArgs(args) + ' to ' + getJQueryContextButtonHTML(ctxt, onASingleLine); @@ -280,10 +283,8 @@ case 'jQuery - offset': case 'jQuery - height': case 'jQuery - innerHeight': - case 'jQuery - outerHeight': case 'jQuery - width': case 'jQuery - innerWidth': - case 'jQuery - outerWidth': case 'jQuery - scrollLeft': case 'jQuery - scrollTop': case 'jQuery - position': @@ -294,6 +295,16 @@ } break; + case 'jQuery - outerHeight': + case 'jQuery - outerWidth': + if (args[0] && args[0] !== 'true') { + return 'set ' + args[0] + ' on ' + getJQueryContextButtonHTML(ctxt, onASingleLine); + } else if (args[0] === 'true') { + return 'get from ' + getJQueryContextButtonHTML(ctxt, onASingleLine) + ' (with include margins option)'; + } else { + return 'get from ' + getJQueryContextButtonHTML(ctxt, onASingleLine); + } + case 'jQuery - toggle': if (args[0] === 'true') { return getJQueryContextButtonHTML(ctxt, onASingleLine) + ' to visible'; diff --git a/lib/runner.js b/lib/runner.js index adb8864..d81be6d 100644 --- a/lib/runner.js +++ b/lib/runner.js @@ -23,7 +23,7 @@ var Runner = function(params) { data.toolsResults.phantomas = phantomasResults; // Treat the JS Execution Tree from offenders - data.javascriptExecutionTree = jsExecutionTransformer.transform(data); + data = jsExecutionTransformer.transform(data); // Other tools go here diff --git a/lib/tools/jsExecutionTransformer.js b/lib/tools/jsExecutionTransformer.js index e9e5312..4495f5b 100644 --- a/lib/tools/jsExecutionTransformer.js +++ b/lib/tools/jsExecutionTransformer.js @@ -6,6 +6,14 @@ var jsExecutionTransformer = function() { this.transform = function(data) { var javascriptExecutionTree = {}; + + var metrics = { + domManipulations: 0, + queriesWithoutResults: 0, + jQueryCalls: 0, + jQueryCallsOnEmptyObject: 0 + + }; debug('Starting JS execution transformation'); @@ -56,7 +64,7 @@ var jsExecutionTransformer = function() { node.data.callDetails.context.elements = node.data.callDetails.context.elements.map(offendersHelpers.domPathToDomElementObj, offendersHelpers); } - if (node.data.type === 'appendChild' || node.data.type === 'insertBefore') { + if (node.data.type === 'appendChild' || node.data.type === 'insertBefore' || node.data.type === 'getComputedStyle') { node.data.callDetails.arguments[0] = offendersHelpers.domPathToDomElementObj(node.data.callDetails.arguments[0]); } @@ -73,7 +81,12 @@ var jsExecutionTransformer = function() { throw err; } - return javascriptExecutionTree; + data.javascriptExecutionTree = javascriptExecutionTree; + data.toolsResults.jsExecutionTransformer = { + metrics: metrics + }; + + return data; }; function treeRecursiveParser(node, fn) { diff --git a/lib/tools/phantomas/custom_modules/modules/domQYLT/domQYLT.js b/lib/tools/phantomas/custom_modules/modules/domQYLT/domQYLT.js index e67aaf6..cbae27f 100644 --- a/lib/tools/phantomas/custom_modules/modules/domQYLT/domQYLT.js +++ b/lib/tools/phantomas/custom_modules/modules/domQYLT/domQYLT.js @@ -323,6 +323,22 @@ exports.module = function(phantomas) { phantomas.leaveContext(); }); + + phantomas.spy(window, 'getComputedStyle', function(element, pseudoElement) { + var target = phantomas.getDOMPath(element); + + phantomas.enterContext({ + type: 'getComputedStyle', + callDetails: { + arguments: [target, pseudoElement] + }, + backtrace: phantomas.getBacktrace() + }); + + }, function(result, args) { + phantomas.leaveContext(); + }); + })(window.__phantomas); }); }); From 7c5a5daf2f338c85fe16ecbf892e22db142794d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20M=C3=A9tais?= Date: Fri, 20 Mar 2015 12:00:52 +0100 Subject: [PATCH 3/5] Take in account trigger mode on some jQuery functions --- front/src/js/directives/offendersDirectives.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/front/src/js/directives/offendersDirectives.js b/front/src/js/directives/offendersDirectives.js index 828ae09..4edd7c9 100644 --- a/front/src/js/directives/offendersDirectives.js +++ b/front/src/js/directives/offendersDirectives.js @@ -368,15 +368,10 @@ case 'jQuery - change': case 'jQuery - click': case 'jQuery - dblclick': - case 'jQuery - error': case 'jQuery - focus': - case 'jQuery - focusin': - case 'jQuery - focusout': - case 'jQuery - hover': case 'jQuery - keydown': case 'jQuery - keypress': case 'jQuery - keyup': - case 'jQuery - load': case 'jQuery - mousedown': case 'jQuery - mouseenter': case 'jQuery - mouseleave': @@ -388,6 +383,17 @@ case 'jQuery - scroll': case 'jQuery - select': case 'jQuery - submit': + if (args[0]) { + return 'bind on ' + getJQueryContextButtonHTML(ctxt, onASingleLine); + } else { + return 'trigger on ' + getJQueryContextButtonHTML(ctxt, onASingleLine); + } + + case 'jQuery - error': + case 'jQuery - focusin': + case 'jQuery - focusout': + case 'jQuery - hover': + case 'jQuery - load': case 'jQuery - unload': return 'bind on ' + getJQueryContextButtonHTML(ctxt, onASingleLine); From 36a60bae4d1093b021d7c89871d5e3ab71790b9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20M=C3=A9tais?= Date: Fri, 20 Mar 2015 12:01:10 +0100 Subject: [PATCH 4/5] v1.3.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b24ecae..4faa0c5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "yellowlabtools", - "version": "1.3.1", + "version": "1.3.2", "description": "Online tool to audit a webpage for performance and front-end quality issues", "repository": { "type": "git", From 98f074e8d583a723c4656ed9dc995e5f8b0848e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20M=C3=A9tais?= Date: Mon, 23 Mar 2015 09:49:55 +0100 Subject: [PATCH 5/5] jsHint --- front/src/js/directives/offendersDirectives.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/front/src/js/directives/offendersDirectives.js b/front/src/js/directives/offendersDirectives.js index 4edd7c9..155f1fa 100644 --- a/front/src/js/directives/offendersDirectives.js +++ b/front/src/js/directives/offendersDirectives.js @@ -304,6 +304,7 @@ } else { return 'get from ' + getJQueryContextButtonHTML(ctxt, onASingleLine); } + break; case 'jQuery - toggle': if (args[0] === 'true') { @@ -386,8 +387,9 @@ if (args[0]) { return 'bind on ' + getJQueryContextButtonHTML(ctxt, onASingleLine); } else { - return 'trigger on ' + getJQueryContextButtonHTML(ctxt, onASingleLine); + return 'triggered on ' + getJQueryContextButtonHTML(ctxt, onASingleLine); } + break; case 'jQuery - error': case 'jQuery - focusin':