135 lines
17 KiB
JavaScript
135 lines
17 KiB
JavaScript
|
"use strict";
|
||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const lodash_1 = require("lodash");
|
||
|
const promisify_event_1 = __importDefault(require("promisify-event"));
|
||
|
const browser_job_result_1 = __importDefault(require("../../runner/browser-job-result"));
|
||
|
const connection_1 = __importDefault(require("../connection"));
|
||
|
const warning_message_1 = __importDefault(require("../../notifications/warning-message"));
|
||
|
const testcafe_hammerhead_1 = require("testcafe-hammerhead");
|
||
|
const name = Symbol();
|
||
|
class BrowserProviderPluginHost {
|
||
|
constructor(providerObject, providerName) {
|
||
|
this.JOB_RESULT = (0, lodash_1.assignIn)({}, browser_job_result_1.default);
|
||
|
(0, lodash_1.assignIn)(this, providerObject);
|
||
|
this[name] = providerName;
|
||
|
}
|
||
|
// Helpers
|
||
|
get providerName() {
|
||
|
return this[name];
|
||
|
}
|
||
|
async runInitScript(browserId, code) {
|
||
|
const connection = connection_1.default.getById(browserId);
|
||
|
return connection.runInitScript(`(${code})()`);
|
||
|
}
|
||
|
calculateWindowId() {
|
||
|
return (0, testcafe_hammerhead_1.generateUniqueId)();
|
||
|
}
|
||
|
waitForConnectionReady(browserId) {
|
||
|
const connection = connection_1.default.getById(browserId);
|
||
|
if (connection.isReady())
|
||
|
return Promise.resolve();
|
||
|
return (0, promisify_event_1.default)(connection, 'ready');
|
||
|
}
|
||
|
reportWarning(browserId, ...args) {
|
||
|
const connection = connection_1.default.getById(browserId);
|
||
|
connection.addWarning(...args);
|
||
|
}
|
||
|
setUserAgentMetaInfo(browserId, message, ...args) {
|
||
|
const connection = connection_1.default.getById(browserId);
|
||
|
connection.setProviderMetaInfo(message, ...args);
|
||
|
}
|
||
|
async closeLocalBrowser(browserId) {
|
||
|
const connection = connection_1.default.getById(browserId);
|
||
|
await connection.provider._ensureBrowserWindowDescriptor(browserId);
|
||
|
await connection.provider._closeLocalBrowser(browserId);
|
||
|
}
|
||
|
async resizeLocalBrowserWindow(browserId, width, height, currentWidth, currentHeight) {
|
||
|
const connection = connection_1.default.getById(browserId);
|
||
|
await connection.provider._ensureBrowserWindowParameters(browserId);
|
||
|
await connection.provider._resizeLocalBrowserWindow(browserId, width, height, currentWidth, currentHeight);
|
||
|
}
|
||
|
// API
|
||
|
// Browser control
|
||
|
async openBrowser( /* browserId, pageUrl, browserName */) {
|
||
|
throw new Error('Not implemented!');
|
||
|
}
|
||
|
async closeBrowser( /* browserId */) {
|
||
|
throw new Error('Not implemented!');
|
||
|
}
|
||
|
// Initialization
|
||
|
async init() {
|
||
|
return;
|
||
|
}
|
||
|
async dispose() {
|
||
|
return;
|
||
|
}
|
||
|
// Browser names handling
|
||
|
async getBrowserList() {
|
||
|
throw new Error('Not implemented!');
|
||
|
}
|
||
|
async isValidBrowserName( /* browserName */) {
|
||
|
return true;
|
||
|
}
|
||
|
// Extra functions
|
||
|
// NOTE:
|
||
|
// The browserName argument is optional, and must be supplied if the browserId argument is not valid
|
||
|
// (browser is not opened)
|
||
|
async isLocalBrowser( /* browserId[, browserName] */) {
|
||
|
return false;
|
||
|
}
|
||
|
// NOTE:
|
||
|
// The browserName argument is optional, and must be supplied if the browserId argument is not valid
|
||
|
// (browser is not opened)
|
||
|
isHeadlessBrowser( /* browserId[, browserName] */) {
|
||
|
return false;
|
||
|
}
|
||
|
async hasCustomActionForBrowser( /* browserId */) {
|
||
|
return {
|
||
|
hasCloseBrowser: this.hasOwnProperty('closeBrowser'),
|
||
|
hasResizeWindow: this.hasOwnProperty('resizeWindow'),
|
||
|
hasTakeScreenshot: this.hasOwnProperty('takeScreenshot'),
|
||
|
hasGetVideoFrameData: this.hasOwnProperty('getVideoFrameData'),
|
||
|
hasCanResizeWindowToDimensions: this.hasOwnProperty('canResizeWindowToDimensions'),
|
||
|
hasMaximizeWindow: this.hasOwnProperty('maximizeWindow'),
|
||
|
hasChromelessScreenshots: false,
|
||
|
};
|
||
|
}
|
||
|
async resizeWindow(browserId /*, width, height, currentWidth, currentHeight */) {
|
||
|
this.reportWarning(browserId, warning_message_1.default.resizeNotSupportedByBrowserProvider, this[name]);
|
||
|
}
|
||
|
async canResizeWindowToDimensions( /* browserId, width, height */) {
|
||
|
return true;
|
||
|
}
|
||
|
async takeScreenshot(browserId /*, screenshotPath, pageWidth, pageHeight */) {
|
||
|
this.reportWarning(browserId, warning_message_1.default.screenshotNotSupportedByBrowserProvider, this[name]);
|
||
|
}
|
||
|
async maximizeWindow(browserId) {
|
||
|
this.reportWarning(browserId, warning_message_1.default.maximizeNotSupportedByBrowserProvider, this[name]);
|
||
|
}
|
||
|
async startCapturingVideo( /*browserId*/) {
|
||
|
}
|
||
|
async stopCapturingVideo( /*browserId*/) {
|
||
|
}
|
||
|
async getVideoFrameData(browserId) {
|
||
|
const browserAlias = connection_1.default.getById(browserId).browserInfo.alias;
|
||
|
this.reportWarning(browserId, warning_message_1.default.videoNotSupportedByBrowser, browserAlias);
|
||
|
}
|
||
|
async reportJobResult( /*browserId, status, data*/) {
|
||
|
return;
|
||
|
}
|
||
|
getConfig(value) {
|
||
|
return value;
|
||
|
}
|
||
|
async closeBrowserChildWindow( /*browserId*/) {
|
||
|
return Promise.resolve();
|
||
|
}
|
||
|
async getOSInfo( /*browserId*/) {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
exports.default = BrowserProviderPluginHost;
|
||
|
module.exports = exports.default;
|
||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJvd3Nlci9wcm92aWRlci9wbHVnaW4taG9zdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFrQztBQUNsQyxzRUFBNkM7QUFDN0MseUZBQWlFO0FBQ2pFLCtEQUE4QztBQUM5QywwRkFBa0U7QUFDbEUsNkRBQXVEO0FBRXZELE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBRXRCLE1BQXFCLHlCQUF5QjtJQUMxQyxZQUFhLGNBQWMsRUFBRSxZQUFZO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBQSxpQkFBUSxFQUFDLEVBQUUsRUFBRSw0QkFBa0IsQ0FBQyxDQUFDO1FBRW5ELElBQUEsaUJBQVEsRUFBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQztJQUM5QixDQUFDO0lBR0QsVUFBVTtJQUNWLElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFFLFNBQVMsRUFBRSxJQUFJO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLG9CQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RCxPQUFPLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUEsc0NBQWdCLEdBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsc0JBQXNCLENBQUUsU0FBUztRQUM3QixNQUFNLFVBQVUsR0FBRyxvQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEQsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQ3BCLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxD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
|