Skip to content

Flutter Driver Automation Fails After Flutter Version Upgrade - Element Taps Not Working #826

@muhammad-anas-sqa

Description

@muhammad-anas-sqa

elementClick no-ops on Flutter 3.32.4 for autocomplete list item (autocomplete_option_0) — returns {} but UI doesn’t change

Environment

  • Flutter: 3.32.4 (stable)
    Framework: 6fba2447e9 (2025-06-12 19:03:56 -0700)
    Engine: 8cd19e509d (2025-06-12 16:30:12 -0700)
    Dart: 3.8.1 • DevTools: 2.45.1
  • Appium: 2.x (started via @wdio/appium-service)
  • Drivers (from Appium logs):
    • flutter@2.18.1
    • uiautomator2@4.2.6
  • Platform/Device: Android emulator (udid: emulator-5554)
  • Build: Debug APK (app-stage-debug-latest.apk)
  • Runner: WebdriverIO + Cucumber (WDIO 8.x; can share exact versions if needed)

Note: Before upgrading Flutter version, the same tests passed without code changes. After upgrading to 3.32.4, taps via W3C elementClick on certain Flutter widgets stop having any effect. (Working fine in this version Flutter: 3.29.4)


Problem summary

After entering text into the origin field (e.g., “Karachi”), tapping the first autocomplete option (autocomplete_option_0) with driver.elementClick(...) returns {} (success) but the UI does not change. The step then times out.
Other steps (e.g., opening traveler selector, incrementing counts) pass; the failures begin when tapping list items/buttons that appear after typing (notably the autocomplete option).

Image

Downgrading Flutter (pre-3.32.x) makes the suite pass again.


Minimal repro code (actual page object we use)

> **File:** `test/specs/pageobjects/1-searchResults.page.js`

```js
const find = require('appium-flutter-finder');

class SearchResultsPage {
    get originSelector() {
        return find.byValueKey('airport_selector_origin');
    }

    get originField() {
        return find.byValueKey('airport_field_origin');
    }

    get destinationField() {
        return find.byValueKey('airport_field_destination');
    }

    get departureDateField() {
        return find.byValueKey('flight_search_form_departure_date');
    }
    get dateButton() {
        return find.byValueKey('calendar_day_20_9_2025');
    }
    async selectDepartureDate() {
        await driver.elementClick(this.departureDateField);
        await driver.elementClick(this.dateButton);
        await driver.pause(3000);
    }

    get autoCompleteOption() {
        return find.byValueKey('autocomplete_option_0');                       // This is the problem
    }

    get searchButton() {
        return find.byValueKey('flight_search_button');
    }

    get firstFlightCard() {
        return find.byValueKey('search_flight_card_0');
    }

    get firstFareOption() {
        return find.byValueKey('fare_options_0');
    }

    async selectOrigin(city) {
        await driver.elementClick(this.originSelector);
        await browser.pause(3000);

        await driver.elementClick(this.originField);
        await browser.pause(2000);

        await driver.execute('flutter:enterText', city);
        await driver.execute('flutter:waitFor', this.originField);
        await browser.pause(5000);

                                                                                                       
        await driver.elementClick(this.autoCompleteOption);         // PROBLEM: this click returns {} but UI doesn't change; step times out
        await browser.pause(2000);
    }

    async selectDestination(city) {
        await driver.elementClick(this.destinationField);
        await browser.pause(3000);

        await driver.execute('flutter:enterText', city);
        await driver.execute('flutter:waitFor', this.destinationField);
        await browser.pause(5000);

        await driver.elementClick(this.autoCompleteOption);
        await browser.pause(3000);
    }

    async clickSearchButton() {
        await driver.elementClick(this.searchButton);
        await browser.pause(5000);
    }
}

module.exports = new SearchResultsPage();

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions