From b7bbcc2d3b108e3b69b2dc612dc7463e19ce95af Mon Sep 17 00:00:00 2001 From: sudharsan-selvaraj Date: Thu, 9 Oct 2025 13:35:05 +0530 Subject: [PATCH 1/2] fix: safe parse element locators when used in flutter commands --- src/commands/element.ts | 10 +++++++--- src/driver.ts | 18 ++++++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/commands/element.ts b/src/commands/element.ts index 8bf8f6f..cf5560e 100644 --- a/src/commands/element.ts +++ b/src/commands/element.ts @@ -11,12 +11,15 @@ import type { AppiumFlutterDriver } from '../driver'; export const ELEMENT_CACHE = new Map(); -function constructFindElementPayload( +export function constructFindElementPayload( strategy: string, selector: string, - context: string, - proxyDriver: XCUITestDriver | AndroidUiautomator2Driver | Mac2Driver, + context?: any, + proxyDriver?: XCUITestDriver | AndroidUiautomator2Driver | Mac2Driver, ) { + if (!strategy || !selector) { + return undefined; + } const isFlutterLocator = strategy.startsWith('-flutter') || FLUTTER_LOCATORS.includes(strategy); @@ -31,6 +34,7 @@ function constructFindElementPayload( // If user is looking for Native IOS/Mac locator if ( !isFlutterLocator && + proxyDriver && (proxyDriver instanceof XCUITestDriver || proxyDriver instanceof Mac2Driver) ) { diff --git a/src/driver.ts b/src/driver.ts index 5647215..9f62223 100644 --- a/src/driver.ts +++ b/src/driver.ts @@ -24,6 +24,7 @@ import { clear, ELEMENT_CACHE, getElementRect, + constructFindElementPayload, } from './commands/element'; import { attachAppLaunchArguments, @@ -362,7 +363,10 @@ export class AppiumFlutterDriver extends BaseDriver { 'POST', { element, - locator, + locator: constructFindElementPayload( + locator?.using, + locator?.value, + ), timeout, }, ); @@ -378,7 +382,10 @@ export class AppiumFlutterDriver extends BaseDriver { 'POST', { element, - locator, + locator: constructFindElementPayload( + locator?.using, + locator?.value, + ), timeout, }, ); @@ -391,7 +398,10 @@ export class AppiumFlutterDriver extends BaseDriver { { origin, offset, - locator, + locator: constructFindElementPayload( + locator?.using, + locator?.value, + ), }, ); } @@ -420,7 +430,7 @@ export class AppiumFlutterDriver extends BaseDriver { `/session/:sessionId/appium/gestures/scroll_till_visible`, 'POST', { - finder, + finder: constructFindElementPayload(finder.using, finder.value), scrollView, delta, maxScrolls, From e80ab91d46819286c8150f2f91d17445aac7db27 Mon Sep 17 00:00:00 2001 From: sudharsan-selvaraj Date: Thu, 9 Oct 2025 15:35:05 +0530 Subject: [PATCH 2/2] fix scroll till visible --- src/driver.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/driver.ts b/src/driver.ts index 9f62223..5197d7e 100644 --- a/src/driver.ts +++ b/src/driver.ts @@ -430,7 +430,10 @@ export class AppiumFlutterDriver extends BaseDriver { `/session/:sessionId/appium/gestures/scroll_till_visible`, 'POST', { - finder: constructFindElementPayload(finder.using, finder.value), + finder: constructFindElementPayload( + finder.using || finder.strategy, + finder.value || finder.selector, + ), scrollView, delta, maxScrolls,