@@ -15,6 +15,7 @@ import {
1515const OFFSET_DI_PIXELS = 16 ;
1616
1717export class AndroidController {
18+ private static DEFAULT_BOOT_TIME = 180000 ;
1819 private static ANDROID_HOME = process . env [ "ANDROID_HOME" ] || "" ;
1920 private static EMULATOR = resolve ( AndroidController . ANDROID_HOME , "emulator" , "emulator" ) ;
2021 private static ADB = resolve ( AndroidController . ANDROID_HOME , "platform-tools" , "adb" ) ;
@@ -52,7 +53,7 @@ export class AndroidController {
5253 }
5354
5455 emulator = await AndroidController . startEmulatorProcess ( emulator , options ) ;
55- const result = await AndroidController . waitUntilEmulatorBoot ( emulator . token , parseInt ( process . env . BOOT_ANDROID_EMULATOR_MAX_TIME ) || 180000 ) === true ? Status . BOOTED : Status . SHUTDOWN ;
56+ const result = await AndroidController . waitUntilEmulatorBoot ( emulator . token , parseInt ( process . env . BOOT_ANDROID_EMULATOR_MAX_TIME ) || AndroidController . DEFAULT_BOOT_TIME ) === true ? Status . BOOTED : Status . SHUTDOWN ;
5657
5758 if ( result === Status . BOOTED ) {
5859 emulator . status = Status . BOOTED ;
@@ -69,6 +70,11 @@ export class AndroidController {
6970 return emulator ;
7071 }
7172
73+ public static reboot ( emulator : IDevice ) {
74+ AndroidController . executeAdbCommand ( emulator , 'reboot bootloader' ) ;
75+ AndroidController . waitUntilEmulatorBoot ( emulator , AndroidController . DEFAULT_BOOT_TIME ) ;
76+ }
77+
7278 public static unlock ( token , password = undefined ) {
7379 let result = "" ;
7480 if ( password ) {
@@ -215,7 +221,7 @@ export class AndroidController {
215221 }
216222
217223 public static async recordVideo ( device : IDevice , dir , fileName , callback : ( ) => Promise < any > ) {
218- const { pathToVideo, devicePath , videoRecoringProcess} = AndroidController . startRecordingVideo ( device , dir , fileName ) ;
224+ const { pathToVideo, devicePath, videoRecoringProcess } = AndroidController . startRecordingVideo ( device , dir , fileName ) ;
219225 new Promise ( async ( res , reject ) => {
220226 callback ( ) . then ( ( result ) => {
221227 videoRecoringProcess . kill ( "SIGINT" ) ;
@@ -366,20 +372,20 @@ export class AndroidController {
366372 return emulator ;
367373 }
368374
369- private static waitUntilEmulatorBoot ( deviceId , timeOut : number ) : boolean {
375+ private static waitUntilEmulatorBoot ( deviceId , timeOutInMiliseconds : number ) : boolean {
370376 const startTime = new Date ( ) . getTime ( ) ;
371377 let currentTime = new Date ( ) . getTime ( ) ;
372378 let found = false ;
373379
374380 console . log ( "Booting emulator ..." ) ;
375381
376- while ( ( currentTime - startTime ) < timeOut * 1000 && ! found ) {
382+ while ( ( currentTime - startTime ) < timeOutInMiliseconds && ! found ) {
377383 currentTime = new Date ( ) . getTime ( ) ;
378384 found = AndroidController . checkIfEmulatorIsRunning ( DeviceType . EMULATOR + "-" + deviceId ) ;
379385 }
380386
381387 if ( ! found ) {
382- let error = deviceId + " failed to boot in " + timeOut + " seconds." ;
388+ let error = deviceId + " failed to boot in " + timeOutInMiliseconds + " seconds." ;
383389 console . log ( error , true ) ;
384390 } else {
385391 console . log ( "Emilator is booted!" ) ;
@@ -549,28 +555,6 @@ export class AndroidController {
549555 return AndroidController . _emulatorIds . get ( platformVersion . toString ( ) ) ;
550556 }
551557
552- // private static loadEmulatorsIds() {
553- // AndroidController._emulatorIds.set("4.2", "5554");
554- // AndroidController._emulatorIds.set("4.3", "5556");
555- // AndroidController._emulatorIds.set("4.4", "5558");
556- // AndroidController._emulatorIds.set("5.0", "5560");
557- // AndroidController._emulatorIds.set("5.1", "5562");
558- // AndroidController._emulatorIds.set("6", "5564");
559- // AndroidController._emulatorIds.set("6.", "5564");
560- // AndroidController._emulatorIds.set("6.0", "5564");
561- // AndroidController._emulatorIds.set("7", "5566");
562- // AndroidController._emulatorIds.set("7.", "5566");
563- // AndroidController._emulatorIds.set("7.0", "5566");
564- // AndroidController._emulatorIds.set("7.1", "5568");
565- // AndroidController._emulatorIds.set("7.1.1", "5570");
566- // AndroidController._emulatorIds.set("8", "5572");
567- // AndroidController._emulatorIds.set("8.", "5572");
568- // AndroidController._emulatorIds.set("8.0", "5572");
569- // AndroidController._emulatorIds.set("26", "5572");
570- // AndroidController._emulatorIds.set("27", "5574");
571- // AndroidController._emulatorIds.set("8.1", "5574");
572- // }
573-
574558 private static sendKeyCommand = ( token , key ) => {
575559 return `${ AndroidController . ADB } -s ${ token } shell input keyevent ${ key } ` ;
576560 }
0 commit comments