lib/take-screenshot.js (26 lines of code) (raw):

const Promise = require('bluebird'); const path = require('path'); const fs = require('fs-extra'); const outputFile = Promise.promisify(fs.outputFile); const url = require('url'); const urlJoin = require('url-join'); const request = Promise.promisify(require('request')); const config = require('./config'); const { logger } = require('./log'); function takeScreenshot(target, sessionId, commandId) { const parsedTargetUrl = url.parse(target); const resultantTargetUrl = url.format(Object.assign({}, parsedTargetUrl, { pathname: urlJoin('/', parsedTargetUrl.pathname, `/session/${sessionId}/screenshot`), })); return request({ method: 'get', uri: resultantTargetUrl, json: true }) .then((res) => { logger.log('debug', 'saving screenshot', sessionId, commandId); outputFile(path.join(config.get('logDir'), `./${sessionId}/screenshots/${commandId}.png`), res.body.value, 'base64'); return null; }); } module.exports = takeScreenshot;