honeydew 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ bin
19
19
  output
20
20
  .idea
21
21
  log
22
+ .DS_Store
@@ -1,5 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'honeydew'
4
+
5
+ gem 'cucumber'
4
6
  gem 'rspec'
5
7
  gem 'rake'
@@ -1,10 +1,6 @@
1
- @honeydew
2
1
  Feature: Example demonstrating honeydew
2
+
3
3
  Scenario: Perform addition using calculator
4
- When I launch app "Calculator"
5
- Then I long press the element with description "square root"
6
- Then I press the "6" button
7
- Then I press the "2" button
8
- Then I press the "5" button
9
- And I press the "=" button
10
- Then I wait up to 2 seconds for "25" to appear in edit text
4
+ When I launch app Calculator
5
+ Then I square root 625
6
+ Then I should see 25 as the result
@@ -0,0 +1,19 @@
1
+ require 'honeydew'
2
+
3
+ When(/^I launch app (.+)$/) do |app|
4
+ Honeydew.current_device.launch_application app
5
+ end
6
+
7
+ Then(/^I square root (\d+)/) do |number|
8
+ Honeydew.current_device.long_click_element 'square root'
9
+ number.to_s.each_char {|n| Honeydew.current_device.click_button n }
10
+ Honeydew.current_device.click_button '='
11
+ end
12
+
13
+ When(/^I press the (.+) button$/) do |text|
14
+ Honeydew.current_device.click_button text
15
+ end
16
+
17
+ Then(/^I should see (\d+) as the result$/) do |result|
18
+ Honeydew.current_device.should have_edit_text(result)
19
+ end
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'honeydew'
4
+
5
+ gem 'rspec'
6
+ gem 'rake'
@@ -0,0 +1,9 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.require
4
+
5
+ require 'rspec/core/rake_task'
6
+
7
+ RSpec::Core::RakeTask.new(:spec)
8
+
9
+ task :default => :spec
@@ -2,11 +2,13 @@ require 'net/http'
2
2
 
3
3
  require 'honeydew/device_matchers'
4
4
  require 'honeydew/device_actions'
5
+ require 'honeydew/device_log_formatter'
5
6
 
6
7
  module Honeydew
7
8
  class Device
8
9
  include Honeydew::DeviceActions
9
10
  include Honeydew::DeviceMatchers
11
+ include Honeydew::DeviceLogFormatter
10
12
 
11
13
  ServerTimeoutError = Class.new(Timeout::Error)
12
14
  ActionFailedError = Class.new(Timeout::Error)
@@ -40,7 +42,7 @@ module Honeydew
40
42
 
41
43
  arguments[:timeout] = Honeydew.config.timeout.to_s
42
44
 
43
- log "performing assertion #{action} with arguments #{arguments}"
45
+ debug "performing assertion #{action} with arguments #{arguments}"
44
46
  Timeout.timeout Honeydew.config.timeout.to_i, FinderTimeout do
45
47
  begin
46
48
  send_command action, arguments
@@ -56,7 +58,7 @@ module Honeydew
56
58
  def perform_action action, arguments = {}, options = {}
57
59
  ensure_device_ready
58
60
  arguments[:timeout] = Honeydew.config.timeout.to_s
59
- log "performing action #{action} with arguments #{arguments}"
61
+ debug "performing action #{action} with arguments #{arguments}"
60
62
  send_command action, arguments
61
63
  end
62
64
 
@@ -81,11 +83,6 @@ module Honeydew
81
83
  end
82
84
  end
83
85
 
84
- def log message
85
- return unless Honeydew.config.debug
86
- STDERR.puts "Device #{serial}: #{message}"
87
- end
88
-
89
86
  def ensure_device_ready
90
87
  @device_ready ||= begin
91
88
  wait_for_honeydew_server
@@ -98,11 +95,11 @@ module Honeydew
98
95
  end
99
96
 
100
97
  def wait_for_honeydew_server
101
- log 'waiting for honeydew-server to respond'
98
+ info 'waiting for honeydew-server to respond'
102
99
  timeout_server_operation do
103
100
  sleep 0.1 until honeydew_server_alive?
104
101
  end
105
- log 'honeydew-server is alive and awaiting commands'
102
+ info 'honeydew-server is alive and awaiting commands'
106
103
 
107
104
  rescue ServerTimeoutError
108
105
  raise 'timed out waiting for honeydew-server to respond'
@@ -60,6 +60,10 @@ module Honeydew
60
60
  perform_action :long_click, :description => element_description
61
61
  end
62
62
 
63
+ def long_click_text element_text
64
+ perform_action :long_click, :text =>element_text, :type => 'TextView'
65
+ end
66
+
63
67
  def launch_settings_item item_name
64
68
  perform_action :select_menu_in_settings, :menuName => item_name
65
69
  end
@@ -35,7 +35,7 @@ module Honeydew
35
35
  end
36
36
 
37
37
  def terminate_honeydew_server
38
- log "terminating honeydew-server"
38
+ info "terminating honeydew-server"
39
39
  Net::HTTP.post_form device_endpoint('/terminate'), {}
