UNPKG

@qavajs/steps-playwright

Version:

qavajs steps to interact with playwright

87 lines 3.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@qavajs/core"); const defaultTimeouts_1 = __importDefault(require("./defaultTimeouts")); const utils_1 = require("./utils/utils"); const promises_1 = require("node:fs/promises"); const selectorEngines_1 = require("./selectorEngines"); const playwright_1 = __importDefault(require("./playwright")); const tracingManager_1 = __importDefault(require("./utils/tracingManager")); const pageObject_1 = require("./pageObject"); (0, core_1.BeforeAll)(async function () { await (0, selectorEngines_1.createJSEngine)(); }); (0, core_1.Before)({ name: 'Init playwright driver' }, async function () { const driverConfig = this.config.browser ?? this.config.driver; driverConfig.isElectron = driverConfig.capabilities.browserName === 'electron'; driverConfig.timeout = { ...defaultTimeouts_1.default, ...driverConfig.timeout }; this.config.driverConfig = driverConfig; if (this.config.driverConfig.video) { this.config.driverConfig.capabilities.recordVideo = this.config.driverConfig.video; } this.playwright = playwright_1.default; await this.playwright.launchDriver('default', this.config.driverConfig); await tracingManager_1.default.start(driverConfig, this); this.log(`driver instance started:\n${JSON.stringify(this.config.driverConfig, null, 2)}`); this.element = pageObject_1.element; }); (0, core_1.BeforeStep)(async function (step) { try { if (tracingManager_1.default.isTracingStarted) { await tracingManager_1.default.tracing.group(step.pickleStep.text); } if ((0, utils_1.saveScreenshotBeforeStep)(this.config)) { this.attach(await this.playwright.page.screenshot({ fullPage: this.config.driverConfig?.screenshot?.fullPage }), 'image/png'); } } catch (err) { console.warn(err); } }); (0, core_1.AfterStep)(async function (step) { try { if (tracingManager_1.default.isTracingStarted) { await tracingManager_1.default.tracing.groupEnd(); } if ((0, utils_1.saveScreenshotAfterStep)(this.config, step)) { this.attach(await this.playwright.page.screenshot({ fullPage: this.config.driverConfig?.screenshot?.fullPage }), 'image/png'); } } catch (err) { console.warn(err); } }); (0, core_1.After)({ name: 'Shutdown playwright driver' }, async function (scenario) { await tracingManager_1.default.stop(this.config.driverConfig, this, scenario); await this.playwright.teardown({ reuseSession: this.config.driverConfig.reuseSession, restartBrowser: this.config.driverConfig.restartBrowser, }); if ((0, utils_1.saveVideo)(this.config.driverConfig, scenario)) { if (this.config.driverConfig?.video.attach) { const video = this.playwright.page.video(); if (video) { const videoPath = await video.path(); const zipBuffer = await (0, promises_1.readFile)(videoPath); this.attach(zipBuffer.toString('base64'), 'base64:video/webm'); } else { console.warn('Video was not recorded'); } } } }); (0, core_1.AfterAll)(async function () { await playwright_1.default.close(); }); //# sourceMappingURL=hooks.js.map