99 lines
15 KiB
JavaScript
99 lines
15 KiB
JavaScript
|
"use strict";
|
||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const device_specs_1 = require("device-specs");
|
||
|
const utils_1 = require("./commands/utils");
|
||
|
const type_1 = __importDefault(require("./commands/type"));
|
||
|
const warning_message_1 = __importDefault(require("../notifications/warning-message"));
|
||
|
const test_run_1 = require("../errors/test-run/");
|
||
|
class BrowserManipulationQueue {
|
||
|
constructor(browserConnection, screenshotCapturer, warningLog) {
|
||
|
this.commands = [];
|
||
|
this.browserId = browserConnection.id;
|
||
|
this.browserProvider = browserConnection.provider;
|
||
|
this.screenshotCapturer = screenshotCapturer;
|
||
|
this.warningLog = warningLog;
|
||
|
}
|
||
|
async _resizeWindow(width, height, currentWidth, currentHeight) {
|
||
|
const canResizeWindow = await this.browserProvider.canResizeWindowToDimensions(this.browserId, width, height);
|
||
|
if (!canResizeWindow)
|
||
|
throw new test_run_1.WindowDimensionsOverflowError();
|
||
|
try {
|
||
|
return await this.browserProvider.resizeWindow(this.browserId, width, height, currentWidth, currentHeight);
|
||
|
}
|
||
|
catch (err) {
|
||
|
this.warningLog.addWarning(warning_message_1.default.resizeError, err.message);
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
async _resizeWindowToFitDevice(device, portrait, currentWidth, currentHeight) {
|
||
|
const { landscapeWidth, portraitWidth } = (0, device_specs_1.getViewportSize)(device);
|
||
|
const width = portrait ? portraitWidth : landscapeWidth;
|
||
|
const height = portrait ? landscapeWidth : portraitWidth;
|
||
|
return await this._resizeWindow(width, height, currentWidth, currentHeight);
|
||
|
}
|
||
|
async _maximizeWindow() {
|
||
|
try {
|
||
|
return await this.browserProvider.maximizeWindow(this.browserId);
|
||
|
}
|
||
|
catch (err) {
|
||
|
this.warningLog.addWarning(warning_message_1.default.maximizeError, err.message);
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
async _takeScreenshot(capture) {
|
||
|
return capture();
|
||
|
}
|
||
|
async _executeCommand(driverMsg) {
|
||
|
const command = this.commands.shift();
|
||
|
switch (command.type) {
|
||
|
case type_1.default.takeElementScreenshot:
|
||
|
case type_1.default.takeScreenshot:
|
||
|
return await this._takeScreenshot(() => this.screenshotCapturer.captureAction({
|
||
|
actionId: command.actionId,
|
||
|
customPath: command.path,
|
||
|
pageDimensions: driverMsg.pageDimensions,
|
||
|
cropDimensions: driverMsg.cropDimensions,
|
||
|
markSeed: command.markSeed,
|
||
|
fullPage: command.fullPage,
|
||
|
thumbnails: command.thumbnails,
|
||
|
}));
|
||
|
case type_1.default.takeScreenshotOnFail:
|
||
|
return await this._takeScreenshot(() => this.screenshotCapturer.captureError({
|
||
|
actionId: command.actionId,
|
||
|
failedActionId: command.failedActionId,
|
||
|
pageDimensions: driverMsg.pageDimensions,
|
||
|
markSeed: command.markSeed,
|
||
|
fullPage: command.fullPage,
|
||
|
}));
|
||
|
case type_1.default.resizeWindow:
|
||
|
return await this._resizeWindow(command.width, command.height, driverMsg.pageDimensions.innerWidth, driverMsg.pageDimensions.innerHeight);
|
||
|
case type_1.default.resizeWindowToFitDevice:
|
||
|
return await this._resizeWindowToFitDevice(command.device, command.options.portraitOrientation, driverMsg.pageDimensions.innerWidth, driverMsg.pageDimensions.innerHeight);
|
||
|
case type_1.default.maximizeWindow:
|
||
|
return await this._maximizeWindow();
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
async executePendingManipulation(driverMsg, messageBus) {
|
||
|
const command = this.commands[0];
|
||
|
const handleBrowserManipulationWarning = warning => {
|
||
|
warning.actionId = warning.actionId || command.actionId;
|
||
|
};
|
||
|
messageBus.on('before-warning-add', handleBrowserManipulationWarning);
|
||
|
const result = await this._executeCommand(driverMsg);
|
||
|
messageBus.off('before-warning-add', handleBrowserManipulationWarning);
|
||
|
return result;
|
||
|
}
|
||
|
push(command) {
|
||
|
this.commands.push(command);
|
||
|
}
|
||
|
removeAllNonServiceManipulations() {
|
||
|
this.commands = this.commands.filter(command => (0, utils_1.isServiceCommand)(command));
|
||
|
}
|
||
|
}
|
||
|
exports.default = BrowserManipulationQueue;
|
||
|
module.exports = exports.default;
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1tYW5pcHVsYXRpb24tcXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1ydW4vYnJvd3Nlci1tYW5pcHVsYXRpb24tcXVldWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQ0FBK0M7QUFDL0MsNENBQW9EO0FBQ3BELDJEQUEyQztBQUMzQyx1RkFBK0Q7QUFDL0Qsa0RBQW9FO0FBRXBFLE1BQXFCLHdCQUF3QjtJQUN6QyxZQUFhLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLFVBQVU7UUFDMUQsSUFBSSxDQUFDLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBWSxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLGVBQWUsR0FBTSxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7UUFDckQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEdBQVcsVUFBVSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGFBQWE7UUFDM0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTlHLElBQUksQ0FBQyxlQUFlO1lBQ2hCLE1BQU0sSUFBSSx3Q0FBNkIsRUFBRSxDQUFDO1FBRTlDLElBQUk7WUFDQSxPQUFPLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztTQUM5RztRQUNELE9BQU8sR0FBRyxFQUFFO1lBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMs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
|