Fix script/screenshots.js variable scope
And improve error messages
diff --git a/script/screenshots.js b/script/screenshots.js
index 5e0c1fa..86f490a 100644
--- a/script/screenshots.js
+++ b/script/screenshots.js
@@ -87,15 +87,16 @@
browserVersions.forEach(function(obj) {
var cfg = obj.version;
+ var browser = cfg.browserName.replace(/\s/g, '_');
+ var platform = cfg.platform.replace(/\s/g, '_');
+ var piecesDir = allImgsDir+'/'+obj.pinned+'_'+platform+'_'+browser;
+
cfg.build = build_name;
var browserDriver = wd.promiseChainRemote('ondemand.saucelabs.com', 80, username, accessKey);
return browserDriver.init(cfg)
.then(function(_, capabilities) {
console.log(cfg.browserName,cfg.platform,'init');
- var browser = cfg.browserName.replace(/\s/g, '_');
- var platform = cfg.platform.replace(/\s/g, '_');
- var piecesDir = allImgsDir+'/'+obj.pinned+'_'+platform+'_'+browser;
fs.mkdirSync(piecesDir);
return browserDriver;
@@ -116,12 +117,16 @@
console.log(cfg.browserName, cfg.platform, 'about to saveScreenshot');
return browserDriver.saveScreenshot(filename)
.then(willLog(cfg.browserName,cfg.platform,'saveScreenshot'))
- .log('browser')
+ .then(function() {
+ return browserDriver.log('browser')
+ .then(willLog(cfg.browserName,cfg.platform,'log'), function(err) {
+ // the Edge/Internet Explorer drivers don't support logs, but the others do
+ console.log(cfg.browserName, cfg.platform, 'Error fetching logs:', JSON.stringify(err, null, 2));
+ return [];
+ });
+ })
.then(function(logs) {
- console.log(cfg.browserName,cfg.platform,'log');
-
var logfile = baseDir+'/'+browser+'_'+platform+'.log'
- logs = logs || [];
return new Promise(function(resolve, reject) {
fs.writeFile(logfile,logs.join('\n'), function(err) {
if (err) return reject(err);
@@ -169,12 +174,16 @@
var filename = piecesDir+'/'+index+'.png';
return browserDriver.saveScreenshot(filename)
.then(willLog(cfg.browserName,cfg.platform,'saveScreenshot Final'))
- .log('browser')
+ .then(function() {
+ return browserDriver.log('browser')
+ .then(willLog(cfg.browserName,cfg.platform,'log'), function(err) {
+ // the Edge/Internet Explorer drivers don't support logs, but the others do
+ console.log(cfg.browserName, cfg.platform, 'Error fetching logs:', JSON.stringify(err, null, 2));
+ return [];
+ });
+ })
.then(function(logs) {
- console.log(cfg.browserName,cfg.platform,'log');
-
var logfile = baseDir+'/'+browser+'_'+platform+'.log'
- logs = logs || [];
return new Promise(function(resolve, reject) {
fs.writeFile(logfile,logs.join('\n'), function(err) {
if (err) return reject(err);
@@ -194,14 +203,15 @@
}
})
.fail(function(err) {
- console.log(JSON.stringify(obj, null, 2));
+ console.log('ERROR:', cfg.browserName, cfg.platform);
+ console.log(JSON.stringify(err, null, 2));
});
function willLog() {
- var msg = [].join.call(arguments);
- return function() {
+ var msg = [].join.call(arguments, ' ');
+ return function(value) {
console.log(msg);
- return browserDriver;
+ return value;
};
}
});