40
40
  rescue Errno::ECONNREFUSED, Errno::ECONNRESET, EOFError
41
41
  # Swallow
@@ -50,9 +50,9 @@ module Honeydew
50
50
  end
51
51
 
52
52
  def start_automation_server
53
- log "starting honeydew-server on the device"
53
+ info "starting honeydew-server on the device"
54
+ adb "push #{honeydew_server_file} /data/local/tmp"
54
55
  Thread.new do
55
- adb "push #{honeydew_server_file} /data/local/tmp"
56
56
  adb "shell uiautomator runtest #{honeydew_server_package} -c com.amplify.honeydew_server.TestRunner"
57
57
  end
58
58
  at_exit do
@@ -86,10 +86,12 @@ module Honeydew
86
86
 
87
87
  def adb(command)
88
88
  adb_command = "adb -s #{serial} #{command}"
89
- log "executing '#{adb_command}'"
89
+ info "executing '#{adb_command}'"
90
90
  `#{adb_command} 2>/dev/null`.tap do
91
91
  if $?.exitstatus != 0
92
- raise "ADB command '#{command}' failed"
92
+ message = "ADB command '#{command}' failed"
93
+ error message
94
+ raise message
93
95
  end
94
96
  end
95
97
  end
@@ -0,0 +1,10 @@
1
+ module Honeydew
2
+ module DeviceLogFormatter
3
+ Logger::Severity.constants.each do |severity|
4
+ severity_sym = severity.to_s.downcase.to_sym
5
+ define_method severity_sym do |message|
6
+ Honeydew.config.logger.send(severity_sym, "Device #{serial}: #{message}")
7
+ end
8
+ end
9
+ end
10
+ end
@@ -5,16 +5,18 @@ require 'honeydew/device'
5
5
 
6
6
  module Honeydew
7
7
  class Configuration
8
- attr_accessor :debug,
8
+ attr_accessor :logger,
9
+ :port,
9
10
  :server_timeout,
10
- :timeout,
11
- :port
11
+ :timeout
12
12
 
13
13
  def initialize
14
14
  @port = 7120
15
- @debug = true
16
15
  @timeout = 5.seconds
17
- @server_timeout = 30.seconds
16
+ @server_timeout = 60.seconds
17
+
18
+ @logger = Logger.new(STDERR)
19
+ @logger.level = Logger::INFO
18
20
  end
19
21
 
20
22
  def obtain_new_port
@@ -1,3 +1,3 @@
1
1
  module Honeydew
2
- VERSION = '0.15.0'
2
+ VERSION = '0.16.0'
3
3
  end
data/server/pom.xml CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  <groupId>amplify</groupId>
7
7
  <artifactId>honeydew-server</artifactId>
8
- <version>0.15.0</version>
8
+ <version>0.16.0</version>
9
9
  <packaging>jar</packaging>
10
10
  <name>Honeydew Android Server</name>
11
11
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeydew
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-07-17 00:00:00.000000000 Z
15
+ date: 2013-08-02 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: activesupport
@@ -132,7 +132,9 @@ files:
132
132
  - examples/cucumber/Gemfile
133
133
  - examples/cucumber/Rakefile
134
134
  - examples/cucumber/features/example.feature
135
- - examples/cucumber/features/step_definitions/honeydew_steps.rb
135
+ - examples/cucumber/features/step_definitions/calculator_steps.rb
136
+ - examples/rspec/Gemfile
137
+ - examples/rspec/Rakefile
136
138
  - examples/rspec/spec/browse_spec.rb
137
139
  - examples/rspec/spec/spec_helper.rb
138
140
  - honeydew.gemspec
@@ -142,6 +144,7 @@ files:
142
144
  - lib/honeydew/device.rb
143
145
  - lib/honeydew/device_actions.rb
144
146
  - lib/honeydew/device_commands.rb
147
+ - lib/honeydew/device_log_formatter.rb
145
148
  - lib/honeydew/device_matchers.rb
146
149
  - lib/honeydew/dsl.rb
147
150
  - lib/honeydew/honeydew.rb
@@ -198,7 +201,7 @@ files:
198
201
  - spec/honeydew/device_matchers_spec.rb
199
202
  - spec/honeydew/device_spec.rb
200
203
  - spec/spec_helper.rb
201
- - server/target/honeydew-server-0.15.0.jar
204
+ - server/target/honeydew-server-0.16.0.jar
202
205
  homepage:
203
206
  licenses: []
204
207
  post_install_message:
@@ -219,12 +222,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
222
  version: '0'
220
223
  requirements: []
221
224
  rubyforge_project:
222
- rubygems_version: 1.8.23
225
+ rubygems_version: 1.8.25
223
226
  signing_key:
224
227
  specification_version: 3
225
228
  summary: Ruby DSL for controlling Android devices
226
229
  test_files:
227
230
  - .rspec
231
+ - examples/rspec/Gemfile
232
+ - examples/rspec/Rakefile
228
233
  - examples/rspec/spec/browse_spec.rb
229
234
  - examples/rspec/spec/spec_helper.rb
230
235
  - honeydew.gemspec
@@ -1 +0,0 @@
1
- require 'honeydew/step_definitions'