Module: Calabash::Android::Operations

Includes:
EnvironmentHelpers, TextHelpers, TouchHelpers, WaitHelpers
Included in:
Calabash::ABase
Defined in:
lib/calabash-android/operations.rb

Defined Under Namespace

Classes: Device

Constant Summary

Constants included from WaitHelpers

WaitHelpers::DEFAULT_OPTS

Instance Method Summary collapse

Methods included from WaitHelpers

#handle_error_with_options, #screenshot_and_retry, #until_element_does_not_exist, #until_element_exists, #wait_error, #wait_for, #wait_for_activity, #wait_for_element_does_not_exist, #wait_for_element_exists, #wait_for_elements_do_not_exist, #wait_for_elements_exist, #wait_for_text, #wait_for_text_to_disappear, #wait_poll, #when_element_exists

Methods included from TouchHelpers

#double_tap, #drag, #execute_gesture, #find_coordinate, #flick, #flick_down, #flick_left, #flick_right, #flick_up, #long_press, #long_press_when_element_exists, #pan, #pan_down, #pan_left, #pan_right, #pan_up, #pinch, #pinch_in, #pinch_out, #query_result?, #tap, #tap_mark, #tap_when_element_exists, #touch

Methods included from TextHelpers

#assert_text, #clear_text, #enter_text, #escape_quotes, #has_text?, #keyboard_enter_char, #keyboard_enter_text

Methods included from EnvironmentHelpers

#xamarin_test_cloud?

Instance Method Details

#app_to_background(secs) ⇒ Object



1092
1093
1094
# File 'lib/calabash-android/operations.rb', line 1092

def app_to_background(secs)
  ni
end

#backdoor(method_name, arguments = [], options = {}) ⇒ Object



1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
# File 'lib/calabash-android/operations.rb', line 1150

def backdoor(method_name, arguments = [], options={})
  arguments = [arguments] unless arguments.is_a?(Array)

  result = JSON.parse(http('/backdoor', {method_name: method_name, arguments: arguments}))

  if result['outcome'] != 'SUCCESS'
    raise result.to_s
  end

  result['result']
end

#cell_swipe(options = {}) ⇒ Object



949
950
951
# File 'lib/calabash-android/operations.rb', line 949

def cell_swipe(options={})
  ni
end

#check_element_does_not_exist(query) ⇒ Object



1114
1115
1116
1117
1118
# File 'lib/calabash-android/operations.rb', line 1114

def check_element_does_not_exist( query )
  if element_exists( query )
    screenshot_and_raise "Expected no elements to match query: #{query}"
  end
end

#check_element_exists(query) ⇒ Object



1108
1109
1110
1111
1112
# File 'lib/calabash-android/operations.rb', line 1108

def check_element_exists( query )
  if not element_exists( query )
    screenshot_and_raise "No element found for query: #{query}"
  end
end

#check_view_with_mark_exists(expected_mark) ⇒ Object



1120
1121
1122
# File 'lib/calabash-android/operations.rb', line 1120

def check_view_with_mark_exists(expected_mark)
  check_element_exists( "view marked:'#{expected_mark}'" )
end

#classes(query_string, *args) ⇒ Object



236
237
238
# File 'lib/calabash-android/operations.rb', line 236

def classes(query_string, *args)
  query(query_string, :class, *args)
end

#clear_app_dataObject



112
113
114
# File 'lib/calabash-android/operations.rb', line 112

def clear_app_data
  default_device.clear_app_data
end

#clear_preferences(name) ⇒ Object



169
170
171
# File 'lib/calabash-android/operations.rb', line 169

def clear_preferences(name)
  default_device.clear_preferences(name)
end

#client_versionObject



141
142
143
# File 'lib/calabash-android/operations.rb', line 141

def client_version
  default_device.client_version
end

#connect_to_test_serverObject

app life cycle



255
256
257
258
259
# File 'lib/calabash-android/operations.rb', line 255

