A simple Amazon-like Flutter app built for automation testing. It includes vertical scrolling, horizontal scrolling, form submission, date picker, and dropdown — all with unique Key identifiers for easy test targeting.
- Flutter SDK (3.x or later)
- A connected device or emulator/simulator
Verify your setup:
flutter doctor# Get dependencies
flutter pub get
# Run on connected device / emulator
flutter run
# Run on a specific platform
flutter run -d chrome # Web
flutter run -d macos # macOS desktop
flutter run -d ios # iOS simulator
flutter run -d android # Android emulator| Element | Key Pattern | Type |
|---|---|---|
| Search bar | search_field |
TextField |
| Promo banner | promo_banner |
Container |
| Category chips (0-7) | category_0 ... category_7 |
Horizontal scroll |
| Deal cards (0-9) | deal_card_0 ... deal_card_9 |
Horizontal scroll |
| Product tiles (0-14) | product_tile_0 ... product_tile_14 |
Vertical list |
| Add to cart buttons | add_to_cart_0 ... add_to_cart_14 |
IconButton |
| Cart icon | cart_button |
IconButton |
| Bottom navigation | nav_home, nav_deals, nav_orders, nav_profile |
BottomNav |
Navigate here by tapping Profile in the bottom nav.
| Element | Key | Type |
|---|---|---|
| Full Name | name_field |
TextFormField |
email_field |
TextFormField | |
| Phone | phone_field |
TextFormField |
| Date of Birth | dob_picker |
DatePicker (tap) |
| Address | address_field |
TextFormField |
| City | city_field |
TextFormField |
| Zip Code | zip_field |
TextFormField |
| Country | country_dropdown |
DropdownButtonFormField |
| Newsletter | newsletter_checkbox |
CheckboxListTile |
| Submit | submit_button |
ElevatedButton |
After submission, a success screen shows all entered values with keys like success_name, success_email, etc.
Once running, you will see:
- Home - Orange-themed Amazon-like page with a search bar, promo banner, horizontally scrollable categories and deals, and a vertical product list with add-to-cart buttons.
- Form - A shipping info form with text fields, date picker, country dropdown, newsletter checkbox, and a submit button with validation.
All interactive elements have unique Key(...) values, making them easy to locate with:
- Appium -
find_element(:accessibility_id, 'search_field') - Flutter Driver -
find.byValueKey('search_field') - Integration Tests -
find.byKey(const Key('search_field'))