UNPKG

detox

Version:

E2E tests and automation for mobile

59 lines (50 loc) 1.64 kB
/** * @typedef {import('../../AllocationDriverBase').AllocationDriverBase} AllocationDriverBase * @typedef {import('../../../../common/drivers/android/cookies').AndroidDeviceCookie} AndroidDeviceCookie */ /** * @implements {AllocationDriverBase} */ class AttachedAndroidAllocDriver { /** * @param {object} options * @param {import('../../../../common/drivers/android/exec/ADB')} options.adb * @param {import('../../../DeviceRegistry')} options.deviceRegistry * @param {import('../FreeDeviceFinder')} options.freeDeviceFinder */ constructor({ adb, deviceRegistry, freeDeviceFinder }) { this._adb = adb; this._deviceRegistry = deviceRegistry; this._freeDeviceFinder = freeDeviceFinder; } async init() { await this._deviceRegistry.unregisterZombieDevices(); } /** * @param deviceConfig * @return {Promise<AndroidDeviceCookie>} */ async allocate(deviceConfig) { const adbNamePattern = deviceConfig.device.adbName; const adbName = await this._deviceRegistry.registerDevice(() => this._freeDeviceFinder.findFreeDevice(adbNamePattern)); return { id: adbName, adbName }; } /** * @param {AndroidDeviceCookie} deviceCookie * @returns {Promise<void>} */ async postAllocate(deviceCookie) { const { adbName } = deviceCookie; await this._adb.apiLevel(adbName); await this._adb.unlockScreen(adbName); } /** * @param cookie { AndroidDeviceCookie } * @return {Promise<void>} */ async free(cookie) { const { adbName } = cookie; await this._deviceRegistry.unregisterDevice(adbName); } } module.exports = AttachedAndroidAllocDriver;