def connect_to_test_server
  puts "Explicit calls to connect_to_test_server should be removed."
  puts "Please take a look in your hooks file for calls to this methods."
  puts "(Hooks are stored in features/support)"
end

#current_activityObject



31
32
33
# File 'lib/calabash-android/operations.rb', line 31

def current_activity
  `#{default_device.adb_command} shell dumpsys window windows`.each_line.grep(/mFocusedApp.+[\.\/]([^.\s\/\}]+)/){$1}.first
end

#default_deviceObject



47
48
49
50
51
52
# File 'lib/calabash-android/operations.rb', line 47

def default_device
  unless @default_device
    @default_device = Device.new(self, ENV["ADB_DEVICE_ARG"], ENV["TEST_SERVER_PORT"], ENV["APP_PATH"], ENV["TEST_APP_PATH"])
  end
  @default_device
end

#deprecated_actionsObject



81
82
83
84
85
# File 'lib/calabash-android/operations.rb', line 81

def deprecated_actions
  @deprecated_actions ||= Hash[
      *File.readlines(File.join(File.dirname(__FILE__), 'deprecated_actions.map')).map{|e| e.chomp.split(',', 2)}.flatten
  ]
end

#disconnect_from_test_serverObject



261
262
263
264
265
# File 'lib/calabash-android/operations.rb', line 261

def disconnect_from_test_server
  puts "Explicit calls to disconnect_from_test_server should be removed."
  puts "Please take a look in your hooks file for calls to this methods."
  puts "(Hooks are stored in features/support)"
end

#doneObject



953
954
955
# File 'lib/calabash-android/operations.rb', line 953

def done
  ni
end

#each_item(opts = {:query => "android.widget.ListView", :post_scroll => 0.2}, &block) ⇒ Object



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# File 'lib/calabash-android/operations.rb', line 195

def each_item(opts={:query => "android.widget.ListView", :post_scroll => 0.2}, &block)
  uiquery = opts[:query] || "android.widget.ListView"
  skip_if = opts[:skip_if] || lambda { |i| false }
  stop_when = opts[:stop_when] || lambda { |i| false }
  check_element_exists(uiquery)
  num_items = query(opts[:query], :adapter, :count).first
  num_items.times do |item|
    next if skip_if.call(item)
    break if stop_when.call(item)

    scroll_to_row(opts[:query], item)
    sleep(opts[:post_scroll]) if opts[:post_scroll] and opts[:post_scroll] > 0
    yield(item)
  end
end

#element_does_not_exist(uiquery) ⇒ Object



1096
1097
1098
# File 'lib/calabash-android/operations.rb', line 1096

def element_does_not_exist(uiquery)
  query(uiquery).empty?
end

#element_exists(uiquery) ⇒ Object



1100
1101
1102
# File 'lib/calabash-android/operations.rb', line 1100

def element_exists(uiquery)
  not element_does_not_exist(uiquery)
end

#element_is_not_hidden(uiquery) ⇒ Object

a better name would be element_exists_and_is_not_hidden



1125
1126
1127
# File 'lib/calabash-android/operations.rb', line 1125

def element_is_not_hidden(uiquery)
  ni
end

#execute_uiquery(uiquery) ⇒ Object



817
818
819
820
821
822
823
824
825
826
827
828
829
830
# File 'lib/calabash-android/operations.rb', line 817

def execute_uiquery(uiquery)
  if uiquery.instance_of? String
    elements = query(uiquery)

    return elements.first unless elements.empty?
  else
    elements = uiquery

    return elements.first if elements.instance_of?(Array)
    return elements if elements.instance_of?(Hash)
  end

  nil
end

#fail(msg = "Error. Check log for details.", options = {:prefix => nil, :name => nil, :label => nil}) ⇒ Object



149
150
151
# File 'lib/calabash-android/operations.rb', line 149

def fail(msg="Error. Check log for details.", options={:prefix => nil, :name => nil, :label => nil})
  screenshot_and_raise(msg, options)
end

#find_scrollable_view(options = {}) ⇒ Object



