@luminati-io/webdriverio8
Version:
Next-gen browser and mobile automation test framework for Node.js
35 lines • 2.32 kB
JavaScript
import fs from 'node:fs/promises';
import { getAbsoluteFilepath, assertDirectoryExists } from '../../utils/index.js';
/**
*
* Save a screenshot of an element to a PNG file on your OS.
*
* <example>
:saveScreenshot.js
it('should save a screenshot of the browser view', async () => {
const elem = await $('#someElem');
await elem.saveScreenshot('./some/path/elemScreenshot.png');
});
* </example>
*
* @alias element.saveScreenshot
* @param {String} filename 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);
const screenBuffer = await this.takeElementScreenshot(this.elementId);
const screenshot = Buffer.from(screenBuffer, 'base64');
await fs.writeFile(absoluteFilepath, screenshot);
return screenshot;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZVNjcmVlbnNob3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbWFuZHMvZWxlbWVudC9zYXZlU2NyZWVuc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVqRjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FFaEMsUUFBZ0I7SUFFaEI7O09BRUc7SUFDSCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM3RCxNQUFNLElBQUksS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUE7SUFDOUYsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDdEQsTUFBTSxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBRTdDLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNyRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUN0RCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFFaEQsT0FBTyxVQUFVLENBQUE7QUFDckIsQ0FBQyJ9