@qavajs/steps-playwright
Version:
qavajs steps to interact with playwright
87 lines • 3.6 kB
JavaScript
"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