957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
# File 'lib/calabash-android/operations.rb', line 957

def find_scrollable_view(options={})
  timeout = options[:timeout] || 30

  begin
    Timeout.timeout(timeout, WaitError) do
      scroll_view_query_string = "android.widget.ScrollView index:0"
      list_view_query_string = "android.widget.AbsListView index:0"
      web_view_query_string = "android.webkit.WebView index:0"

      loop do
        if element_exists(scroll_view_query_string)
          return scroll_view_query_string
        elsif element_exists(list_view_query_string)
          return list_view_query_string
        elsif element_exists(web_view_query_string)
          return web_view_query_string
        end
      end
    end
  rescue WaitError
    raise WaitError.new('Could not find any scrollable views')
  end
end

#flash(query_string) ⇒ Object



191
192
193
# File 'lib/calabash-android/operations.rb', line 191

def flash(query_string)
  map(query_string, :flash)
end

#get_preferences(name) ⇒ Object



161
162
163
# File 'lib/calabash-android/operations.rb', line 161

def get_preferences(name)
  default_device.get_preferences(name)
end

#hide_soft_keyboardObject



813
814
815
# File 'lib/calabash-android/operations.rb', line 813

def hide_soft_keyboard
  perform_action('hide_soft_keyboard')
end

#html(q) ⇒ Object



840
841
842
# File 'lib/calabash-android/operations.rb', line 840

def html(q)
  query(q).map {|e| e['html']}
end

#http(path, data = {}, options = {}) ⇒ Object



836
837
838
# File 'lib/calabash-android/operations.rb', line 836

def http(path, data = {}, options = {})
  default_device.http(path, data, options)
end

#install_app(app_path) ⇒ Object



95
96
97
# File 'lib/calabash-android/operations.rb', line 95

def install_app(app_path)
  default_device.install_app(app_path)
end

#interpolate(recording, options = {}) ⇒ Object



1138
1139
1140
# File 'lib/calabash-android/operations.rb', line 1138

def interpolate(recording, options={})
  ni
end

#label(uiquery) ⇒ Object



800
801
802
# File 'lib/calabash-android/operations.rb', line 800

def label(uiquery)
  ni
end

#load_playback_data(recording, options = {}) ⇒ Object



1130
1131
1132
# File 'lib/calabash-android/operations.rb', line 1130

def load_playback_data(recording,options={})
  ni
end

#log(message) ⇒ Object



35
36
37
# File 'lib/calabash-android/operations.rb', line 35

def log(message)
  $stdout.puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S")} - #{message}" if (ARGV.include? "-v" or ARGV.include? "--verbose")
end

#macro(txt) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/calabash-android/operations.rb', line 39

def macro(txt)
  if self.respond_to?(:step)
    step(txt)
  else
    Then(txt)
  end
end

#make_http_request(options) ⇒ Object



1181
1182
1183
# File 'lib/calabash-android/operations.rb', line 1181

def make_http_request(options)
  default_device.make_http_request(options)
end

#map(query, method_name, *method_args) ⇒ Object



1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
# File 'lib/calabash-android/operations.rb', line 1162

def map(query, method_name, *method_args)
  operation_map = {
      :method_name => method_name,
      :arguments => method_args
  }
  res = http("/map",
             {:query => query, :operation => operation_map})
  res = JSON.parse(res)
  if res['outcome'] != 'SUCCESS'
    screenshot_and_raise "map #{query}, #{method_name} failed because: #{res['reason']}\n#{res['details']}"
  end

  res['results']
end

#niObject



240
241
242
# File 'lib/calabash-android/operations.rb', line 240

def ni
  raise "Not yet implemented."
end

#page(clz, *args) ⇒ Object

simple page object helper



248
249
250
# File 'lib/calabash-android/operations.rb', line 248

def page(clz, *args)
  clz.new(self, *args)
end

#perform_action(action, *arguments) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/calabash-android/operations.rb', line 64

