testcafe
Version:
Automated browser testing for the modern web development stack.
72 lines • 10.3 kB
JavaScript
;
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({}, base_1.default, { _getConfig(name) {
return config_1.default(name);
},
_getBrowserProtocolClient(runtimeInfo) {
return runtimeInfo.marionetteClient;
},
async _createMarionetteClient(runtimeInfo) {
try {
const marionetteClient = new marionette_client_1.default(runtimeInfo.marionettePort);
await marionetteClient.connect();
return marionetteClient;
}
catch (e) {
return null;
}
},
async openBrowser(browserId, pageUrl, configString) {
const runtimeInfo = await runtime_info_1.default(configString);
runtimeInfo.browserName = this._getBrowserName();
runtimeInfo.browserId = browserId;
await local_firefox_1.start(pageUrl, runtimeInfo);
await this.waitForConnectionReady(runtimeInfo.browserId);
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 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 await 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvZmlyZWZveC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBEQUEyQjtBQUMzQixtREFBNEM7QUFDNUMsa0VBQTRDO0FBQzVDLHNEQUFpQztBQUNqQyxtREFBdUY7QUFDdkYsNEVBQW1EO0FBR25ELG9DQUNPLGNBQXFCLElBRXhCLFVBQVUsQ0FBRSxJQUFJO1FBQ1osT0FBTyxnQkFBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCx5QkFBeUIsQ0FBRSxXQUFXO1FBQ2xDLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUUsV0FBVztRQUN0QyxJQUFJO1lBQ0EsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLDJCQUFnQixDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUUxRSxNQUFNLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWpDLE9BQU8sZ0JBQWdCLENBQUM7U0FDM0I7UUFDRCxPQUFPLENBQUMsRUFBRTtZQUNOLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVk7UUFDL0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxzQkFBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXZELFdBQVcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2pELFdBQVcsQ0FBQyxTQUFTLEdBQUssU0FBUyxDQUFDO1FBRXBDLE1BQU0scUJBQWlCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTlDLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV6RCxJQUFJLFdBQVcsQ0FBQyxjQUFjO1lBQzFCLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVuRixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBRSxTQUFTO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLFdBQVcsQ0FBQztRQUVqRCxJQUFJLE1BQU0sQ0FBQyxRQUFRO1lBQ2YsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7WUFFOUIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUMsSUFBSSxtQkFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQzFCLE1BQU0sb0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFeEMsSUFBSSxXQUFXLENBQUMsY0FBYztZQUMxQixNQUFNLFdBQVcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFL0MsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTTtRQUN4QyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTVELE1BQU0sZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGlCQUFpQixDQUFFLFNBQVM7UUFDOUIsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1RCxPQUFPLE1BQU0sZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsS0FBSyxDQUFDLHlCQUF5QixDQUFFLFNBQVM7UUFDdEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFcEUsT0FBTztZQUNILGVBQWUsRUFBaUIsSUFBSTtZQUNwQyxpQkFBaUIsRUFBZSxDQUFDLENBQUMsZ0JBQWdCO1lBQ2xELHdCQUF3QixFQUFRLENBQUMsQ0FBQyxnQkFBZ0I7WUFDbEQsb0JBQW9CLEVBQVksQ0FBQyxDQUFDLGdCQUFnQjtZQUNsRCxlQUFlLEVBQWlCLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsUUFBUTtZQUNyRSxpQkFBaUIsRUFBZSxDQUFDLENBQUMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLFFBQVE7WUFDckUsOEJBQThCLEVBQUUsS0FBSztTQUN4QyxDQUFDO0lBQ04sQ0FBQyxJQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5pbXBvcnQgZGVkaWNhdGVkUHJvdmlkZXJCYXNlIGZyb20gJy4uL2Jhc2UnO1xuaW1wb3J0IGdldFJ1bnRpbWVJbmZvIGZyb20gJy4vcnVudGltZS1pbmZvJztcbmltcG9ydCBnZXRDb25maWcgZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgc3RhcnQgYXMgc3RhcnRMb2NhbEZpcmVmb3gsIHN0b3AgYXMgc3RvcExvY2FsRmlyZWZveCB9IGZyb20gJy4vbG9jYWwtZmlyZWZveCc7XG5pbXBvcnQgTWFyaW9uZXR0ZUNsaWVudCBmcm9tICcuL21hcmlvbmV0dGUtY2xpZW50JztcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgLi4uZGVkaWNhdGVkUHJvdmlkZXJCYXNlLFxuXG4gICAgX2dldENvbmZpZyAobmFtZSkge1xuICAgICAgICByZXR1cm4gZ2V0Q29uZmlnKG5hbWUpO1xuICAgIH0sXG5cbiAgICBfZ2V0QnJvd3NlclByb3RvY29sQ2xpZW50IChydW50aW1lSW5mbykge1xuICAgICAgICByZXR1cm4gcnVudGltZUluZm8ubWFyaW9uZXR0ZUNsaWVudDtcbiAgICB9LFxuXG4gICAgYXN5bmMgX2NyZWF0ZU1hcmlvbmV0dGVDbGllbnQgKHJ1bnRpbWVJbmZvKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBtYXJpb25ldHRlQ2xpZW50ID0gbmV3IE1hcmlvbmV0dGVDbGllbnQocnVudGltZUluZm8ubWFyaW9uZXR0ZVBvcnQpO1xuXG4gICAgICAgICAgICBhd2FpdCBtYXJpb25ldHRlQ2xpZW50LmNvbm5lY3QoKTtcblxuICAgICAgICAgICAgcmV0dXJuIG1hcmlvbmV0dGVDbGllbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIG9wZW5Ccm93c2VyIChicm93c2VySWQsIHBhZ2VVcmwsIGNvbmZpZ1N0cmluZykge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyA9IGF3YWl0IGdldFJ1bnRpbWVJbmZvKGNvbmZpZ1N0cmluZyk7XG5cbiAgICAgICAgcnVudGltZUluZm8uYnJvd3Nlck5hbWUgPSB0aGlzLl9nZXRCcm93c2VyTmFtZSgpO1xuICAgICAgICBydW50aW1lSW5mby5icm93c2VySWQgICA9IGJyb3dzZXJJZDtcblxuICAgICAgICBhd2FpdCBzdGFydExvY2FsRmlyZWZveChwYWdlVXJsLCBydW50aW1lSW5mbyk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yQ29ubmVjdGlvblJlYWR5KHJ1bnRpbWVJbmZvLmJyb3dzZXJJZCk7XG5cbiAgICAgICAgaWYgKHJ1bnRpbWVJbmZvLm1hcmlvbmV0dGVQb3J0KVxuICAgICAgICAgICAgcnVudGltZUluZm8ubWFyaW9uZXR0ZUNsaWVudCA9IGF3YWl0IHRoaXMuX2NyZWF0ZU1hcmlvbmV0dGVDbGllbnQocnVudGltZUluZm8pO1xuXG4gICAgICAgIHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXSA9IHJ1bnRpbWVJbmZvO1xuICAgIH0sXG5cbiAgICBhc3luYyBjbG9zZUJyb3dzZXIgKGJyb3dzZXJJZCkge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcbiAgICAgICAgY29uc3QgeyBjb25maWcsIG1hcmlvbmV0dGVDbGllbnQgfSA9IHJ1bnRpbWVJbmZvO1xuXG4gICAgICAgIGlmIChjb25maWcuaGVhZGxlc3MpXG4gICAgICAgICAgICBhd2FpdCBtYXJpb25ldHRlQ2xpZW50LnF1aXQoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jbG9zZUxvY2FsQnJvd3Nlcihicm93c2VySWQpO1xuXG4gICAgICAgIGlmIChPUy5tYWMgJiYgIWNvbmZpZy5oZWFkbGVzcylcbiAgICAgICAgICAgIGF3YWl0IHN0b3BMb2NhbEZpcmVmb3gocnVudGltZUluZm8pO1xuXG4gICAgICAgIGlmIChydW50aW1lSW5mby50ZW1wUHJvZmlsZURpcilcbiAgICAgICAgICAgIGF3YWl0IHJ1bnRpbWVJbmZvLnRlbXBQcm9maWxlRGlyLmRpc3Bvc2UoKTtcblxuICAgICAgICBkZWxldGUgdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuICAgIH0sXG5cbiAgICBhc3luYyByZXNpemVXaW5kb3cgKGJyb3dzZXJJZCwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgICBjb25zdCB7IG1hcmlvbmV0dGVDbGllbnQgfSA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcblxuICAgICAgICBhd2FpdCBtYXJpb25ldHRlQ2xpZW50LnNldFdpbmRvd1NpemUod2lkdGgsIGhlaWdodCk7XG4gICAgfSxcblxuICAgIGFzeW5jIGdldFZpZGVvRnJhbWVEYXRhIChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgeyBtYXJpb25ldHRlQ2xpZW50IH0gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IG1hcmlvbmV0dGVDbGllbnQuZ2V0U2NyZWVuc2hvdERhdGEoKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgaGFzQ3VzdG9tQWN0aW9uRm9yQnJvd3NlciAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IHsgY29uZmlnLCBtYXJpb25ldHRlQ2xpZW50IH0gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhhc0Nsb3NlQnJvd3NlcjogICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIGhhc1Rha2VTY3JlZW5zaG90OiAgICAgICAgICAgICAgISFtYXJpb25ldHRlQ2xpZW50LFxuICAgICAgICAgICAgaGFzQ2hyb21lbGVzc1NjcmVlbnNob3RzOiAgICAgICAhIW1hcmlvbmV0dGVDbGllbnQsXG4gICAgICAgICAgICBoYXNHZXRWaWRlb0ZyYW1lRGF0YTogICAgICAgICAgICEhbWFyaW9uZXR0ZUNsaWVudCxcbiAgICAgICAgICAgIGhhc1Jlc2l6ZVdpbmRvdzogICAgICAgICAgICAgICAgISFtYXJpb25ldHRlQ2xpZW50ICYmIGNvbmZpZy5oZWFkbGVzcyxcbiAgICAgICAgICAgIGhhc01heGltaXplV2luZG93OiAgICAgICAgICAgICAgISFtYXJpb25ldHRlQ2xpZW50ICYmIGNvbmZpZy5oZWFkbGVzcyxcbiAgICAgICAgICAgIGhhc0NhblJlc2l6ZVdpbmRvd1RvRGltZW5zaW9uczogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG59O1xuIl19