@@ -34,6 +34,7 @@ export type Interactor = {
3434 openDevice ( ) : Promise < void > ;
3535 close ( app : string ) : Promise < void > ;
3636 tap ( x : number , y : number ) : Promise < void > ;
37+ doubleTap ( x : number , y : number ) : Promise < void > ;
3738 swipe ( x1 : number , y1 : number , x2 : number , y2 : number , durationMs ?: number ) : Promise < void > ;
3839 longPress ( x : number , y : number , durationMs ?: number ) : Promise < void > ;
3940 focus ( x : number , y : number ) : Promise < void > ;
@@ -52,6 +53,10 @@ export function getInteractor(device: DeviceInfo, runnerContext: RunnerContext):
5253 openDevice : ( ) => openAndroidDevice ( device ) ,
5354 close : ( app ) => closeAndroidApp ( device , app ) ,
5455 tap : ( x , y ) => pressAndroid ( device , x , y ) ,
56+ doubleTap : async ( x , y ) => {
57+ await pressAndroid ( device , x , y ) ;
58+ await pressAndroid ( device , x , y ) ;
59+ } ,
5560 swipe : ( x1 , y1 , x2 , y2 , durationMs ) => swipeAndroid ( device , x1 , y1 , x2 , y2 , durationMs ) ,
5661 longPress : ( x , y , durationMs ) => longPressAndroid ( device , x , y , durationMs ) ,
5762 focus : ( x , y ) => focusAndroid ( device , x , y ) ,
@@ -74,7 +79,10 @@ export function getInteractor(device: DeviceInfo, runnerContext: RunnerContext):
7479 }
7580}
7681
77- type IoRunnerOverrides = Pick < Interactor , 'tap' | 'swipe' | 'longPress' | 'focus' | 'type' | 'fill' | 'scroll' | 'scrollIntoView' > ;
82+ type IoRunnerOverrides = Pick <
83+ Interactor ,
84+ 'tap' | 'doubleTap' | 'swipe' | 'longPress' | 'focus' | 'type' | 'fill' | 'scroll' | 'scrollIntoView'
85+ > ;
7886
7987function iosRunnerOverrides ( device : DeviceInfo , ctx : RunnerContext ) : IoRunnerOverrides {
8088 const runnerOpts = { verbose : ctx . verbose , logPath : ctx . logPath , traceLogPath : ctx . traceLogPath } ;
@@ -87,6 +95,13 @@ function iosRunnerOverrides(device: DeviceInfo, ctx: RunnerContext): IoRunnerOve
8795 runnerOpts ,
8896 ) ;
8997 } ,
98+ doubleTap : async ( x , y ) => {
99+ await runIosRunnerCommand (
100+ device ,
101+ { command : 'tapSeries' , x, y, count : 1 , intervalMs : 0 , doubleTap : true , appBundleId : ctx . appBundleId } ,
102+ runnerOpts ,
103+ ) ;
104+ } ,
90105 swipe : async ( x1 , y1 , x2 , y2 , durationMs ) => {
91106 await runIosRunnerCommand (
92107 device ,
0 commit comments