139 lines
6.0 KiB
JavaScript
139 lines
6.0 KiB
JavaScript
"use strict";
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
var electron_exports = {};
|
|
__export(electron_exports, {
|
|
Electron: () => Electron,
|
|
ElectronApplication: () => ElectronApplication
|
|
});
|
|
module.exports = __toCommonJS(electron_exports);
|
|
var import_browserContext = require("./browserContext");
|
|
var import_channelOwner = require("./channelOwner");
|
|
var import_clientHelper = require("./clientHelper");
|
|
var import_consoleMessage = require("./consoleMessage");
|
|
var import_errors = require("./errors");
|
|
var import_events = require("./events");
|
|
var import_jsHandle = require("./jsHandle");
|
|
var import_waiter = require("./waiter");
|
|
var import_timeoutSettings = require("./timeoutSettings");
|
|
class Electron extends import_channelOwner.ChannelOwner {
|
|
static from(electron) {
|
|
return electron._object;
|
|
}
|
|
constructor(parent, type, guid, initializer) {
|
|
super(parent, type, guid, initializer);
|
|
}
|
|
async launch(options = {}) {
|
|
options = this._playwright.selectors._withSelectorOptions(options);
|
|
const params = {
|
|
...await (0, import_browserContext.prepareBrowserContextParams)(this._platform, options),
|
|
env: (0, import_clientHelper.envObjectToArray)(options.env ? options.env : this._platform.env),
|
|
tracesDir: options.tracesDir,
|
|
timeout: new import_timeoutSettings.TimeoutSettings(this._platform).launchTimeout(options)
|
|
};
|
|
const app = ElectronApplication.from((await this._channel.launch(params)).electronApplication);
|
|
this._playwright.selectors._contextsForSelectors.add(app._context);
|
|
app.once(import_events.Events.ElectronApplication.Close, () => this._playwright.selectors._contextsForSelectors.delete(app._context));
|
|
await app._context._initializeHarFromOptions(options.recordHar);
|
|
app._context.tracing._tracesDir = options.tracesDir;
|
|
return app;
|
|
}
|
|
}
|
|
class ElectronApplication extends import_channelOwner.ChannelOwner {
|
|
constructor(parent, type, guid, initializer) {
|
|
super(parent, type, guid, initializer);
|
|
this._windows = /* @__PURE__ */ new Set();
|
|
this._timeoutSettings = new import_timeoutSettings.TimeoutSettings(this._platform);
|
|
this._context = import_browserContext.BrowserContext.from(initializer.context);
|
|
for (const page of this._context._pages)
|
|
this._onPage(page);
|
|
this._context.on(import_events.Events.BrowserContext.Page, (page) => this._onPage(page));
|
|
this._channel.on("close", () => {
|
|
this.emit(import_events.Events.ElectronApplication.Close);
|
|
});
|
|
this._channel.on("console", (event) => this.emit(import_events.Events.ElectronApplication.Console, new import_consoleMessage.ConsoleMessage(this._platform, event)));
|
|
this._setEventToSubscriptionMapping(/* @__PURE__ */ new Map([
|
|
[import_events.Events.ElectronApplication.Console, "console"]
|
|
]));
|
|
}
|
|
static from(electronApplication) {
|
|
return electronApplication._object;
|
|
}
|
|
process() {
|
|
return this._connection.toImpl?.(this)?.process();
|
|
}
|
|
_onPage(page) {
|
|
this._windows.add(page);
|
|
this.emit(import_events.Events.ElectronApplication.Window, page);
|
|
page.once(import_events.Events.Page.Close, () => this._windows.delete(page));
|
|
}
|
|
windows() {
|
|
return [...this._windows];
|
|
}
|
|
async firstWindow(options) {
|
|
if (this._windows.size)
|
|
return this._windows.values().next().value;
|
|
return await this.waitForEvent("window", options);
|
|
}
|
|
context() {
|
|
return this._context;
|
|
}
|
|
async [Symbol.asyncDispose]() {
|
|
await this.close();
|
|
}
|
|
async close() {
|
|
try {
|
|
await this._context.close();
|
|
} catch (e) {
|
|
if ((0, import_errors.isTargetClosedError)(e))
|
|
return;
|
|
throw e;
|
|
}
|
|
}
|
|
async waitForEvent(event, optionsOrPredicate = {}) {
|
|
return await this._wrapApiCall(async () => {
|
|
const timeout = this._timeoutSettings.timeout(typeof optionsOrPredicate === "function" ? {} : optionsOrPredicate);
|
|
const predicate = typeof optionsOrPredicate === "function" ? optionsOrPredicate : optionsOrPredicate.predicate;
|
|
const waiter = import_waiter.Waiter.createForEvent(this, event);
|
|
waiter.rejectOnTimeout(timeout, `Timeout ${timeout}ms exceeded while waiting for event "${event}"`);
|
|
if (event !== import_events.Events.ElectronApplication.Close)
|
|
waiter.rejectOnEvent(this, import_events.Events.ElectronApplication.Close, () => new import_errors.TargetClosedError());
|
|
const result = await waiter.waitForEvent(this, event, predicate);
|
|
waiter.dispose();
|
|
return result;
|
|
});
|
|
}
|
|
async browserWindow(page) {
|
|
const result = await this._channel.browserWindow({ page: page._channel });
|
|
return import_jsHandle.JSHandle.from(result.handle);
|
|
}
|
|
async evaluate(pageFunction, arg) {
|
|
const result = await this._channel.evaluateExpression({ expression: String(pageFunction), isFunction: typeof pageFunction === "function", arg: (0, import_jsHandle.serializeArgument)(arg) });
|
|
return (0, import_jsHandle.parseResult)(result.value);
|
|
}
|
|
async evaluateHandle(pageFunction, arg) {
|
|
const result = await this._channel.evaluateExpressionHandle({ expression: String(pageFunction), isFunction: typeof pageFunction === "function", arg: (0, import_jsHandle.serializeArgument)(arg) });
|
|
return import_jsHandle.JSHandle.from(result.handle);
|
|
}
|
|
}
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
Electron,
|
|
ElectronApplication
|
|
});
|