@@ -429,6 +429,60 @@ describe('Android platform instance', () => {
429429 fs . rmSync ( appPath , { force : true } ) ;
430430 } ) ;
431431
432+ it ( 'reinstalls the app from HARNESS_APP_PATH when already installed' , async ( ) => {
433+ const appPath = path . join ( os . tmpdir ( ) , 'HarnessPlayground-installed.apk' ) ;
434+ fs . writeFileSync ( appPath , 'apk' ) ;
435+ vi . stubEnv ( 'HARNESS_APP_PATH' , appPath ) ;
436+ vi . spyOn (
437+ await import ( '../environment.js' ) ,
438+ 'ensureAndroidEmulatorEnvironment' ,
439+ ) . mockResolvedValue ( '/tmp/android-sdk' ) ;
440+ vi . spyOn ( adb , 'getDeviceIds' ) . mockResolvedValue ( [ 'emulator-5554' ] ) ;
441+ vi . spyOn ( adb , 'getEmulatorName' ) . mockResolvedValue ( 'Pixel_8_API_35' ) ;
442+ vi . spyOn ( adb , 'waitForBoot' ) . mockResolvedValue ( 'emulator-5554' ) ;
443+ vi . spyOn ( adb , 'isAppInstalled' ) . mockResolvedValue ( true ) ;
444+ const uninstallApp = vi
445+ . spyOn ( adb , 'uninstallApp' )
446+ . mockResolvedValue ( undefined ) ;
447+ const installApp = vi . spyOn ( adb , 'installApp' ) . mockResolvedValue ( undefined ) ;
448+ vi . spyOn ( adb , 'reversePort' ) . mockResolvedValue ( undefined ) ;
449+ vi . spyOn ( adb , 'setHideErrorDialogs' ) . mockResolvedValue ( undefined ) ;
450+ vi . spyOn ( adb , 'getAppUid' ) . mockResolvedValue ( 10234 ) ;
451+ vi . spyOn ( sharedPrefs , 'applyHarnessDebugHttpHost' ) . mockResolvedValue (
452+ undefined ,
453+ ) ;
454+
455+ await expect (
456+ getAndroidEmulatorPlatformInstance (
457+ {
458+ name : 'android' ,
459+ device : {
460+ type : 'emulator' ,
461+ name : 'Pixel_8_API_35' ,
462+ avd : {
463+ apiLevel : 35 ,
464+ profile : 'pixel_8' ,
465+ diskSize : '1G' ,
466+ heapSize : '1G' ,
467+ } ,
468+ } ,
469+ bundleId : 'com.harnessplayground' ,
470+ activityName : '.MainActivity' ,
471+ } ,
472+ harnessConfig ,
473+ init ,
474+ ) ,
475+ ) . resolves . toBeDefined ( ) ;
476+
477+ expect ( uninstallApp ) . toHaveBeenCalledWith (
478+ 'emulator-5554' ,
479+ 'com.harnessplayground' ,
480+ ) ;
481+ expect ( installApp ) . toHaveBeenCalledWith ( 'emulator-5554' , appPath ) ;
482+
483+ fs . rmSync ( appPath , { force : true } ) ;
484+ } ) ;
485+
432486 it ( 'throws a HarnessAppPathError when HARNESS_APP_PATH is missing' , async ( ) => {
433487 vi . spyOn ( adb , 'getDeviceIds' ) . mockResolvedValue ( [ 'emulator-5554' ] ) ;
434488 vi . spyOn ( adb , 'getEmulatorName' ) . mockResolvedValue ( 'Pixel_8_API_35' ) ;
0 commit comments