UNPKG

@luminati-io/webdriverio8

Version:

Next-gen browser and mobile automation test framework for Node.js

51 lines 3.2 kB
import fs from 'node:fs'; import { getAbsoluteFilepath, assertDirectoryExists } from '../../utils/index.js'; /** * * Save a screenshot of the current browsing context to a PNG file on your OS. Be aware that * some browser drivers take screenshots of the whole document (e.g. Geckodriver with Firefox) * and others only of the current viewport (e.g. Chromedriver with Chrome). * * <example> :saveScreenshot.js it('should save a screenshot of the browser view', async () => { await browser.saveScreenshot('./some/path/screenshot.png'); }); * </example> * * When running from a hook, make sure to explicitly define the hook as async: * <example> :wdio.conf.js afterTest: async function(test) { await browser.saveScreenshot('./some/path/screenshot.png'); } * </example> * @alias browser.saveScreenshot * @param {String} filepath path to the generated image (`.png` suffix is required) relative to the execution directory * @return {Buffer} screenshot buffer * @type utility * */ export async function saveScreenshot(filepath) { /** * type check */ if (typeof filepath !== 'string' || !filepath.endsWith('.png')) { throw new Error('saveScreenshot expects a filepath of type string and ".png" file ending'); } const absoluteFilepath = getAbsoluteFilepath(filepath); await assertDirectoryExists(absoluteFilepath); let screenBuffer; if (this.isBidi) { const context = await this.getWindowHandle(); const { data } = await this.browsingContextCaptureScreenshot({ context }); screenBuffer = data; } else { screenBuffer = await this.takeScreenshot(); } const screenshot = Buffer.from(screenBuffer, 'base64'); fs.writeFileSync(absoluteFilepath, screenshot); return screenshot; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZVNjcmVlbnNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvYnJvd3Nlci9zYXZlU2NyZWVuc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFakY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FFaEMsUUFBZ0I7SUFFaEI7O09BRUc7SUFDSCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM3RCxNQUFNLElBQUksS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUE7SUFDOUYsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDdEQsTUFBTSxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBRTdDLElBQUksWUFBb0IsQ0FBQTtJQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNkLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBQzVDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDekUsWUFBWSxHQUFHLElBQUksQ0FBQTtJQUN2QixDQUFDO1NBQU0sQ0FBQztRQUNKLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtJQUM5QyxDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDdEQsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUU5QyxPQUFPLFVBQVUsQ0FBQTtBQUNyQixDQUFDIn0=