UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

75 lines 11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const os_family_1 = __importDefault(require("os-family")); const base_1 = __importDefault(require("../base")); const runtime_info_1 = __importDefault(require("./runtime-info")); const config_1 = __importDefault(require("./config")); const local_firefox_1 = require("./local-firefox"); const marionette_client_1 = __importDefault(require("./marionette-client")); exports.default = Object.assign(Object.assign({}, base_1.default), { getConfig(name) { return (0, config_1.default)(name); }, _getBrowserProtocolClient(runtimeInfo) { return runtimeInfo.marionetteClient; }, async _createMarionetteClient(runtimeInfo) { try { const marionetteClient = new marionette_client_1.default(runtimeInfo.marionettePort, runtimeInfo); await marionetteClient.connect(); return marionetteClient; } catch (e) { return null; } }, async openBrowser(browserId, pageUrl, config, { disableMultipleWindows }) { const runtimeInfo = await (0, runtime_info_1.default)(config); runtimeInfo.browserName = this._getBrowserName(); runtimeInfo.browserId = browserId; runtimeInfo.windowDescriptors = {}; await (0, local_firefox_1.start)(pageUrl, runtimeInfo); await this.waitForConnectionReady(runtimeInfo.browserId); if (!disableMultipleWindows) runtimeInfo.activeWindowId = this.calculateWindowId(); if (runtimeInfo.marionettePort) runtimeInfo.marionetteClient = await this._createMarionetteClient(runtimeInfo); this.openedBrowsers[browserId] = runtimeInfo; }, async closeBrowser(browserId) { const runtimeInfo = this.openedBrowsers[browserId]; const { config, marionetteClient } = runtimeInfo; if (config.headless) await marionetteClient.quit(); else await this.closeLocalBrowser(browserId); if (os_family_1.default.mac && !config.headless) await (0, local_firefox_1.stop)(runtimeInfo); if (runtimeInfo.tempProfileDir) await runtimeInfo.tempProfileDir.dispose(); delete this.openedBrowsers[browserId]; }, async resizeWindow(browserId, width, height) { const { marionetteClient } = this.openedBrowsers[browserId]; await marionetteClient.setWindowSize(width, height); }, async getVideoFrameData(browserId) { const { marionetteClient } = this.openedBrowsers[browserId]; return marionetteClient.getScreenshotData(); }, async hasCustomActionForBrowser(browserId) { const { config, marionetteClient } = this.openedBrowsers[browserId]; return { hasCloseBrowser: true, hasTakeScreenshot: !!marionetteClient, hasChromelessScreenshots: !!marionetteClient, hasGetVideoFrameData: !!marionetteClient, hasResizeWindow: !!marionetteClient && config.headless, hasMaximizeWindow: !!marionetteClient && config.headless, hasCanResizeWindowToDimensions: false, }; } }); module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvZmlyZWZveC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBEQUEyQjtBQUMzQixtREFBNEM7QUFDNUMsa0VBQTRDO0FBQzVDLHNEQUFpQztBQUNqQyxtREFBdUY7QUFDdkYsNEVBQW1EO0FBR25ELGtEQUNPLGNBQXFCLEtBRXhCLFNBQVMsQ0FBRSxJQUFJO1FBQ1gsT0FBTyxJQUFBLGdCQUFTLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELHlCQUF5QixDQUFFLFdBQVc7UUFDbEMsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUM7SUFDeEMsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBRSxXQUFXO1FBQ3RDLElBQUk7WUFDQSxNQUFNLGdCQUFnQixHQUFHLElBQUksMkJBQWdCLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUV2RixNQUFNLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWpDLE9BQU8sZ0JBQWdCLENBQUM7U0FDM0I7UUFDRCxPQUFPLENBQUMsRUFBRTtZQUNOLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLHNCQUFzQixFQUFFO1FBQ3JFLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSxzQkFBYyxFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpELFdBQVcsQ0FBQyxXQUFXLEdBQVMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZELFdBQVcsQ0FBQyxTQUFTLEdBQVcsU0FBUyxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFbkMsTUFBTSxJQUFBLHFCQUFpQixFQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUU5QyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLHNCQUFzQjtZQUN2QixXQUFXLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRTFELElBQUksV0FBVyxDQUFDLGNBQWM7WUFDMUIsV0FBVyxDQUFDLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5GLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxDQUFDO0lBQ2pELENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFFLFNBQVM7UUFDekIsTUFBTSxXQUFXLEdBQW9CLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEUsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLFdBQVcsQ0FBQztRQUVqRCxJQUFJLE1BQU0sQ0FBQyxRQUFRO1lBQ2YsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7WUFFOUIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUMsSUFBSSxtQkFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQzFCLE1BQU0sSUFBQSxvQkFBZ0IsRUFBQyxXQUFXLENBQUMsQ0FBQztRQUV4QyxJQUFJLFdBQVcsQ0FBQyxjQUFjO1lBQzFCLE1BQU0sV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUUvQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNO1FBQ3hDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUQsTUFBTSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUUsU0FBUztRQUM5QixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTVELE9BQU8sZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsS0FBSyxDQUFDLHlCQUF5QixDQUFFLFNBQVM7UUFDdEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEUsT0FBTztZQUNILGVBQWUsRUFBaUIsSUFBSTtZQUNwQyxpQkFBaUIsRUFBZSxDQUFDLENBQUMsZ0JBQWdCO1lBQ2xELHdCQUF3QixFQUFRLENBQUMsQ0FBQyxnQkFBZ0I7WUFDbEQsb0JBQW9CLEVBQVksQ0FBQyxDQUFDLGdCQUFnQjtZQUNsRCxlQUFlLEVBQWlCLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsUUFBUTtZQUNyRSxpQkFBaUIsRUFBZSxDQUFDLENBQUMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLFFBQVE7WUFDckUsOEJBQThCLEVBQUUsS0FBSztTQUN4QyxDQUFDO0lBQ04sQ0FBQyxJQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5pbXBvcnQgZGVkaWNhdGVkUHJvdmlkZXJCYXNlIGZyb20gJy4uL2Jhc2UnO1xuaW1wb3J0IGdldFJ1bnRpbWVJbmZvIGZyb20gJy4vcnVudGltZS1pbmZvJztcbmltcG9ydCBnZXRDb25maWcgZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgc3RhcnQgYXMgc3RhcnRMb2NhbEZpcmVmb3gsIHN0b3AgYXMgc3RvcExvY2FsRmlyZWZveCB9IGZyb20gJy4vbG9jYWwtZmlyZWZveCc7XG5pbXBvcnQgTWFyaW9uZXR0ZUNsaWVudCBmcm9tICcuL21hcmlvbmV0dGUtY2xpZW50JztcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgLi4uZGVkaWNhdGVkUHJvdmlkZXJCYXNlLFxuXG4gICAgZ2V0Q29uZmlnIChuYW1lKSB7XG4gICAgICAgIHJldHVybiBnZXRDb25maWcobmFtZSk7XG4gICAgfSxcblxuICAgIF9nZXRCcm93c2VyUHJvdG9jb2xDbGllbnQgKHJ1bnRpbWVJbmZvKSB7XG4gICAgICAgIHJldHVybiBydW50aW1lSW5mby5tYXJpb25ldHRlQ2xpZW50O1xuICAgIH0sXG5cbiAgICBhc3luYyBfY3JlYXRlTWFyaW9uZXR0ZUNsaWVudCAocnVudGltZUluZm8pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmlvbmV0dGVDbGllbnQgPSBuZXcgTWFyaW9uZXR0ZUNsaWVudChydW50aW1lSW5mby5tYXJpb25ldHRlUG9ydCwgcnVudGltZUluZm8pO1xuXG4gICAgICAgICAgICBhd2FpdCBtYXJpb25ldHRlQ2xpZW50LmNvbm5lY3QoKTtcblxuICAgICAgICAgICAgcmV0dXJuIG1hcmlvbmV0dGVDbGllbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIG9wZW5Ccm93c2VyIChicm93c2VySWQsIHBhZ2VVcmwsIGNvbmZpZywgeyBkaXNhYmxlTXVsdGlwbGVXaW5kb3dzIH0pIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gPSBhd2FpdCBnZXRSdW50aW1lSW5mbyhjb25maWcpO1xuXG4gICAgICAgIHJ1bnRpbWVJbmZvLmJyb3dzZXJOYW1lICAgICAgID0gdGhpcy5fZ2V0QnJvd3Nlck5hbWUoKTtcbiAgICAgICAgcnVudGltZUluZm8uYnJvd3NlcklkICAgICAgICAgPSBicm93c2VySWQ7XG4gICAgICAgIHJ1bnRpbWVJbmZvLndpbmRvd0Rlc2NyaXB0b3JzID0ge307XG5cbiAgICAgICAgYXdhaXQgc3RhcnRMb2NhbEZpcmVmb3gocGFnZVVybCwgcnVudGltZUluZm8pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvckNvbm5lY3Rpb25SZWFkeShydW50aW1lSW5mby5icm93c2VySWQpO1xuXG4gICAgICAgIGlmICghZGlzYWJsZU11bHRpcGxlV2luZG93cylcbiAgICAgICAgICAgIHJ1bnRpbWVJbmZvLmFjdGl2ZVdpbmRvd0lkID0gdGhpcy5jYWxjdWxhdGVXaW5kb3dJZCgpO1xuXG4gICAgICAgIGlmIChydW50aW1lSW5mby5tYXJpb25ldHRlUG9ydClcbiAgICAgICAgICAgIHJ1bnRpbWVJbmZvLm1hcmlvbmV0dGVDbGllbnQgPSBhd2FpdCB0aGlzLl9jcmVhdGVNYXJpb25ldHRlQ2xpZW50KHJ1bnRpbWVJbmZvKTtcblxuICAgICAgICB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF0gPSBydW50aW1lSW5mbztcbiAgICB9LFxuXG4gICAgYXN5bmMgY2xvc2VCcm93c2VyIChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgcnVudGltZUluZm8gICAgICAgICAgICAgICAgICA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcbiAgICAgICAgY29uc3QgeyBjb25maWcsIG1hcmlvbmV0dGVDbGllbnQgfSA9IHJ1bnRpbWVJbmZvO1xuXG4gICAgICAgIGlmIChjb25maWcuaGVhZGxlc3MpXG4gICAgICAgICAgICBhd2FpdCBtYXJpb25ldHRlQ2xpZW50LnF1aXQoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jbG9zZUxvY2FsQnJvd3Nlcihicm93c2VySWQpO1xuXG4gICAgICAgIGlmIChPUy5tYWMgJiYgIWNvbmZpZy5oZWFkbGVzcylcbiAgICAgICAgICAgIGF3YWl0IHN0b3BMb2NhbEZpcmVmb3gocnVudGltZUluZm8pO1xuXG4gICAgICAgIGlmIChydW50aW1lSW5mby50ZW1wUHJvZmlsZURpcilcbiAgICAgICAgICAgIGF3YWl0IHJ1bnRpbWVJbmZvLnRlbXBQcm9maWxlRGlyLmRpc3Bvc2UoKTtcblxuICAgICAgICBkZWxldGUgdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuICAgIH0sXG5cbiAgICBhc3luYyByZXNpemVXaW5kb3cgKGJyb3dzZXJJZCwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgICBjb25zdCB7IG1hcmlvbmV0dGVDbGllbnQgfSA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcblxuICAgICAgICBhd2FpdCBtYXJpb25ldHRlQ2xpZW50LnNldFdpbmRvd1NpemUod2lkdGgsIGhlaWdodCk7XG4gICAgfSxcblxuICAgIGFzeW5jIGdldFZpZGVvRnJhbWVEYXRhIChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgeyBtYXJpb25ldHRlQ2xpZW50IH0gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgcmV0dXJuIG1hcmlvbmV0dGVDbGllbnQuZ2V0U2NyZWVuc2hvdERhdGEoKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgaGFzQ3VzdG9tQWN0aW9uRm9yQnJvd3NlciAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IHsgY29uZmlnLCBtYXJpb25ldHRlQ2xpZW50IH0gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhhc0Nsb3NlQnJvd3NlcjogICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIGhhc1Rha2VTY3JlZW5zaG90OiAgICAgICAgICAgICAgISFtYXJpb25ldHRlQ2xpZW50LFxuICAgICAgICAgICAgaGFzQ2hyb21lbGVzc1NjcmVlbnNob3RzOiAgICAgICAhIW1hcmlvbmV0dGVDbGllbnQsXG4gICAgICAgICAgICBoYXNHZXRWaWRlb0ZyYW1lRGF0YTogICAgICAgICAgICEhbWFyaW9uZXR0ZUNsaWVudCxcbiAgICAgICAgICAgIGhhc1Jlc2l6ZVdpbmRvdzogICAgICAgICAgICAgICAgISFtYXJpb25ldHRlQ2xpZW50ICYmIGNvbmZpZy5oZWFkbGVzcyxcbiAgICAgICAgICAgIGhhc01heGltaXplV2luZG93OiAgICAgICAgICAgICAgISFtYXJpb25ldHRlQ2xpZW50ICYmIGNvbmZpZy5oZWFkbGVzcyxcbiAgICAgICAgICAgIGhhc0NhblJlc2l6ZVdpbmRvd1RvRGltZW5zaW9uczogZmFsc2UsXG4gICAgICAgIH07XG4gICAgfSxcbn07XG4iXX0=