appium_driver 0.8.0 copy "appium_driver: ^0.8.0" to clipboard
appium_driver: ^0.8.0 copied to clipboard

An Appium binding for Dart. Support WebDriver W3C spec inheriting webdriver.dart.

appium_driver #

Dart CI

An appium binding in Dart

Requires Dart 3.4 or later (before Dart 4).

About #

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.

Example #

Take a look at functional tests

Lint #

$ dart analyze

format #

$ dart format .

pana (analyze on pub.flutter-io.cn) #

$ dart run pana .

Run tests #

Get dependencies #

$ dart pub get

Functional #

$ dart test test/functional

Unit #

$ dart test test/unit

release #

  1. Bump the version in pubspec.yaml.
  2. Move the changes under Unreleased in CHANGELOG.md to a section with the release version and date.
  3. Verify CI passes on the minimum supported Dart SDK and stable.
  4. Run dart pub publish --dry-run and review files and warnings.
  5. Commit the release changes.
  6. Run dart pub publish.
  7. Tag the release commit and push the tag.

Supported Commands #

WebDriver commands #

Please refer webdriver.dart APIshttps://pub.flutter-io.cn/documentation/webdriver/latest

Appium 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']
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/element/:id/value'] Deprecated.
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/element/:id/replace_value'] Deprecated.
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/app/launch'] Deprecated
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/app/close'] Deprecated
  • [x] [HttpMethod.httpPost, 'session/:session_id/appium/app/reset'] Deprecated
  • ✅ [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

Most of the commands below are available via extension commands, starting with mobile: in https://github.com/appium/appium-uiautomator2-driver, for example. Thus, they would not be implemented.

  • [ ] [HttpMethod.httpPost, 'session/:session_id/touch/perform'] # W3C actions should be an alternative
  • [ ] [HttpMethod.httpPost, 'session/:session_id/touch/multi/perform'] # W3C actions should be an alternative
  • [ ] [HttpMethod.httpPost, 'session/:session_id/appium/device/keyevent'] # Only for Selendroid
  • ❌ [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']
  • [ ] [HtMethod.httpGet, 'session/:session_id/timeouts'] <= already has
  • [ ] [HttpMethod.httpPost, 'session/:session_id/keys'] <= will be deprecated in W3C. Use W3C actions instead.
24
likes
0
points
4.86k
downloads

Publisher

unverified uploader

Weekly Downloads

An Appium binding for Dart. Support WebDriver W3C spec inheriting webdriver.dart.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

webdriver

More

Packages that depend on appium_driver