@luminati-io/webdriverio8
Version:
Next-gen browser and mobile automation test framework for Node.js
42 lines • 2.4 kB
JavaScript
import fs from 'node:fs';
import { getAbsoluteFilepath, assertDirectoryExists } from '../../utils/index.js';
/**
*
* Save a video started by [`startRecordingScreen`](/docs/api/appium#startrecordingscreen) command to file.
*
* :::info
*
* This command is only supported for mobile sessions running on [Appium](https://appium.github.io/appium.io/docs/en/commands/device/recording-screen/start-recording-screen/).
*
* :::
*
* <example>
:saveRecordingScreen.js
it('should save a video', async () => {
await browser.startRecordingScreen();
await $('~BUTTON').click();
await browser.saveRecordingScreen('./some/path/video.mp4');
});
* </example>
*
* @alias browser.saveRecordingScreen
* @param {String} filepath full or relative to the execution directory path to the generated video
* @return {Buffer} video buffer
* @type utility
*
*/
export async function saveRecordingScreen(filepath) {
/**
* type check
*/
if (typeof filepath !== 'string') {
throw new Error('saveRecordingScreen expects a filepath');
}
const absoluteFilepath = getAbsoluteFilepath(filepath);
await assertDirectoryExists(absoluteFilepath);
const videoBuffer = await this.stopRecordingScreen();
const video = Buffer.from(videoBuffer, 'base64');
fs.writeFileSync(absoluteFilepath, video);
return video;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZVJlY29yZGluZ1NjcmVlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9icm93c2VyL3NhdmVSZWNvcmRpbmdTY3JlZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWpGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG1CQUFtQixDQUVyQyxRQUFnQjtJQUVoQjs7T0FFRztJQUNILElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO0lBQzdELENBQUM7SUFFRCxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3RELE1BQU0scUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUU3QyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO0lBQ3BELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ2hELEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFFekMsT0FBTyxLQUFLLENBQUE7QUFDaEIsQ0FBQyJ9