@@ -8,12 +8,10 @@ import { ANDROID_EMULATOR } from '../../../__tests__/test-utils/index.ts';
88import {
99 ensureAndroidMultiTouchHelper ,
1010 parseAndroidMultiTouchHelperOutput ,
11- pinchAndroid ,
1211 resetAndroidMultiTouchHelperInstallCache ,
1312 rotateGestureAndroid ,
1413 runAndroidMultiTouchHelperGesture ,
1514 swipeGestureAndroid ,
16- transformGestureAndroid ,
1715} from '../multitouch-helper.ts' ;
1816import {
1917 withAndroidAdbProvider ,
@@ -109,9 +107,7 @@ test('runAndroidMultiTouchHelperGesture encodes one-finger swipe payloads', asyn
109107 capturedPayload = JSON . parse ( Buffer . from ( args [ 6 ] ! , 'base64' ) . toString ( 'utf8' ) ) ;
110108 return {
111109 exitCode : 0 ,
112- stdout : [ resultRecord ( { ok : 'true' , kind : 'swipe' } ) , 'INSTRUMENTATION_CODE: 0' ] . join (
113- '\n' ,
114- ) ,
110+ stdout : [ resultRecord ( { ok : 'true' , kind : 'swipe' } ) , 'INSTRUMENTATION_CODE: 0' ] . join ( '\n' ) ,
115111 stderr : '' ,
116112 } ;
117113 } ,
@@ -166,66 +162,6 @@ test('runAndroidMultiTouchHelperGesture preserves helper failure messages', asyn
166162 ) ;
167163} ) ;
168164
169- test ( 'swipeGestureAndroid and multi-touch gestures prefer provider-native touch injection' , async ( ) => {
170- const calls : unknown [ ] = [ ] ;
171- await withAndroidAdbProvider (
172- {
173- exec : async ( ) => {
174- throw new Error ( 'adb should not run when native touch is available' ) ;
175- } ,
176- touch : async ( request ) => {
177- calls . push ( request ) ;
178- return { backendDetail : 'native' } ;
179- } ,
180- } ,
181- { serial : ANDROID_EMULATOR . id } ,
182- async ( ) => {
183- const swipe = await swipeGestureAndroid ( ANDROID_EMULATOR , {
184- x1 : 340 ,
185- y1 : 400 ,
186- x2 : 60 ,
187- y2 : 400 ,
188- durationMs : 300 ,
189- } ) ;
190- const pinch = await pinchAndroid ( ANDROID_EMULATOR , { scale : 2 , x : 100 , y : 200 } ) ;
191- const rotate = await rotateGestureAndroid ( ANDROID_EMULATOR , {
192- degrees : - 215 ,
193- x : 100 ,
194- y : 200 ,
195- } ) ;
196- const transform = await transformGestureAndroid ( ANDROID_EMULATOR , {
197- x : 100 ,
198- y : 200 ,
199- dx : 30 ,
200- dy : - 20 ,
201- scale : 1.5 ,
202- degrees : 35 ,
203- } ) ;
204-
205- assert . equal ( swipe ?. backend , 'provider-native-touch' ) ;
206- assert . equal ( pinch . backend , 'provider-native-touch' ) ;
207- assert . equal ( rotate . backend , 'provider-native-touch' ) ;
208- assert . equal ( transform . backend , 'provider-native-touch' ) ;
209- } ,
210- ) ;
211-
212- assert . deepEqual ( calls , [
213- { kind : 'swipe' , x1 : 340 , y1 : 400 , x2 : 60 , y2 : 400 , durationMs : 300 } ,
214- { kind : 'pinch' , x : 100 , y : 200 , scale : 2 , durationMs : undefined } ,
215- { kind : 'rotate' , x : 100 , y : 200 , degrees : - 215 , durationMs : undefined } ,
216- {
217- kind : 'transform' ,
218- x : 100 ,
219- y : 200 ,
220- dx : 30 ,
221- dy : - 20 ,
222- scale : 1.5 ,
223- degrees : 35 ,
224- durationMs : undefined ,
225- } ,
226- ] ) ;
227- } ) ;
228-
229165test ( 'swipeGestureAndroid falls back to adb input swipe when helper path is unavailable' , async ( ) => {
230166 const adbCalls : string [ ] [ ] = [ ] ;
231167 const result = await withAndroidAdbProvider (
@@ -274,6 +210,37 @@ test('swipeGestureAndroid falls back to adb input swipe when helper path is unav
274210 assert . ok ( adbCalls . some ( ( args ) => args . join ( ' ' ) === 'shell input swipe 340 400 60 400 300' ) ) ;
275211} ) ;
276212
213+ test ( 'swipeGestureAndroid propagates provider-native failures without adb fallback' , async ( ) => {
214+ const adbCalls : string [ ] [ ] = [ ] ;
215+ await withAndroidAdbProvider (
216+ {
217+ exec : async ( args ) => {
218+ adbCalls . push ( args ) ;
219+ return { exitCode : 0 , stdout : '' , stderr : '' } ;
220+ } ,
221+ touch : async ( ) => {
222+ throw new Error ( 'native touch failed' ) ;
223+ } ,
224+ } ,
225+ { serial : ANDROID_EMULATOR . id } ,
226+ async ( ) => {
227+ await assert . rejects (
228+ ( ) =>
229+ swipeGestureAndroid ( ANDROID_EMULATOR , {
230+ x1 : 340 ,
231+ y1 : 400 ,
232+ x2 : 60 ,
233+ y2 : 400 ,
234+ durationMs : 300 ,
235+ } ) ,
236+ / n a t i v e t o u c h f a i l e d / ,
237+ ) ;
238+ } ,
239+ ) ;
240+
241+ assert . deepEqual ( adbCalls , [ ] ) ;
242+ } ) ;
243+
277244test ( 'rotateGestureAndroid rejects zero velocity before provider dispatch' , async ( ) => {
278245 await withAndroidAdbProvider (
279246 {
0 commit comments