UNPKG

webdriverio-workflo

Version:

This is a customized version of webdriverio for use with workflo framework.

51 lines (42 loc) 1.92 kB
/** * * 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 [wdio-screenshot](https://www.npmjs.com/package/wdio-screenshot) * to enhance this command with that functionality. * * This command also doesn't support the [element screenshot](https://w3c.github.io/webdriver/webdriver-spec.html#take-element-screenshot) * feature yet as it isn't supported by most of the drivers. However the protocol command for it is available * to use (see [elementIdScreenshot](http://webdriver.io/api/protocol/elementIdScreenshot.html)). * * <example> :saveScreenshot.js it('should save a screenshot of the browser view', function () { // receive screenshot as Buffer var screenshot = browser.saveScreenshot(); // returns base64 string buffer fs.writeFileSync('./myShort.png', screenshot) // save screenshot to file and receive as Buffer screenshot = browser.saveScreenshot('./snapshot.png'); // save screenshot to file browser.saveScreenshot('./snapshot.png'); }); * </example> * * @alias browser.saveScreenshot * @param {Function|String=} filename path to the generated image (relative to the execution directory) * @uses protocol/screenshot * @type utility * */ import fs from 'fs' import { Buffer } from 'safe-buffer' export default function saveScreenshot (filename) { return this.screenshot().then((res) => { this.emit('screenshot', {data: res.value, filename}) let screenshot = new Buffer(res.value, 'base64') if (typeof filename === 'string') { fs.writeFileSync(filename, screenshot) } return screenshot }) }