all files / DEV/lib/commands/ saveScreenshot.js

100% Statements 15/15
100% Branches 6/6
33.33% Functions 1/3
100% Lines 2/2
7 statements, 3 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58                                                                                                                 
/**
 *
 * Save a screenshot as a base64 encoded PNG with the current state of the browser. Be aware that some Selenium driver
 * are taking screenshots of the whole document (e.g. phantomjs) and others only of the current viewport. If you want
 * to always be sure that the screenshot has the size of the whole document, use [WebdriverCSS](https://github.com/webdriverio/webdrivercss)
 * to enhance this command with that functionality.
 *
 * <example>
     :saveScreenshot.js
     // receive screenshot as Buffer
     client.saveScreenshot(function(err, screenshot, response) { ... });
     // save screenshot to file and receive as Buffer
     client.saveScreenshot('./snapshot.png', function(err, screenshot, response) { ... });
     // save screenshot to file
     client.saveScreenshot('./snapshot.png');
 * </example>
 *
 * @param {Function|String=}   filename    path to the generated image (relative to the execution directory)
 *
 * @uses protocol/screenshot
 * @type utility
 *
 */
 
'use strict';
 
Object.defineProperty(exports, '__esModule', {
    value: true
});
// istanbul ignore next
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
var _fs = require('fs');
 
var _fs2 = _interopRequireDefault(_fs);
 
var saveScreenshot = function saveScreenshot(filename) {
    // istanbul ignore next
 
    var _this = this;
 
    return this.screenshot().then(function (res) {
        _this.emit('screenshot', { data: res.value, filename: filename });
 
        var screenshot = new Buffer(res.value, 'base64');
 
        if (typeof filename === 'string') {
            _fs2['default'].writeFileSync(filename, screenshot);
        }
 
        return screenshot;
    });
};
 
exports['default'] = saveScreenshot;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvc2F2ZVNjcmVlbnNob3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQXdCZSxJQUFJOzs7O0FBRW5CLElBQUksY0FBYyxHQUFHLFNBQWpCLGNBQWMsQ0FBYSxRQUFRLEVBQUU7Ozs7O0FBQ3JDLFdBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFDLEdBQUcsRUFBSztBQUNuQyxjQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQVIsUUFBUSxFQUFDLENBQUMsQ0FBQTs7QUFFcEQsWUFBSSxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTs7QUFFaEQsWUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7QUFDOUIsNEJBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtTQUN6Qzs7QUFFRCxlQUFPLFVBQVUsQ0FBQTtLQUNwQixDQUFDLENBQUE7Q0FDTCxDQUFBOztxQkFFYyxjQUFjIiwiZmlsZSI6Ii9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvc2F2ZVNjcmVlbnNob3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBTYXZlIGEgc2NyZWVuc2hvdCBhcyBhIGJhc2U2NCBlbmNvZGVkIFBORyB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBicm93c2VyLiBCZSBhd2FyZSB0aGF0IHNvbWUgU2VsZW5pdW0gZHJpdmVyXG4gKiBhcmUgdGFraW5nIHNjcmVlbnNob3RzIG9mIHRoZSB3aG9sZSBkb2N1bWVudCAoZS5nLiBwaGFudG9tanMpIGFuZCBvdGhlcnMgb25seSBvZiB0aGUgY3VycmVudCB2aWV3cG9ydC4gSWYgeW91IHdhbnRcbiAqIHRvIGFsd2F5cyBiZSBzdXJlIHRoYXQgdGhlIHNjcmVlbnNob3QgaGFzIHRoZSBzaXplIG9mIHRoZSB3aG9sZSBkb2N1bWVudCwgdXNlIFtXZWJkcml2ZXJDU1NdKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJkcml2ZXJpby93ZWJkcml2ZXJjc3MpXG4gKiB0byBlbmhhbmNlIHRoaXMgY29tbWFuZCB3aXRoIHRoYXQgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiA8ZXhhbXBsZT5cbiAgICAgOnNhdmVTY3JlZW5zaG90LmpzXG4gICAgIC8vIHJlY2VpdmUgc2NyZWVuc2hvdCBhcyBCdWZmZXJcbiAgICAgY2xpZW50LnNhdmVTY3JlZW5zaG90KGZ1bmN0aW9uKGVyciwgc2NyZWVuc2hvdCwgcmVzcG9uc2UpIHsgLi4uIH0pO1xuICAgICAvLyBzYXZlIHNjcmVlbnNob3QgdG8gZmlsZSBhbmQgcmVjZWl2ZSBhcyBCdWZmZXJcbiAgICAgY2xpZW50LnNhdmVTY3JlZW5zaG90KCcuL3NuYXBzaG90LnBuZycsIGZ1bmN0aW9uKGVyciwgc2NyZWVuc2hvdCwgcmVzcG9uc2UpIHsgLi4uIH0pO1xuICAgICAvLyBzYXZlIHNjcmVlbnNob3QgdG8gZmlsZVxuICAgICBjbGllbnQuc2F2ZVNjcmVlbnNob3QoJy4vc25hcHNob3QucG5nJyk7XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbnxTdHJpbmc9fSAgIGZpbGVuYW1lICAgIHBhdGggdG8gdGhlIGdlbmVyYXRlZCBpbWFnZSAocmVsYXRpdmUgdG8gdGhlIGV4ZWN1dGlvbiBkaXJlY3RvcnkpXG4gKlxuICogQHVzZXMgcHJvdG9jb2wvc2NyZWVuc2hvdFxuICogQHR5cGUgdXRpbGl0eVxuICpcbiAqL1xuXG5pbXBvcnQgZnMgZnJvbSAnZnMnXG5cbmxldCBzYXZlU2NyZWVuc2hvdCA9IGZ1bmN0aW9uIChmaWxlbmFtZSkge1xuICAgIHJldHVybiB0aGlzLnNjcmVlbnNob3QoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KCdzY3JlZW5zaG90Jywge2RhdGE6IHJlcy52YWx1ZSwgZmlsZW5hbWV9KVxuXG4gICAgICAgIGxldCBzY3JlZW5zaG90ID0gbmV3IEJ1ZmZlcihyZXMudmFsdWUsICdiYXNlNjQnKVxuXG4gICAgICAgIGlmICh0eXBlb2YgZmlsZW5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGVuYW1lLCBzY3JlZW5zaG90KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNjcmVlbnNob3RcbiAgICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCBzYXZlU2NyZWVuc2hvdFxuIl19