def perform_action(action, *arguments)
  if removed_actions.include?(action)
    puts "\e[31mError: The action '#{action}' was removed in calabash-android 0.5\e[0m"
    puts 'Solutions that do not require the removed action can be found on:'
    puts "\e[36mhttps://github.com/calabash/calabash-android/blob/master/migrating_to_calabash_0.5.md\##{action}\e[0m"
  elsif deprecated_actions.has_key?(action)
    puts "\e[31mWarning: The action '#{action}' is deprecated\e[0m"
    puts "\e[32mUse '#{deprecated_actions[action]}' instead\e[0m"
  end

  default_device.perform_action(action, *arguments)
end

#performAction(action, *arguments) ⇒ Object



58
59
60
61
62
# File 'lib/calabash-android/operations.rb', line 58

def performAction(action, *arguments)
  puts "Warning: The method performAction is deprecated. Please use perform_action instead."

  perform_action(action, *arguments)
end

#playback(recording, options = {}) ⇒ Object



1134
1135
1136
# File 'lib/calabash-android/operations.rb', line 1134

def playback(recording, options={})
  ni
end

#press_back_buttonObject



861
862
863
# File 'lib/calabash-android/operations.rb', line 861

def press_back_button
  press_button('KEYCODE_BACK')
end

#press_button(key) ⇒ Object



857
858
859
# File 'lib/calabash-android/operations.rb', line 857

def press_button(key)
  perform_action('press_key', key)
end

#press_down_buttonObject



869
870
871
# File 'lib/calabash-android/operations.rb', line 869

def press_down_button
  press_button('KEYCODE_DPAD_DOWN')
end

#press_enter_buttonObject



885
886
887
# File 'lib/calabash-android/operations.rb', line 885

def press_enter_button
  press_button('KEYCODE_ENTER')
end

#press_left_buttonObject



877
878
879
# File 'lib/calabash-android/operations.rb', line 877

def press_left_button
  press_button('KEYCODE_DPAD_LEFT')
end

#press_menu_buttonObject



865
866
867
# File 'lib/calabash-android/operations.rb', line 865

def press_menu_button
  press_button('KEYCODE_MENU')
end

#press_right_buttonObject



881
882
883
# File 'lib/calabash-android/operations.rb', line 881

def press_right_button
  press_button('KEYCODE_DPAD_RIGHT')
end

#press_up_buttonObject



873
874
875
# File 'lib/calabash-android/operations.rb', line 873

def press_up_button
  press_button('KEYCODE_DPAD_UP')
end

#press_user_action_button(action_name = nil) ⇒ Object



849
850
851
852
853
854
855
# File 'lib/calabash-android/operations.rb', line 849

def press_user_action_button(action_name=nil)
  if action_name.nil?
    perform_action("press_user_action_button")
  else
    perform_action("press_user_action_button", action_name)
  end
end

#pull(remote, local) ⇒ Object



116
117
118
# File 'lib/calabash-android/operations.rb', line 116

def pull(remote, local)
  default_device.pull(remote, local)
end

#push(local, remote) ⇒ Object



120
121
122
# File 'lib/calabash-android/operations.rb', line 120

def push(local, remote)
  default_device.push(local, remote)
end

#query(uiquery, *args) ⇒ Object



173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/calabash-android/operations.rb', line 173

def query(uiquery, *args)
  converted_args = []
  args.each do |arg|
    if arg.is_a?(Hash) and arg.count == 1
      if arg.values.is_a?(Array) && arg.values.count == 1
        values = arg.values.flatten
      else
        values = [arg.values]
      end

      converted_args << {:method_name => arg.keys.first, :arguments => values}
    else
      converted_args << arg
    end
  end
  map(uiquery,:query,*converted_args)
end

#record_beginObject



1142
1143
1144
# File 'lib/calabash-android/operations.rb', line 1142

def record_begin
  ni
end

#record_end(file_name) ⇒ Object



1146
1147
1148
# File 'lib/calabash-android/operations.rb', line 1146

def record_end(file_name)
  ni
end

#reinstall_appsObject



