An appium binding in Dart
Flutter has flutter_driver which runs UI tests like Espresso/EarlGrey/Appium for Flutter elements. The driver is really awesome, but it can automate only flutter view. It cannot handle outside Flutter.
This client aims to be able to write test cases in Dart for Appium. It may help to write test code with the same programming language as the production code.
Take a look at functional tests
$ dartanalyzer --options analysis_options.yaml .
$ dartfmt -w --fix .
$ pub run pana --source path .
$ pub get
$ pub run test test/functional
$ pub run test test/unit
- Bump the version in
pubspec.yml
- Run
pub publish
Please refer webdriver.dart APIshttps://pub.dev/documentation/webdriver/latest
- Some W3C actions
All W3C webdriver commands are available such as find_element/s, click and send keys. Below Appium specific commands are implementing.
- directConnectXxxx
- batch command
- CDP command:
[HttpMethod.httpPost, 'session/:session_id/goog/cdp/execute']
-
[HttpMethod.httpGet, 'sessions']
-
[HttpMethod.httpGet, 'session/:session_id/contexts']
-
[HttpMethod.httpPost, 'session/:session_id/context']
-
[HttpMethod.httpGet, 'session/:session_id/context']
-
[HttpMethod.httpPost, 'session/:session_id/appium/element/:id/value']
-
[HttpMethod.httpPost, 'session/:session_id/appium/element/:id/replace_value']
-
[HttpMethod.httpPost, 'session/:session_id/appium/app/launch']
-
[HttpMethod.httpPost, 'session/:session_id/appium/app/close']
-
[HttpMethod.httpPost, 'session/:session_id/appium/app/reset']
-
[HttpMethod.httpPost, 'session/:session_id/appium/app/background']
-
[HttpMethod.httpPost, 'session/:session_id/appium/app/strings']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/is_locked']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/unlock']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/lock']
-
[HttpMethod.httpGet, 'session/:session_id/appium/device/system_time']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/install_app']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/remove_app']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/app_installed']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/activate_app']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/terminate_app']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/app_state']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/shake']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/hide_keyboard']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/press_keycode']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/long_press_keycode']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/push_file']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/pull_file']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/pull_folder']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/get_clipboard']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/set_clipboard']
-
[HttpMethod.httpGet, 'session/:session_id/appium/settings']
-
[HttpMethod.httpPost, 'session/:session_id/appium/settings']
-
[HttpMethod.httpGet, 'session/:session_id/appium/device/is_keyboard_shown']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/open_notifications']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/start_activity']
-
[HttpMethod.httpGet, 'session/:session_id/appium/device/current_activity']
-
[HttpMethod.httpGet, 'session/:session_id/appium/device/current_package']
-
[HttpMethod.httpGet, 'session/:session_id/appium/device/system_bars']
-
[HttpMethod.httpGet, 'session/:session_id/appium/device/display_density']
-
[HttpMethod.httpPost, 'session/:session_id/appium/stop_recording_screen']
-
[HttpMethod.httpPost, 'session/:session_id/appium/start_recording_screen']
-
[HttpMethod.httpGet, 'status']
-
[HttpMethod.httpGet, 'session/:session_id/element/:id/displayed']
-
[HttpMethod.httpGet, 'session/:session_id']
-
[HtMethod.httpGet, 'session/:session_id/location']
-
[HttpMethod.httpPost, 'session/:session_id/location']
-
[HttpMethod.httpGet, 'session/:session_id/ime/available_engines']
-
[HttpMethod.httpGet, 'session/:session_id/ime/active_engine']
-
[HttpMethod.httpGet, 'session/:session_id/ime/activated']
-
[HttpMethod.httpPost, 'session/:session_id/ime/deactivate']
-
[HttpMethod.httpPost, 'session/:session_id/ime/activate']
-
[HttpMethod.httpGet, 'session/:session_id/log/types']
-
[HttpMethod.httpPost, 'session/:session_id/log']
-
[HttpMethod.httpGet, 'session/:session_id/appium/events']
-
[HttpMethod.httpPost, 'session/:session_id/appium/log_event']
-
[HttpMethod.httpGet, 'session/:session_id/orientation']
-
[HttpMethod.httpPost, 'session/:session_id/orientation']
- Add finder for https://github.com/truongsinh/appium-flutter-driver
Low priority
[ ]# W3C actions should be an alternative[HttpMethod.httpPost, 'session/:session_id/touch/perform']
[ ]# W3C actions should be an alternative[HttpMethod.httpPost, 'session/:session_id/touch/multi/perform']
[ ]# Only for Selendroid[HttpMethod.httpPost, 'session/:session_id/appium/device/keyevent']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/finger_print']
-
[HttpMethod.httpPost, 'session/:session_id/appium/compare_images']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/toggle_airplane_mode']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/toggle_wifi']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/toggle_data']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/toggle_location_services']
-
[HttpMethod.httpPost, 'session/:session_id/appium/app/end_test_coverage']
-
[HttpMethod.httpPost, 'session/:session_id/appium/performanceData/types']
-
[HttpMethod.httpPost, 'session/:session_id/appium/getPerformanceData']
-
[HttpMethod.httpGet, 'session/:session_id/network_connection']
-
[HttpMethod.httpPost, 'session/:session_id/network_connection']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/send_sms']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/gsm_call']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/gsm_signal']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/gsm_voice']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/network_speed']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/power_capacity']
-
[HttpMethod.httpPost, 'session/:session_id/appium/device/power_ac']
-
[HttpMethod.httpPost, 'session/:session_id/appium/simulator/touch_id']
-
[HttpMethod.httpPost, 'session/:session_id/appium/simulator/toggle_touch_id_enrollment']
[ ]<= already has[HtMethod.httpGet, 'session/:session_id/timeouts']
[ ]<= will be deprecated in W3C. Use W3C actions instead.[HttpMethod.httpPost, 'session/:session_id/keys']