From e856e8260664a3cbd8437316ed3ee8c901d4150c Mon Sep 17 00:00:00 2001 From: Sai Krishna V Date: Wed, 17 Sep 2025 11:10:13 +0530 Subject: [PATCH 1/2] Added support for descendant within scroll Co-authored-by: SrinivasanTarget --- .../wdio-flutter-by-service/src/index.ts | 3 ++- .../wdio-flutter-by-service/src/methods.ts | 19 +++++++++++++++++-- .../wdio-flutter-by-service/src/utils.ts | 17 +++++++++++++---- test/specs/test.e2e.js | 2 +- 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/flutter-finder/wdio-flutter-by-service/src/index.ts b/flutter-finder/wdio-flutter-by-service/src/index.ts index ce7ffe3..5a5ee64 100644 --- a/flutter-finder/wdio-flutter-by-service/src/index.ts +++ b/flutter-finder/wdio-flutter-by-service/src/index.ts @@ -141,7 +141,8 @@ declare global { // @ts-ignore type Locator = { using: string; - value: string; + value?: string; + selector?: any; }; // @ts-ignore diff --git a/flutter-finder/wdio-flutter-by-service/src/methods.ts b/flutter-finder/wdio-flutter-by-service/src/methods.ts index afdad0e..c5cc8eb 100644 --- a/flutter-finder/wdio-flutter-by-service/src/methods.ts +++ b/flutter-finder/wdio-flutter-by-service/src/methods.ts @@ -52,7 +52,7 @@ export async function flutterLongPress( export async function flutterScrollTillVisible( this: WebdriverIO.Browser, options: { - finder: WebdriverIO.Element; + finder: WebdriverIO.Element | Flutter.Locator; scrollView?: WebdriverIO.Element; scrollDirection?: 'up' | 'right' | 'down' | 'left'; delta?: number; @@ -61,8 +61,23 @@ export async function flutterScrollTillVisible( dragDuration?: number; }, ): Promise { + // Convert the finder to the proper format for the server + let finderForServer; + if (options.finder && typeof options.finder === 'object' && 'using' in options.finder) { + // It's a locator object (like from flutterByDescendant) + finderForServer = options.finder; + } else { + // It's an element, extract the locator + finderForServer = options.finder; + } + + const serverOptions = { + ...options, + finder: finderForServer, + }; + const response = await browser.executeScript('flutter: scrollTillVisible', [ - options, + serverOptions, ]); return await w3cElementToWdioElement(this, response); } diff --git a/flutter-finder/wdio-flutter-by-service/src/utils.ts b/flutter-finder/wdio-flutter-by-service/src/utils.ts index 1b09f41..b0eb163 100644 --- a/flutter-finder/wdio-flutter-by-service/src/utils.ts +++ b/flutter-finder/wdio-flutter-by-service/src/utils.ts @@ -121,10 +121,19 @@ export function registerLocators(locatorConfig: Array) { registerCustomMethod( `${methodName}`, (value: any) => { - return { - using: config.stategy, - value: typeof value !== 'string' ? JSON.stringify(value) : value, - }; + // For complex finders (descendant, ancestor), use 'selector' property + // For simple finders, use 'value' property + if (config.name === 'flutterByDescendant' || config.name === 'flutterByAncestor') { + return { + using: config.stategy, + selector: typeof value !== 'string' ? value : JSON.parse(value), + }; + } else { + return { + using: config.stategy, + value: typeof value !== 'string' ? JSON.stringify(value) : value, + }; + } }, { attachToBrowser: true, diff --git a/test/specs/test.e2e.js b/test/specs/test.e2e.js index 02002c3..aa95e5f 100644 --- a/test/specs/test.e2e.js +++ b/test/specs/test.e2e.js @@ -127,7 +127,7 @@ describe('My Login application', () => { expect(await childElement.getText()).toEqual('Child 2'); }); - it.skip('Scroll until visible with Descendant', async () => { + it('Scroll until visible with Descendant', async () => { await performLogin(); await openScreen('Nested Scroll'); const childElement = await browser.flutterScrollTillVisible({ From d04dfc548f858890581eb5a4e9f0bea845a8f78b Mon Sep 17 00:00:00 2001 From: Sai Krishna V Date: Wed, 17 Sep 2025 12:20:20 +0530 Subject: [PATCH 2/2] Updated flutter-finder version Co-authored-by: SrinivasanTarget --- .../wdio-flutter-by-service/build/tsconfig.tsbuildinfo | 1 - flutter-finder/wdio-flutter-by-service/package-lock.json | 4 ++-- flutter-finder/wdio-flutter-by-service/package.json | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 flutter-finder/wdio-flutter-by-service/build/tsconfig.tsbuildinfo diff --git a/flutter-finder/wdio-flutter-by-service/build/tsconfig.tsbuildinfo b/flutter-finder/wdio-flutter-by-service/build/tsconfig.tsbuildinfo deleted file mode 100644 index 1fcfd77..0000000 --- a/flutter-finder/wdio-flutter-by-service/build/tsconfig.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"root":["../src/demo.ts","../src/index.ts","../src/methods.ts","../src/service.ts","../src/types.ts","../src/utils.ts"],"version":"5.9.2"} \ No newline at end of file diff --git a/flutter-finder/wdio-flutter-by-service/package-lock.json b/flutter-finder/wdio-flutter-by-service/package-lock.json index 9229e2b..d11afa8 100644 --- a/flutter-finder/wdio-flutter-by-service/package-lock.json +++ b/flutter-finder/wdio-flutter-by-service/package-lock.json @@ -1,12 +1,12 @@ { "name": "wdio-flutter-by-service", - "version": "1.2.0", + "version": "1.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "wdio-flutter-by-service", - "version": "1.2.0", + "version": "1.3.0", "license": "MIT License", "dependencies": { "@wdio/globals": "9.17.0", diff --git a/flutter-finder/wdio-flutter-by-service/package.json b/flutter-finder/wdio-flutter-by-service/package.json index dc0b922..6454bc2 100644 --- a/flutter-finder/wdio-flutter-by-service/package.json +++ b/flutter-finder/wdio-flutter-by-service/package.json @@ -1,6 +1,6 @@ { "name": "wdio-flutter-by-service", - "version": "1.2.0", + "version": "1.3.0", "description": "", "scripts": { "build": "rimraf build && tsc -b"