@browserstack/testcafe
Version:
Automated browser testing for the modern web development stack.
74 lines • 10.7 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(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, allowMultipleWindows) {
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 (allowMultipleWindows)
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 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9idWlsdC1pbi9kZWRpY2F0ZWQvZmlyZWZveC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBEQUEyQjtBQUMzQixtREFBNEM7QUFDNUMsa0VBQTRDO0FBQzVDLHNEQUFpQztBQUNqQyxtREFBdUY7QUFDdkYsNEVBQW1EO0FBR25ELGtEQUNPLGNBQXFCLEtBRXhCLFVBQVUsQ0FBRSxJQUFJO1FBQ1osT0FBTyxnQkFBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCx5QkFBeUIsQ0FBRSxXQUFXO1FBQ2xDLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUUsV0FBVztRQUN0QyxJQUFJO1lBQ0EsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLDJCQUFnQixDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUUxRSxNQUFNLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWpDLE9BQU8sZ0JBQWdCLENBQUM7U0FDM0I7UUFDRCxPQUFPLENBQUMsRUFBRTtZQUNOLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0I7UUFDckUsTUFBTSxXQUFXLEdBQUcsTUFBTSxzQkFBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXZELFdBQVcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2pELFdBQVcsQ0FBQyxTQUFTLEdBQUssU0FBUyxDQUFDO1FBRXBDLE1BQU0scUJBQWlCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTlDLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV6RCxJQUFJLG9CQUFvQjtZQUNwQixXQUFXLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRTFELElBQUksV0FBVyxDQUFDLGNBQWM7WUFDMUIsV0FBVyxDQUFDLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5GLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxDQUFDO0lBQ2pELENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFFLFNBQVM7UUFDekIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxNQUFNLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsV0FBVyxDQUFDO1FBRWpELElBQUksTUFBTSxDQUFDLFFBQVE7WUFDZixNQUFNLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDOztZQUU5QixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1QyxJQUFJLG1CQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7WUFDMUIsTUFBTSxvQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV4QyxJQUFJLFdBQVcsQ0FBQyxjQUFjO1lBQzFCLE1BQU0sV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUUvQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNO1FBQ3hDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFNUQsTUFBTSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUUsU0FBUztRQUM5QixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTVELE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMseUJBQXlCLENBQUUsU0FBUztRQUN0QyxNQUFNLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwRSxPQUFPO1lBQ0gsZUFBZSxFQUFpQixJQUFJO1lBQ3BDLGlCQUFpQixFQUFlLENBQUMsQ0FBQyxnQkFBZ0I7WUFDbEQsd0JBQXdCLEVBQVEsQ0FBQyxDQUFDLGdCQUFnQjtZQUNsRCxvQkFBb0IsRUFBWSxDQUFDLENBQUMsZ0JBQWdCO1lBQ2xELGVBQWUsRUFBaUIsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxRQUFRO1lBQ3JFLGlCQUFpQixFQUFlLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsUUFBUTtZQUNyRSw4QkFBOEIsRUFBRSxLQUFLO1NBQ3hDLENBQUM7SUFDTixDQUFDLElBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT1MgZnJvbSAnb3MtZmFtaWx5JztcbmltcG9ydCBkZWRpY2F0ZWRQcm92aWRlckJhc2UgZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgZ2V0UnVudGltZUluZm8gZnJvbSAnLi9ydW50aW1lLWluZm8nO1xuaW1wb3J0IGdldENvbmZpZyBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBzdGFydCBhcyBzdGFydExvY2FsRmlyZWZveCwgc3RvcCBhcyBzdG9wTG9jYWxGaXJlZm94IH0gZnJvbSAnLi9sb2NhbC1maXJlZm94JztcbmltcG9ydCBNYXJpb25ldHRlQ2xpZW50IGZyb20gJy4vbWFyaW9uZXR0ZS1jbGllbnQnO1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICAuLi5kZWRpY2F0ZWRQcm92aWRlckJhc2UsXG5cbiAgICBfZ2V0Q29uZmlnIChuYW1lKSB7XG4gICAgICAgIHJldHVybiBnZXRDb25maWcobmFtZSk7XG4gICAgfSxcblxuICAgIF9nZXRCcm93c2VyUHJvdG9jb2xDbGllbnQgKHJ1bnRpbWVJbmZvKSB7XG4gICAgICAgIHJldHVybiBydW50aW1lSW5mby5tYXJpb25ldHRlQ2xpZW50O1xuICAgIH0sXG5cbiAgICBhc3luYyBfY3JlYXRlTWFyaW9uZXR0ZUNsaWVudCAocnVudGltZUluZm8pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG1hcmlvbmV0dGVDbGllbnQgPSBuZXcgTWFyaW9uZXR0ZUNsaWVudChydW50aW1lSW5mby5tYXJpb25ldHRlUG9ydCk7XG5cbiAgICAgICAgICAgIGF3YWl0IG1hcmlvbmV0dGVDbGllbnQuY29ubmVjdCgpO1xuXG4gICAgICAgICAgICByZXR1cm4gbWFyaW9uZXR0ZUNsaWVudDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgb3BlbkJyb3dzZXIgKGJyb3dzZXJJZCwgcGFnZVVybCwgY29uZmlnU3RyaW5nLCBhbGxvd011bHRpcGxlV2luZG93cykge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyA9IGF3YWl0IGdldFJ1bnRpbWVJbmZvKGNvbmZpZ1N0cmluZyk7XG5cbiAgICAgICAgcnVudGltZUluZm8uYnJvd3Nlck5hbWUgPSB0aGlzLl9nZXRCcm93c2VyTmFtZSgpO1xuICAgICAgICBydW50aW1lSW5mby5icm93c2VySWQgICA9IGJyb3dzZXJJZDtcblxuICAgICAgICBhd2FpdCBzdGFydExvY2FsRmlyZWZveChwYWdlVXJsLCBydW50aW1lSW5mbyk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yQ29ubmVjdGlvblJlYWR5KHJ1bnRpbWVJbmZvLmJyb3dzZXJJZCk7XG5cbiAgICAgICAgaWYgKGFsbG93TXVsdGlwbGVXaW5kb3dzKVxuICAgICAgICAgICAgcnVudGltZUluZm8uYWN0aXZlV2luZG93SWQgPSB0aGlzLmNhbGN1bGF0ZVdpbmRvd0lkKCk7XG5cbiAgICAgICAgaWYgKHJ1bnRpbWVJbmZvLm1hcmlvbmV0dGVQb3J0KVxuICAgICAgICAgICAgcnVudGltZUluZm8ubWFyaW9uZXR0ZUNsaWVudCA9IGF3YWl0IHRoaXMuX2NyZWF0ZU1hcmlvbmV0dGVDbGllbnQocnVudGltZUluZm8pO1xuXG4gICAgICAgIHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXSA9IHJ1bnRpbWVJbmZvO1xuICAgIH0sXG5cbiAgICBhc3luYyBjbG9zZUJyb3dzZXIgKGJyb3dzZXJJZCkge1xuICAgICAgICBjb25zdCBydW50aW1lSW5mbyA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcbiAgICAgICAgY29uc3QgeyBjb25maWcsIG1hcmlvbmV0dGVDbGllbnQgfSA9IHJ1bnRpbWVJbmZvO1xuXG4gICAgICAgIGlmIChjb25maWcuaGVhZGxlc3MpXG4gICAgICAgICAgICBhd2FpdCBtYXJpb25ldHRlQ2xpZW50LnF1aXQoKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5jbG9zZUxvY2FsQnJvd3Nlcihicm93c2VySWQpO1xuXG4gICAgICAgIGlmIChPUy5tYWMgJiYgIWNvbmZpZy5oZWFkbGVzcylcbiAgICAgICAgICAgIGF3YWl0IHN0b3BMb2NhbEZpcmVmb3gocnVudGltZUluZm8pO1xuXG4gICAgICAgIGlmIChydW50aW1lSW5mby50ZW1wUHJvZmlsZURpcilcbiAgICAgICAgICAgIGF3YWl0IHJ1bnRpbWVJbmZvLnRlbXBQcm9maWxlRGlyLmRpc3Bvc2UoKTtcblxuICAgICAgICBkZWxldGUgdGhpcy5vcGVuZWRCcm93c2Vyc1ticm93c2VySWRdO1xuICAgIH0sXG5cbiAgICBhc3luYyByZXNpemVXaW5kb3cgKGJyb3dzZXJJZCwgd2lkdGgsIGhlaWdodCkge1xuICAgICAgICBjb25zdCB7IG1hcmlvbmV0dGVDbGllbnQgfSA9IHRoaXMub3BlbmVkQnJvd3NlcnNbYnJvd3NlcklkXTtcblxuICAgICAgICBhd2FpdCBtYXJpb25ldHRlQ2xpZW50LnNldFdpbmRvd1NpemUod2lkdGgsIGhlaWdodCk7XG4gICAgfSxcblxuICAgIGFzeW5jIGdldFZpZGVvRnJhbWVEYXRhIChicm93c2VySWQpIHtcbiAgICAgICAgY29uc3QgeyBtYXJpb25ldHRlQ2xpZW50IH0gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IG1hcmlvbmV0dGVDbGllbnQuZ2V0U2NyZWVuc2hvdERhdGEoKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgaGFzQ3VzdG9tQWN0aW9uRm9yQnJvd3NlciAoYnJvd3NlcklkKSB7XG4gICAgICAgIGNvbnN0IHsgY29uZmlnLCBtYXJpb25ldHRlQ2xpZW50IH0gPSB0aGlzLm9wZW5lZEJyb3dzZXJzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhhc0Nsb3NlQnJvd3NlcjogICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIGhhc1Rha2VTY3JlZW5zaG90OiAgICAgICAgICAgICAgISFtYXJpb25ldHRlQ2xpZW50LFxuICAgICAgICAgICAgaGFzQ2hyb21lbGVzc1NjcmVlbnNob3RzOiAgICAgICAhIW1hcmlvbmV0dGVDbGllbnQsXG4gICAgICAgICAgICBoYXNHZXRWaWRlb0ZyYW1lRGF0YTogICAgICAgICAgICEhbWFyaW9uZXR0ZUNsaWVudCxcbiAgICAgICAgICAgIGhhc1Jlc2l6ZVdpbmRvdzogICAgICAgICAgICAgICAgISFtYXJpb25ldHRlQ2xpZW50ICYmIGNvbmZpZy5oZWFkbGVzcyxcbiAgICAgICAgICAgIGhhc01heGltaXplV2luZG93OiAgICAgICAgICAgICAgISFtYXJpb25ldHRlQ2xpZW50ICYmIGNvbmZpZy5oZWFkbGVzcyxcbiAgICAgICAgICAgIGhhc0NhblJlc2l6ZVdpbmRvd1RvRGltZW5zaW9uczogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG59O1xuIl19