Workshop with Flutter app - up1/course-appium-robotframework GitHub Wiki

Workshop with Flutter app

Install Flutter driver for Appium

$appium driver install --source=npm appium-flutter-driver

# List all drivers
$appium driver list

Install local

$git clone https://github.com/appium/appium-flutter-driver.git
$cd appium-flutter-driver/driver
$npm install
$appium driver install --source local .

Config for Appium Inspector for Flutter Driver

{
  "platformName": "Android",
  "appium:app": "path/to/flutter.apk",
  "appium:deviceName": "emulator-5554",
  "appium:automationName": "Flutter"
}

Edit Flutter App

Pubspec.yaml

dev_dependencies:
  flutter_driver:
    sdk: flutter

Main.dart to enable Flutter driver

import 'package:flutter_driver/driver_extension.dart';

void main() {
  
  enableFlutterDriverExtension();

  runApp(DevicePreview(
    enabled: !kReleaseMode,
    builder: (context) => const MyApp(),
  ));
}

Run flutter app

$flutter doctor
$flutter run

Start Dev Tools to inspect UI (Appium Inspector not support !!)

$dart devtools

Add key to element for testing

login_screen.dart

const Text(
  'Log In',
  key: Key('login_text'),
  style: TextStyle(
    color: Color(0xFF755DC1),
    fontSize: 27,
    fontFamily: 'Poppins',
    fontWeight: FontWeight.w500,
  ),
)

Write test case with Robot framework + Appium Flutter Library

Install Flutter Applium Library

$pip install -U robotframework-appiumflutterlibrary

Demo.robot

*** Settings ***
Library           AppiumFlutterLibrary
Suite Teardown    Close Application

*** Variables ***
${REMOTE_URL}   http://127.0.0.1:4723
${platformName}    Android
${app}    ${CURDIR}/../../demo-app/flutter.apk
${deviceName}    id/name
${automationName}    flutter

*** Test Cases ***
Test case name
        Open Application    ${REMOTE_URL}   
        ...    platformName=${platformName}  
        ...  app=${app}  deviceName=${deviceName}  
        ...  automationName=${automationName} 
        
        Wait For Element   key=email_key
        Click Element  key=email_key
        Input Text  key=email_key   [email protected]
        Input Text  key=password_key   1234

        Sleep    5s  # Don't use

Start Appium server

$appium

Run test

$robot demo.robot