|
@@ -1,11 +1,11 @@
|
|
|
-var Q = require('q');
|
|
|
+var debug = require('debug')('ylt:index');
|
|
|
+var Q = require('q');
|
|
|
|
|
|
-var Runner = require('./runner');
|
|
|
+var Runner = require('./runner');
|
|
|
+var ScreenshotHandler = require('./screenshotHandler');
|
|
|
|
|
|
|
|
|
var yellowLabTools = function(url, options) {
|
|
|
- 'use strict';
|
|
|
-
|
|
|
var deferred = Q.defer();
|
|
|
|
|
|
if (!url) {
|
|
@@ -25,15 +25,52 @@ var yellowLabTools = function(url, options) {
|
|
|
|
|
|
var runner = new Runner(params)
|
|
|
|
|
|
- .progress(deferred.notify)
|
|
|
+ .progress(deferred.notify)
|
|
|
+
|
|
|
+ .then(function(data) {
|
|
|
+
|
|
|
+ // If a screenshot save function was provided in the options
|
|
|
+ if (typeof options.saveFile === 'function') {
|
|
|
+ debug('Now optimizing screenshot...');
|
|
|
+
|
|
|
+ // Remove uneeded temp screenshot path
|
|
|
+ delete data.params.options.screenshot;
|
|
|
+
|
|
|
+ // Add the screenshot url instead
|
|
|
+ data.screenshotUrl = '/api/results/' + data.runId + '/screenshot.jpg';
|
|
|
+
|
|
|
+ // TODO: temporarily set all screenshot sizes to 600px, until we find a solution
|
|
|
+ ScreenshotHandler.findAndOptimizeScreenshot(600)
|
|
|
+
|
|
|
+ .then(function(screenshotBuffer) {
|
|
|
+ debug('Screenshot optimized, now saving...');
|
|
|
+
|
|
|
+ return options.saveFile('screenshot.jpg', screenshotBuffer);
|
|
|
+ })
|
|
|
+
|
|
|
+ .then(function(response) {
|
|
|
+ debug('Screenshot saved');
|
|
|
+ debug(response);
|
|
|
+ })
|
|
|
+
|
|
|
+ .catch(function(err) {
|
|
|
+ // It's ok if we can't save the screenshot
|
|
|
+ debug('Screenshot could not be saved');
|
|
|
+ debug(err);
|
|
|
+ })
|
|
|
+
|
|
|
+ .finally(function() {
|
|
|
+ deferred.resolve(data);
|
|
|
+ });
|
|
|
|
|
|
- .then(function(data) {
|
|
|
+ } else {
|
|
|
deferred.resolve(data);
|
|
|
- })
|
|
|
+ }
|
|
|
+ })
|
|
|
|
|
|
- .fail(function(err) {
|
|
|
- deferred.reject(err);
|
|
|
- });
|
|
|
+ .catch(function(err) {
|
|
|
+ deferred.reject(err);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
return deferred.promise;
|