testcafe
Version:
Automated browser testing for the modern web development stack.
60 lines • 8.07 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const debug_1 = __importDefault(require("debug"));
const testcafe_browser_tools_1 = require("testcafe-browser-tools");
const warning_message_1 = __importDefault(require("../../../notifications/warning-message"));
const DEBUG_LOGGER = (0, debug_1.default)('testcafe:browser:provider:built-in:remote');
exports.default = {
canDetectLocalBrowsers: true,
localBrowsersFlags: {},
async openBrowser(browserId) {
if (!this.canDetectLocalBrowsers)
return;
await this.waitForConnectionReady(browserId);
let localBrowserWindow = null;
try {
localBrowserWindow = await (0, testcafe_browser_tools_1.findWindow)(browserId);
}
catch (err) {
// NOTE: We can suppress the error here since we can just disable window manipulation functions
// when the browser is truly remote and we cannot find a local window descriptor
DEBUG_LOGGER(err);
}
this.localBrowsersFlags[browserId] = localBrowserWindow !== null;
},
async closeBrowser(browserId) {
delete this.localBrowsersFlags[browserId];
},
async isLocalBrowser(browserId) {
// NOTE:
// if browserId is not specified, then it means that a browser is not yet started
// we may assume that it's not local, because
// otherwise we'll just disable window manipulation function's after the browser will be started
return !!browserId && this.localBrowsersFlags[browserId];
},
// NOTE: we must try to do a local screenshot or resize, if browser is accessible, and emit warning otherwise
async hasCustomActionForBrowser(browserId) {
const isLocalBrowser = this.localBrowsersFlags[browserId];
return {
hasCloseBrowser: true,
hasResizeWindow: !isLocalBrowser,
hasMaximizeWindow: !isLocalBrowser,
hasTakeScreenshot: !isLocalBrowser,
hasCanResizeWindowToDimensions: !isLocalBrowser,
};
},
async takeScreenshot(browserId) {
this.reportWarning(browserId, warning_message_1.default.browserManipulationsOnRemoteBrowser);
},
async resizeWindow(browserId) {
this.reportWarning(browserId, warning_message_1.default.browserManipulationsOnRemoteBrowser);
},
async maximizeWindow(browserId) {
this.reportWarning(browserId, warning_message_1.default.browserManipulationsOnRemoteBrowser);
},
};
module.exports = exports.default;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Jyb3dzZXIvcHJvdmlkZXIvYnVpbHQtaW4vcmVtb3RlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLG1FQUFvRDtBQUNwRCw2RkFBcUU7QUFHckUsTUFBTSxZQUFZLEdBQUcsSUFBQSxlQUFLLEVBQUMsMkNBQTJDLENBQUMsQ0FBQztBQUV4RSxrQkFBZTtJQUNYLHNCQUFzQixFQUFFLElBQUk7SUFFNUIsa0JBQWtCLEVBQUUsRUFBRTtJQUV0QixLQUFLLENBQUMsV0FBVyxDQUFFLFNBQVM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0I7WUFDNUIsT0FBTztRQUVYLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdDLElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBRTlCLElBQUk7WUFDQSxrQkFBa0IsR0FBRyxNQUFNLElBQUEsbUNBQVUsRUFBQyxTQUFTLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sR0FBRyxFQUFFO1lBQ1IsK0ZBQStGO1lBQy9GLGdGQUFnRjtZQUNoRixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckI7UUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEdBQUcsa0JBQWtCLEtBQUssSUFBSSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFFLFNBQVM7UUFDekIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUUsU0FBUztRQUMzQixRQUFRO1FBQ1IsaUZBQWlGO1FBQ2pGLDZDQUE2QztRQUM3QyxnR0FBZ0c7UUFDaEcsT0FBTyxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsNkdBQTZHO0lBQzdHLEtBQUssQ0FBQyx5QkFBeUIsQ0FBRSxTQUFTO1FBQ3RDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUxRCxPQUFPO1lBQ0gsZUFBZSxFQUFpQixJQUFJO1lBQ3BDLGVBQWUsRUFBaUIsQ0FBQyxjQUFjO1lBQy9DLGlCQUFpQixFQUFlLENBQUMsY0FBYztZQUMvQyxpQkFBaUIsRUFBZSxDQUFDLGNBQWM7WUFDL0MsOEJBQThCLEVBQUUsQ0FBQyxjQUFjO1NBQ2xELENBQUM7SUFDTixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBRSxTQUFTO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLHlCQUFlLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVksQ0FBRSxTQUFTO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLHlCQUFlLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBRSxTQUFTO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLHlCQUFlLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUN2RixDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBmaW5kV2luZG93IH0gZnJvbSAndGVzdGNhZmUtYnJvd3Nlci10b29scyc7XG5pbXBvcnQgV0FSTklOR19NRVNTQUdFIGZyb20gJy4uLy4uLy4uL25vdGlmaWNhdGlvbnMvd2FybmluZy1tZXNzYWdlJztcblxuXG5jb25zdCBERUJVR19MT0dHRVIgPSBkZWJ1ZygndGVzdGNhZmU6YnJvd3Nlcjpwcm92aWRlcjpidWlsdC1pbjpyZW1vdGUnKTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGNhbkRldGVjdExvY2FsQnJvd3NlcnM6IHRydWUsXG5cbiAgICBsb2NhbEJyb3dzZXJzRmxhZ3M6IHt9LFxuXG4gICAgYXN5bmMgb3BlbkJyb3dzZXIgKGJyb3dzZXJJZCkge1xuICAgICAgICBpZiAoIXRoaXMuY2FuRGV0ZWN0TG9jYWxCcm93c2VycylcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JDb25uZWN0aW9uUmVhZHkoYnJvd3NlcklkKTtcblxuICAgICAgICBsZXQgbG9jYWxCcm93c2VyV2luZG93ID0gbnVsbDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbG9jYWxCcm93c2VyV2luZG93ID0gYXdhaXQgZmluZFdpbmRvdyhicm93c2VySWQpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IFdlIGNhbiBzdXBwcmVzcyB0aGUgZXJyb3IgaGVyZSBzaW5jZSB3ZSBjYW4ganVzdCBkaXNhYmxlIHdpbmRvdyBtYW5pcHVsYXRpb24gZnVuY3Rpb25zXG4gICAgICAgICAgICAvLyB3aGVuIHRoZSBicm93c2VyIGlzIHRydWx5IHJlbW90ZSBhbmQgd2UgY2Fubm90IGZpbmQgYSBsb2NhbCB3aW5kb3cgZGVzY3JpcHRvclxuICAgICAgICAgICAgREVCVUdfTE9HR0VSKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvY2FsQnJvd3NlcnNGbGFnc1ticm93c2VySWRdID0gbG9jYWxCcm93c2VyV2luZG93ICE9PSBudWxsO1xuICAgIH0sXG5cbiAgICBhc3luYyBjbG9zZUJyb3dzZXIgKGJyb3dzZXJJZCkge1xuICAgICAgICBkZWxldGUgdGhpcy5sb2NhbEJyb3dzZXJzRmxhZ3NbYnJvd3NlcklkXTtcbiAgICB9LFxuXG4gICAgYXN5bmMgaXNMb2NhbEJyb3dzZXIgKGJyb3dzZXJJZCkge1xuICAgICAgICAvLyBOT1RFOlxuICAgICAgICAvLyBpZiBicm93c2VySWQgaXMgbm90IHNwZWNpZmllZCwgdGhlbiBpdCBtZWFucyB0aGF0IGEgYnJvd3NlciBpcyBub3QgeWV0IHN0YXJ0ZWRcbiAgICAgICAgLy8gd2UgbWF5IGFzc3VtZSB0aGF0IGl0J3Mgbm90IGxvY2FsLCBiZWNhdXNlXG4gICAgICAgIC8vIG90aGVyd2lzZSB3ZSdsbCBqdXN0IGRpc2FibGUgd2luZG93IG1hbmlwdWxhdGlvbiBmdW5jdGlvbidzIGFmdGVyIHRoZSBicm93c2VyIHdpbGwgYmUgc3RhcnRlZFxuICAgICAgICByZXR1cm4gISFicm93c2VySWQgJiYgdGhpcy5sb2NhbEJyb3dzZXJzRmxhZ3NbYnJvd3NlcklkXTtcbiAgICB9LFxuXG4gICAgLy8gTk9URTogd2UgbXVzdCB0cnkgdG8gZG8gYSBsb2NhbCBzY3JlZW5zaG90IG9yIHJlc2l6ZSwgaWYgYnJvd3NlciBpcyBhY2Nlc3NpYmxlLCBhbmQgZW1pdCB3YXJuaW5nIG90aGVyd2lzZVxuICAgIGFzeW5jIGhhc0N1c3RvbUFjdGlvbkZvckJyb3dzZXIgKGJyb3dzZXJJZCkge1xuICAgICAgICBjb25zdCBpc0xvY2FsQnJvd3NlciA9IHRoaXMubG9jYWxCcm93c2Vyc0ZsYWdzW2Jyb3dzZXJJZF07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhhc0Nsb3NlQnJvd3NlcjogICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIGhhc1Jlc2l6ZVdpbmRvdzogICAgICAgICAgICAgICAgIWlzTG9jYWxCcm93c2VyLFxuICAgICAgICAgICAgaGFzTWF4aW1pemVXaW5kb3c6ICAgICAgICAgICAgICAhaXNMb2NhbEJyb3dzZXIsXG4gICAgICAgICAgICBoYXNUYWtlU2NyZWVuc2hvdDogICAgICAgICAgICAgICFpc0xvY2FsQnJvd3NlcixcbiAgICAgICAgICAgIGhhc0NhblJlc2l6ZVdpbmRvd1RvRGltZW5zaW9uczogIWlzTG9jYWxCcm93c2VyLFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBhc3luYyB0YWtlU2NyZWVuc2hvdCAoYnJvd3NlcklkKSB7XG4gICAgICAgIHRoaXMucmVwb3J0V2FybmluZyhicm93c2VySWQsIFdBUk5JTkdfTUVTU0FHRS5icm93c2VyTWFuaXB1bGF0aW9uc09uUmVtb3RlQnJvd3Nlcik7XG4gICAgfSxcblxuICAgIGFzeW5jIHJlc2l6ZVdpbmRvdyAoYnJvd3NlcklkKSB7XG4gICAgICAgIHRoaXMucmVwb3J0V2FybmluZyhicm93c2VySWQsIFdBUk5JTkdfTUVTU0FHRS5icm93c2VyTWFuaXB1bGF0aW9uc09uUmVtb3RlQnJvd3Nlcik7XG4gICAgfSxcblxuICAgIGFzeW5jIG1heGltaXplV2luZG93IChicm93c2VySWQpIHtcbiAgICAgICAgdGhpcy5yZXBvcnRXYXJuaW5nKGJyb3dzZXJJZCwgV0FSTklOR19NRVNTQUdFLmJyb3dzZXJNYW5pcHVsYXRpb25zT25SZW1vdGVCcm93c2VyKTtcbiAgICB9LFxufTtcbiJdfQ==