Giter Site home page Giter Site logo

shiv043 / appium_dart Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kazucocoa/appium_dart

0.0 0.0 0.0 28.73 MB

Appium client in Dart based on webdriver.dart

Home Page: https://pub.dev/packages/appium_driver

License: Apache License 2.0

Dart 100.00%

appium_dart's Introduction

appium_driver

Dart CI

An appium binding in Dart

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

$ dartanalyzer --options analysis_options.yaml .

format

$ dartfmt -w --fix .

pana (analyze on pub.dev)

$ pub run pana --source path .

Run tests

Get dependencies

$ pub get

Functional

$ pub run test test/functional

Unit

$ pub run test test/unit

release

  • Bump the version in pubspec.yml
  • Run pub publish

Supported Commands

WebDriver commands

Please refer webdriver.dart APIshttps://pub.dev/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']
  • [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

  • [ ] [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.

appium_dart's People

Contributors

kazucocoa avatar shiv043 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.