UNPKG

@luminati-io/webdriverio8

Version:

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

46 lines 3.58 kB
import fs from 'node:fs'; import { getAbsoluteFilepath, assertDirectoryExists } from '../../utils/index.js'; /** * * Prints the page of the current browsing context to a PDF file on your OS. * * <example> :savePDF.js it('should save a PDF screenshot of the browser view', function () { await browser.savePDF('./some/path/screenshot.pdf'); }); * </example> * * @alias browser.savePDF * @param {String} filepath path to the generated pdf (`.pdf` suffix is required) relative to the execution directory * @param {PDFPrintOptions=} options Print PDF Options * @param {String=} options.orientation Orientation of PDF page * @param {number=} options.scale Scale of PDF page * @param {boolean=} options.background Include background of PDF page * @param {number=} options.width Width of PDF page * @param {number=} options.height Height of PDF page * @param {number=} options.top Top padding of PDF page * @param {number=} options.bottom Bottom padding of PDF page * @param {number=} options.left Left padding of PDF page * @param {number=} options.right Right padding of PDF page * @param {boolean=} options.shrinkToFit Shrink page to fit page * @param {object[]} options.pageRanges Range of pages to include in PDF * @return {Buffer} screenshot buffer * @type utility * */ export async function savePDF(filepath, options) { /** * type check */ if (typeof filepath !== 'string' || !filepath.endsWith('.pdf')) { throw new Error('savePDF expects a filepath of type string and ".pdf" file ending'); } const absoluteFilepath = getAbsoluteFilepath(filepath); await assertDirectoryExists(absoluteFilepath); const pdf = await this.printPage(options?.orientation, options?.scale, options?.background, options?.width, options?.height, options?.top, options?.bottom, options?.left, options?.right, options?.shrinkToFit, options?.pageRanges); const page = Buffer.from(pdf, 'base64'); fs.writeFileSync(absoluteFilepath, page); return page; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZVBERi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9icm93c2VyL3NhdmVQREYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBZ0JqRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxDQUV6QixRQUFnQixFQUNoQixPQUF5QjtJQUV6Qjs7T0FFRztJQUNILElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzdELE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQTtJQUN2RixDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN0RCxNQUFNLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFFN0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUN0RixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFDN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDdkMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUV4QyxPQUFPLElBQUksQ0FBQTtBQUNmLENBQUMifQ==