87
88
89
# File 'lib/calabash-android/operations.rb', line 87

def reinstall_apps
  default_device.reinstall_apps
end

#reinstall_test_serverObject



91
92
93
# File 'lib/calabash-android/operations.rb', line 91

def reinstall_test_server
  default_device.reinstall_test_server
end

#removed_actionsObject



77
78
79
# File 'lib/calabash-android/operations.rb', line 77

def removed_actions
  @removed_actions ||= File.readlines(File.join(File.dirname(__FILE__), 'removed_actions.txt')).map(&:chomp)
end

#rotate(dir) ⇒ Object



1088
1089
1090
# File 'lib/calabash-android/operations.rb', line 1088

def rotate(dir)
  ni
end

#screenshot(options = {:prefix => nil, :name => nil}) ⇒ Object



137
138
139
# File 'lib/calabash-android/operations.rb', line 137

def screenshot(options={:prefix => nil, :name => nil})
  default_device.screenshot(options)
end

#screenshot_and_raise(msg, options = nil) ⇒ Object



804
805
806
807
808
809
810
811
# File 'lib/calabash-android/operations.rb', line 804

def screenshot_and_raise(msg, options = nil)
  if options
    screenshot_embed options
  else
    screenshot_embed
  end
  raise(msg)
end

#screenshot_embed(options = {:prefix => nil, :name => nil, :label => nil}) ⇒ Object



132
133
134
135
# File 'lib/calabash-android/operations.rb', line 132

def screenshot_embed(options={:prefix => nil, :name => nil, :label => nil})
  path = default_device.screenshot(options)
  embed(path, "image/png", options[:label] || File.basename(path))
end

#scroll(query_string, direction) ⇒ Object



989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
# File 'lib/calabash-android/operations.rb', line 989

def scroll(query_string, direction)
  if direction != :up && direction != :down
    raise 'Only upwards and downwards scrolling is supported for now'
  end

  action = lambda do
    elements = query(query_string)
    raise "No elements found. Query: #{query_string}" if elements.empty?

    if elements.length > 1
      query_string = "#{query_string} index:0"
    end

    element = elements.first

    response = query(query_string, :getFirstVisiblePosition).first

    if response.is_a?(Hash) && response.has_key?("error") # View is not of type android.widget.AbsListView
      scroll_x = 0
      scroll_y = 0
      width = element['rect']['width']
      height = element['rect']['height']

      if direction == :up
        scroll_y = -height/2
      else
        scroll_y = height/2
      end

      query(query_string, {scrollBy: [scroll_x.to_i, scroll_y.to_i]})
    else # View is of type android.widget.AbsListView
      first_position = response.to_i
      last_position = query(query_string, :getLastVisiblePosition).first.to_i

      selection_index = if direction == :up
                          [first_position + [first_position - last_position + 1, -1].min, 0].max
                        elsif direction == :down
                          first_position + [last_position - first_position, 1].max
                        end

      query(query_string, setSelection: selection_index)
    end
  end

  when_element_exists(query_string, action: action)
end

#scroll_down(options = {}) ⇒ Object



985
986
987
# File 'lib/calabash-android/operations.rb', line 985

def scroll_down(options={})
  scroll(find_scrollable_view(options), :down)
end

#scroll_to(query_string, options = {}) ⇒ Object



1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
# File 'lib/calabash-android/operations.rb', line 1036

