UNPKG

appium-flutter-driver

Version:
79 lines 3.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.startAndroidSession = startAndroidSession; exports.connectAndroidSession = connectAndroidSession; exports.getObservatoryWsUri = getObservatoryWsUri; const appium_uiautomator2_driver_1 = require("appium-uiautomator2-driver"); const observatory_1 = require("./observatory"); const log_monitor_1 = require("./log-monitor"); async function startAndroidSession(caps, ...args) { this.log.info(`Starting an Android proxy session`); const androiddriver = new appium_uiautomator2_driver_1.AndroidUiautomator2Driver({}); if (!caps.observatoryWsUri) { androiddriver.eventEmitter.once('syslogStarted', (syslog) => { this._logmon = new log_monitor_1.LogMonitor(syslog, async (entry) => { if ((0, observatory_1.extractObservatoryUrl)(entry)) { this.log.debug(`Matched the syslog line '${entry.message}'`); return true; } return false; }); this._logmon.start(); }); } //@ts-ignore Args are ok await androiddriver.createSession(...args); // the session starts without any apps if (caps.app === undefined && caps.appPackage === undefined) { return [androiddriver, null]; } return [androiddriver, await connectAndroidSession.bind(this)(androiddriver, caps)]; } async function connectAndroidSession(androiddriver, caps, clearLog = false) { const observatoryWsUri = await getObservatoryWsUri.bind(this)(androiddriver, caps, clearLog); return await observatory_1.connectSocket.bind(this)(observatoryWsUri, caps); } async function getObservatoryWsUri(proxydriver, caps, clearLog = false) { if (clearLog) { this._logmon?.clearlastMatch(); this._logmon?.stop(); this._logmon?.start(); } let urlObject; if (caps.observatoryWsUri) { urlObject = new URL(caps.observatoryWsUri); urlObject.protocol = `ws`; // defaults to skip the port-forwarding as backward compatibility if (caps.skipPortForward === undefined || caps.skipPortForward) { return urlObject.toJSON(); } } else { if (!this._logmon) { throw new Error(`The mandatory logcat service must be running in order to initialize the Flutter driver. ` + `Have you disabled it in capabilities?`); } let lastMatch = null; try { lastMatch = await this._logmon.waitForLastMatchExist(caps.maxRetryCount, caps.retryBackoffTime); } catch (e) { this.log.error(e); } if (!lastMatch) { throw new Error(`No observatory URL matching to '${observatory_1.OBSERVATORY_URL_PATTERN}' was found in the device log. ` + `Please make sure the application under test is configured properly according to ` + `https://github.com/appium/appium-flutter-driver#usage and that it does not crash on startup.`); } urlObject = (0, observatory_1.extractObservatoryUrl)(lastMatch); } const remotePort = urlObject.port; this.portForwardLocalPort = caps.forwardingPort ?? remotePort; urlObject.port = this.portForwardLocalPort; await proxydriver.adb.forwardPort(this.portForwardLocalPort, remotePort); if (!caps.observatoryWsUri && proxydriver.adb.adbHost) { urlObject.host = proxydriver.adb.adbHost; } return urlObject.toJSON(); } //# sourceMappingURL=android.js.map