UNPKG

14.4 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const testcafe_browser_tools_1 = require("testcafe-browser-tools");
7const utils_1 = require("./commands/utils");
8const type_1 = __importDefault(require("./commands/type"));
9const warning_message_1 = __importDefault(require("../notifications/warning-message"));
10const test_run_1 = require("../errors/test-run/");
11const types_1 = require("../errors/types");
12class BrowserManipulationQueue {
13 constructor(browserConnection, screenshotCapturer, warningLog) {
14 this.commands = [];
15 this.browserId = browserConnection.id;
16 this.browserProvider = browserConnection.provider;
17 this.screenshotCapturer = screenshotCapturer;
18 this.warningLog = warningLog;
19 }
20 async _resizeWindow(width, height, currentWidth, currentHeight) {
21 const canResizeWindow = await this.browserProvider.canResizeWindowToDimensions(this.browserId, width, height);
22 if (!canResizeWindow)
23 throw new test_run_1.WindowDimensionsOverflowError();
24 try {
25 return await this.browserProvider.resizeWindow(this.browserId, width, height, currentWidth, currentHeight);
26 }
27 catch (err) {
28 this.warningLog.addWarning(warning_message_1.default.resizeError, err.message);
29 return null;
30 }
31 }
32 async _resizeWindowToFitDevice(device, portrait, currentWidth, currentHeight) {
33 const { landscapeWidth, portraitWidth } = testcafe_browser_tools_1.getViewportSize(device);
34 const width = portrait ? portraitWidth : landscapeWidth;
35 const height = portrait ? landscapeWidth : portraitWidth;
36 return await this._resizeWindow(width, height, currentWidth, currentHeight);
37 }
38 async _maximizeWindow() {
39 try {
40 return await this.browserProvider.maximizeWindow(this.browserId);
41 }
42 catch (err) {
43 this.warningLog.addWarning(warning_message_1.default.maximizeError, err.message);
44 return null;
45 }
46 }
47 async _takeScreenshot(capture) {
48 try {
49 return await capture();
50 }
51 catch (err) {
52 if (err.code === types_1.TEST_RUN_ERRORS.invalidElementScreenshotDimensionsError)
53 throw err;
54 this.warningLog.addWarning(warning_message_1.default.screenshotError, err.stack);
55 return null;
56 }
57 }
58 async executePendingManipulation(driverMsg) {
59 const command = this.commands.shift();
60 switch (command.type) {
61 case type_1.default.takeElementScreenshot:
62 case type_1.default.takeScreenshot:
63 return await this._takeScreenshot(() => this.screenshotCapturer.captureAction({
64 customPath: command.path,
65 pageDimensions: driverMsg.pageDimensions,
66 cropDimensions: driverMsg.cropDimensions,
67 markSeed: command.markSeed,
68 fullPage: command.fullPage
69 }));
70 case type_1.default.takeScreenshotOnFail:
71 return await this._takeScreenshot(() => this.screenshotCapturer.captureError({
72 pageDimensions: driverMsg.pageDimensions,
73 markSeed: command.markSeed,
74 fullPage: command.fullPage
75 }));
76 case type_1.default.resizeWindow:
77 return await this._resizeWindow(command.width, command.height, driverMsg.pageDimensions.innerWidth, driverMsg.pageDimensions.innerHeight);
78 case type_1.default.resizeWindowToFitDevice:
79 return await this._resizeWindowToFitDevice(command.device, command.options.portraitOrientation, driverMsg.pageDimensions.innerWidth, driverMsg.pageDimensions.innerHeight);
80 case type_1.default.maximizeWindow:
81 return await this._maximizeWindow();
82 }
83 return null;
84 }
85 push(command) {
86 this.commands.push(command);
87 }
88 removeAllNonServiceManipulations() {
89 this.commands = this.commands.filter(command => utils_1.isServiceCommand(command));
90 }
91}
92exports.default = BrowserManipulationQueue;
93module.exports = exports.default;
94//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1tYW5pcHVsYXRpb24tcXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC1ydW4vYnJvd3Nlci1tYW5pcHVsYXRpb24tcXVldWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtRUFBeUQ7QUFDekQsNENBQW9EO0FBQ3BELDJEQUEyQztBQUMzQyx1RkFBK0Q7QUFDL0Qsa0RBQW9FO0FBQ3BFLDJDQUFrRDtBQUdsRCxNQUFxQix3QkFBd0I7SUFDekMsWUFBYSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxVQUFVO1FBQzFELElBQUksQ0FBQyxRQUFRLEdBQWEsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQVksaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQU0saUJBQWlCLENBQUMsUUFBUSxDQUFDO1FBQ3JELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFXLFVBQVUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhO1FBQzNELE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU5RyxJQUFJLENBQUMsZUFBZTtZQUNoQixNQUFNLElBQUksd0NBQTZCLEVBQUUsQ0FBQztRQUU5QyxJQUFJO1lBQ0EsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDOUc7UUFDRCxPQUFPLEdBQUcsRUFBRTtZQUNSLElBQUksQ0FBQyxVQUFVLENB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LGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUU5SSxLQUFLLGNBQVksQ0FBQyx1QkFBdUI7Z0JBQ3JDLE9BQU8sTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFL0ssS0FBSyxjQUFZLENBQUMsY0FBYztnQkFDNUIsT0FBTyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMzQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLENBQUUsT0FBTztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxnQ0FBZ0M7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLHdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztDQUNKO0FBakdELDJDQWlHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFZpZXdwb3J0U2l6ZSB9IGZyb20gJ3Rlc3RjYWZlLWJyb3dzZXItdG9vbHMnO1xuaW1wb3J0IHsgaXNTZXJ2aWNlQ29tbWFuZCB9IGZyb20gJy4vY29tbWFuZHMvdXRpbHMnO1xuaW1wb3J0IENPTU1BTkRfVFlQRSBmcm9tICcuL2NvbW1hbmRzL3R5cGUnO1xuaW1wb3J0IFdBUk5JTkdfTUVTU0FHRSBmcm9tICcuLi9ub3RpZmljYXRpb25zL3dhcm5pbmctbWVzc2FnZSc7XG5pbXBvcnQgeyBXaW5kb3dEaW1lbnNpb25zT3ZlcmZsb3dFcnJvciB9IGZyb20gJy4uL2Vycm9ycy90ZXN0LXJ1bi8nO1xuaW1wb3J0IHsgVEVTVF9SVU5fRVJST1JTIH0gZnJvbSAnLi4vZXJyb3JzL3R5cGVzJztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyTWFuaXB1bGF0aW9uUXVldWUge1xuICAgIGNvbnN0cnVjdG9yIChicm93c2VyQ29ubmVjdGlvbiwgc2NyZWVuc2hvdENhcHR1cmVyLCB3YXJuaW5nTG9nKSB7XG4gICAgICAgIHRoaXMuY29tbWFuZHMgICAgICAgICAgID0gW107XG4gICAgICAgIHRoaXMuYnJvd3NlcklkICAgICAgICAgID0gYnJvd3NlckNvbm5lY3Rpb24uaWQ7XG4gICAgICAgIHRoaXMuYnJvd3NlclByb3ZpZGVyICAgID0gYnJvd3NlckNvbm5lY3Rpb24ucHJvdmlkZXI7XG4gICAgICAgIHRoaXMuc2NyZWVuc2hvdENhcHR1cmVyID0gc2NyZWVuc2hvdENhcHR1cmVyO1xuICAgICAgICB0aGlzLndhcm5pbmdMb2cgICAgICAgICA9IHdhcm5pbmdMb2c7XG4gICAgfVxuXG4gICAgYXN5bmMgX3Jlc2l6ZVdpbmRvdyAod2lkdGgsIGhlaWdodCwgY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0KSB7XG4gICAgICAgIGNvbnN0IGNhblJlc2l6ZVdpbmRvdyA9IGF3YWl0IHRoaXMuYnJvd3NlclByb3ZpZGVyLmNhblJlc2l6ZVdpbmRvd1RvRGltZW5zaW9ucyh0aGlzLmJyb3dzZXJJZCwgd2lkdGgsIGhlaWdodCk7XG5cbiAgICAgICAgaWYgKCFjYW5SZXNpemVXaW5kb3cpXG4gICAgICAgICAgICB0aHJvdyBuZXcgV2luZG93RGltZW5zaW9uc092ZXJmbG93RXJyb3IoKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYnJvd3NlclByb3ZpZGVyLnJlc2l6ZVdpbmRvdyh0aGlzLmJyb3dzZXJJZCwgd2lkdGgsIGhlaWdodCwgY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLndhcm5pbmdMb2cuYWRkV2FybmluZyhXQVJOSU5HX01FU1NBR0UucmVzaXplRXJyb3IsIGVyci5tZXNzYWdlKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgX3Jlc2l6ZVdpbmRvd1RvRml0RGV2aWNlIChkZXZpY2UsIHBvcnRyYWl0LCBjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHQpIHtcbiAgICAgICAgY29uc3QgeyBsYW5kc2NhcGVXaWR0aCwgcG9ydHJhaXRXaWR0aCB9ID0gZ2V0Vmlld3BvcnRTaXplKGRldmljZSk7XG5cbiAgICAgICAgY29uc3Qgd2lkdGggID0gcG9ydHJhaXQgPyBwb3J0cmFpdFdpZHRoIDogbGFuZHNjYXBlV2lkdGg7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHBvcnRyYWl0ID8gbGFuZHNjYXBlV2lkdGggOiBwb3J0cmFpdFdpZHRoO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9yZXNpemVXaW5kb3cod2lkdGgsIGhlaWdodCwgY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0KTtcbiAgICB9XG5cbiAgICBhc3luYyBfbWF4aW1pemVXaW5kb3cgKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYnJvd3NlclByb3ZpZGVyLm1heGltaXplV2luZG93KHRoaXMuYnJvd3NlcklkKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLndhcm5pbmdMb2cuYWRkV2FybmluZyhXQVJOSU5HX01FU1NBR0UubWF4aW1pemVFcnJvciwgZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBfdGFrZVNjcmVlbnNob3QgKGNhcHR1cmUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBjYXB0dXJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKGVyci5jb2RlID09PSBURVNUX1JVTl9FUlJPUlMuaW52YWxpZEVsZW1lbnRTY3JlZW5zaG90RGltZW5zaW9uc0Vycm9yKVxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcblxuICAgICAgICAgICAgdGhpcy53YXJuaW5nTG9nLmFkZFdhcm5pbmcoV0FSTklOR19NRVNTQUdFLnNjcmVlbnNob3RFcnJvciwgZXJyLnN0YWNrKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZXhlY3V0ZVBlbmRpbmdNYW5pcHVsYXRpb24gKGRyaXZlck1zZykge1xuICAgICAgICBjb25zdCBjb21tYW5kID0gdGhpcy5jb21tYW5kcy5zaGlmdCgpO1xuXG4gICAgICAgIHN3aXRjaCAoY29tbWFuZC50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIENPTU1BTkRfVFlQRS50YWtlRWxlbWVudFNjcmVlbnNob3Q6XG4gICAgICAgICAgICBjYXNlIENPTU1BTkRfVFlQRS50YWtlU2NyZWVuc2hvdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fdGFrZVNjcmVlbnNob3QoKCkgPT4gdGhpcy5zY3JlZW5zaG90Q2FwdHVyZXIuY2FwdHVyZUFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVBhdGg6ICAgICBjb21tYW5kLnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VEaW1lbnNpb25zOiBkcml2ZXJNc2cucGFnZURpbWVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgIGNyb3BEaW1lbnNpb25zOiBkcml2ZXJNc2cuY3JvcERpbWVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgIG1hcmtTZWVkOiAgICAgICBjb21tYW5kLm1hcmtTZWVkLFxuICAgICAgICAgICAgICAgICAgICBmdWxsUGFnZTogICAgICAgY29tbWFuZC5mdWxsUGFnZVxuICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgY2FzZSBDT01NQU5EX1RZUEUudGFrZVNjcmVlbnNob3RPbkZhaWw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3Rha2VTY3JlZW5zaG90KCgpID0+IHRoaXMuc2NyZWVuc2hvdENhcHR1cmVyLmNhcHR1cmVFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2VEaW1lbnNpb25zOiBkcml2ZXJNc2cucGFnZURpbWVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgIG1hcmtTZWVkOiAgICAgICBjb21tYW5kLm1hcmtTZWVkLFxuICAgICAgICAgICAgICAgICAgICBmdWxsUGFnZTogICAgICAgY29tbWFuZC5mdWxsUGFnZVxuICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgY2FzZSBDT01NQU5EX1RZUEUucmVzaXplV2luZG93OlxuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9yZXNpemVXaW5kb3coY29tbWFuZC53aWR0aCwgY29tbWFuZC5oZWlnaHQsIGRyaXZlck1zZy5wYWdlRGltZW5zaW9ucy5pbm5lcldpZHRoLCBkcml2ZXJNc2cucGFnZURpbWVuc2lvbnMuaW5uZXJIZWlnaHQpO1xuXG4gICAgICAgICAgICBjYXNlIENPTU1BTkRfVFlQRS5yZXNpemVXaW5kb3dUb0ZpdERldmljZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5fcmVzaXplV2luZG93VG9GaXREZXZpY2UoY29tbWFuZC5kZXZpY2UsIGNvbW1hbmQub3B0aW9ucy5wb3J0cmFpdE9yaWVudGF0aW9uLCBkcml2ZXJNc2cucGFnZURpbWVuc2lvbnMuaW5uZXJXaWR0aCwgZHJpdmVyTXNnLnBhZ2VEaW1lbnNpb25zLmlubmVySGVpZ2h0KTtcblxuICAgICAgICAgICAgY2FzZSBDT01NQU5EX1RZUEUubWF4aW1pemVXaW5kb3c6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX21heGltaXplV2luZG93KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdXNoIChjb21tYW5kKSB7XG4gICAgICAgIHRoaXMuY29tbWFuZHMucHVzaChjb21tYW5kKTtcbiAgICB9XG5cbiAgICByZW1vdmVBbGxOb25TZXJ2aWNlTWFuaXB1bGF0aW9ucyAoKSB7XG4gICAgICAgIHRoaXMuY29tbWFuZHMgPSB0aGlzLmNvbW1hbmRzLmZpbHRlcihjb21tYW5kID0+IGlzU2VydmljZUNvbW1hbmQoY29tbWFuZCkpO1xuICAgIH1cbn1cbiJdfQ==
\No newline at end of file