def scroll_to(query_string, options={})
  options[:action] ||= lambda {}

  all_query_string = query_string

  unless all_query_string.chomp.downcase.start_with?('all')
    all_query_string = "all #{all_query_string}"
  end

  wait_for_element_exists(all_query_string)

  element = query(all_query_string).first
  raise "No elements found. Query: #{all_query_string}" if element.nil?
  element_y = element['rect']['y']
  element_height = element['rect']['height']
  element_bottom = element_y + element_height

  scroll_view_query_string = options[:container] || if element.has_key?('html')
                                                      "android.webkit.WebView id:'#{element['webView']}'"
                                                    else
                                                      "#{all_query_string} parent android.widget.ScrollView index:0"
                                                    end

  scroll_element = query(scroll_view_query_string).first

  raise "Could not find parent scroll view. Query: '#{escape_quotes(scroll_view_query_string)}'" if scroll_element.nil?

  scroll_element_y = scroll_element['rect']['y']
  scroll_element_height = scroll_element['rect']['height']

  if element_bottom > scroll_element_y + scroll_element_height
    scroll_by_y = element_bottom - (scroll_element_y + scroll_element_height)
  elsif element_y < scroll_element_y
    scroll_by_y = element_y - scroll_element_y
  else
    scroll_by_y = 0
  end

  if scroll_by_y != 0
    result = query(scroll_view_query_string, {scrollBy: [0, scroll_by_y]}).first
    raise 'Could not scroll parent view' if result != '<VOID>'
  end

  visibility_query_string = all_query_string[4..-1]
  when_element_exists(visibility_query_string, options)
end

#scroll_to_row(uiquery, number) ⇒ Object



1083
1084
1085
1086
# File 'lib/calabash-android/operations.rb', line 1083

def scroll_to_row(uiquery,number)
  query(uiquery, {:smoothScrollToPosition => number})
  puts "TODO:detect end of scroll - use sleep for now"
end

#scroll_up(options = {}) ⇒ Object



981
982
983
# File 'lib/calabash-android/operations.rb', line 981

def scroll_up(options={})
  scroll(find_scrollable_view(options), :up)
end

#select_context_menu_item(view_uiquery, menu_item_query_string) ⇒ Object



894
895
896
897
898
899
900
901
902
# File 'lib/calabash-android/operations.rb', line 894

def select_context_menu_item(view_uiquery, menu_item_query_string)
  long_press(view_uiquery)

  container_class = 'com.android.internal.view.menu.ListMenuItemView'
  wait_for_element_exists(container_class)

  combined_query_string = "#{container_class} descendant #{menu_item_query_string}"
  touch(combined_query_string)
end

#select_item_from_spinner(item_query_string, options = {}) ⇒ Object



904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
# File 'lib/calabash-android/operations.rb', line 904

def select_item_from_spinner(item_query_string, options={})
  spinner_query_string = options[:spinner] || "android.widget.AbsSpinner"
  direction = options[:direction] || :down
  count = query(spinner_query_string, :getCount).first
  scroll_view_query_string = options[:scroll_view] || "android.widget.AbsListView index:0"

  unless direction == :up || direction == :down
    raise "Invalid direction '#{direction}'. Only upwards and downwards scrolling is supported"
  end

  touch(spinner_query_string)

  change_direction = false

  wait_for({retry_frequency: 0}.merge(options)) do
    if query(item_query_string).empty?
      scroll(scroll_view_query_string, direction)

      if change_direction
        direction = direction == :up ? :down : :up
        change_direction = false
      else
        # Because getLastVisiblePosition returns the last element even though it is not visible,
        # we have to scroll one more time to make sure we do not change direction before the last
        # element is fully visible
        if direction == :down
          change_direction = true if query(scroll_view_query_string, :getLastVisiblePosition).first+1 == count
        elsif direction == :up
          change_direction = true if query(scroll_view_query_string, :getFirstVisiblePosition).first == 0
        end
      end

      false
    else
      true
    end
  end

  touch(item_query_string)
end

#select_options_menu_item(identifier, options = {}) ⇒ Object



889
890
891
892
# File 'lib/calabash-android/operations.rb', line 889

def select_options_menu_item(identifier, options={})
  press_menu_button
  tap_when_element_exists("DropDownListView * marked:'#{identifier}'", options)
end

#server_versionObject



145
146
147
# File 'lib/calabash-android/operations.rb', line 145

def server_version
  default_device.server_version
end

#set_date(query_string, year_or_datestring, month = nil, day = nil) ⇒ Object



211
212
213
214
215
216
217
218
219
220
221
# File 'lib/calabash-android/operations.rb', line 211

