Save screenshot when called with a saveFile option

This commit is contained in:
Gaël Métais
2021-03-16 07:45:49 +00:00
parent c5bc02d45d
commit e0d497796a
+47 -10
View File
@@ -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) {
.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);
});
} else {
deferred.resolve(data);
})
}
})
.fail(function(err) {
deferred.reject(err);
});
.catch(function(err) {
deferred.reject(err);
});
}
return deferred.promise;