def set_date(query_string, year_or_datestring, month=nil, day=nil)
  wait_for_element_exists(query_string)

  if month.nil? && day.nil? && year_or_datestring.is_a?(String)
    date = Date.parse(year_or_datestring)
    set_date(query_string, date.year, date.month, date.day)
  else
    year = year_or_datestring
    query(query_string, updateDate: [year, month-1, day])
  end
end

#set_default_device(device) ⇒ Object



54
55
56
# File 'lib/calabash-android/operations.rb', line 54

def set_default_device(device)
  @default_device = device
end

#set_gps_coordinates(latitude, longitude) ⇒ Object



157
158
159
# File 'lib/calabash-android/operations.rb', line 157

def set_gps_coordinates(latitude, longitude)
  default_device.set_gps_coordinates(latitude, longitude)
end

#set_gps_coordinates_from_location(location) ⇒ Object



153
154
155
# File 'lib/calabash-android/operations.rb', line 153

def set_gps_coordinates_from_location(location)
  default_device.set_gps_coordinates_from_location(location)
end

#set_preferences(name, hash) ⇒ Object



165
166
167
# File 'lib/calabash-android/operations.rb', line 165

def set_preferences(name, hash)
  default_device.set_preferences(name, hash)
end

#set_text(uiquery, txt) ⇒ Object



844
845
846
847
# File 'lib/calabash-android/operations.rb', line 844

def set_text(uiquery, txt)
  puts "set_text is deprecated. Use enter_text instead"
  enter_text(uiquery, txt)
end

#set_time(query_string, hour_or_timestring, minute = nil) ⇒ Object



223
224
225
226
227
228
229
230
231
232
233
234
# File 'lib/calabash-android/operations.rb', line 223

def set_time(query_string, hour_or_timestring, minute=nil)
  wait_for_element_exists(query_string)

  if minute.nil? && hour_or_timestring.is_a?(String)
    time = Time.parse(hour_or_timestring)
    set_time(query_string, time.hour, time.min)
  else
    hour = hour_or_timestring
    query(query_string, setCurrentHour: hour)
    query(query_string, setCurrentMinute: minute)
  end
end

#shutdown_test_serverObject



128
129
130
# File 'lib/calabash-android/operations.rb', line 128

def shutdown_test_server
  default_device.shutdown_test_server
end

#start_test_server_in_background(options = {}) ⇒ Object



124
125
126
# File 'lib/calabash-android/operations.rb', line 124

def start_test_server_in_background(options={})
  default_device.start_test_server_in_background(options)
end

#step_deprecatedObject



832
833
834
# File 'lib/calabash-android/operations.rb', line 832

def step_deprecated
  puts 'Warning: This predefined step is deprecated.'
end

#swipe(query_string, options = {}) ⇒ Object



945
946
947
# File 'lib/calabash-android/operations.rb', line 945

def swipe(query_string, options={})
  raise 'Swipe not implemented. Use flick or pan instead.'
end

#uninstall_appsObject



103
104
105
106
# File 'lib/calabash-android/operations.rb', line 103

def uninstall_apps
  default_device.uninstall_app(package_name(default_device.test_server_path))
  default_device.uninstall_app(package_name(default_device.app_path))
end

#update_app(app_path) ⇒ Object



99
100
101
# File 'lib/calabash-android/operations.rb', line 99

def update_app(app_path)
  default_device.update_app(app_path)
end

#url_for(method) ⇒ Object



1177
1178
1179
# File 'lib/calabash-android/operations.rb', line 1177

def url_for( method )
  default_device.url_for(method)
end

#view_with_mark_exists(expected_mark) ⇒ Object



1104
1105
1106
# File 'lib/calabash-android/operations.rb', line 1104

def view_with_mark_exists(expected_mark)
  element_exists( "android.view.View marked:'#{expected_mark}'" )
end

#wake_upObject



108
109
110
# File 'lib/calabash-android/operations.rb', line 108

def wake_up
  default_device.wake_up()
end