honeydew 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. data/.gitignore +21 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +17 -0
  7. data/android-server/.gitignore +4 -0
  8. data/android-server/pom.xml +215 -0
  9. data/android-server/repo/com/google/android/uiautomator/4.1.1.4/_maven.repositories +4 -0
  10. data/android-server/repo/com/google/android/uiautomator/4.1.1.4/uiautomator-4.1.1.4.jar +0 -0
  11. data/android-server/repo/com/google/android/uiautomator/4.1.1.4/uiautomator-4.1.1.4.pom +9 -0
  12. data/android-server/repo/com/jayway/maven/plugins/android/generation2/android-maven-plugin/3.5.2-SNAPSHOT/android-maven-plugin-3.5.2-SNAPSHOT.jar +0 -0
  13. data/android-server/repo/com/jayway/maven/plugins/android/generation2/android-maven-plugin/3.5.2-SNAPSHOT/android-maven-plugin-3.5.2-SNAPSHOT.pom +56 -0
  14. data/android-server/repo/com/jayway/maven/plugins/android/generation2/android-maven-plugin/3.5.2-SNAPSHOT/maven-metadata-local.xml +24 -0
  15. data/android-server/repo/commons-jxpath/commons-jxpath/1.4-SNAPSHOT/_maven.repositories +4 -0
  16. data/android-server/repo/commons-jxpath/commons-jxpath/1.4-SNAPSHOT/commons-jxpath-1.4-SNAPSHOT.jar +0 -0
  17. data/android-server/repo/commons-jxpath/commons-jxpath/1.4-SNAPSHOT/commons-jxpath-1.4-SNAPSHOT.pom +9 -0
  18. data/android-server/repo/commons-jxpath/commons-jxpath/1.4-SNAPSHOT/maven-metadata-local.xml +24 -0
  19. data/android-server/repo/commons-jxpath/commons-jxpath/maven-metadata-local.xml +11 -0
  20. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/Action.java +65 -0
  21. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/ActionsExecutor.java +73 -0
  22. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/Command.java +16 -0
  23. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/Result.java +36 -0
  24. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/TestRunner.java +26 -0
  25. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/Click.java +20 -0
  26. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/ClickAndWaitForNewWindow.java +20 -0
  27. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/DumpWindowHierarchy.java +28 -0
  28. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/HasSettingsMenuItem.java +23 -0
  29. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/InspectOptionInSettingsMenu.java +32 -0
  30. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsButtonPresent.java +23 -0
  31. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsChildCountEqualTo.java +26 -0
  32. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsElementWithNestedTextPresent.java +24 -0
  33. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsOptionInSettingsMenuDisabled.java +9 -0
  34. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsOptionInSettingsMenuEnabled.java +9 -0
  35. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsTextPresent.java +19 -0
  36. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/LaunchApp.java +25 -0
  37. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/LaunchHome.java +19 -0
  38. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/LongClick.java +20 -0
  39. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/PressBack.java +19 -0
  40. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/PressEnter.java +19 -0
  41. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/SelectFromAppsList.java +24 -0
  42. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/SelectMenuInSettings.java +22 -0
  43. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/SetText.java +27 -0
  44. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/SetTextByIndex.java +25 -0
  45. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/SetTextByLabel.java +28 -0
  46. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/Unlock.java +31 -0
  47. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/WakeUp.java +24 -0
  48. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/httpd/NanoHTTPD.java +1100 -0
  49. data/android-server/src/main/java/com/uiautomator_cucumber/android_server/httpd/RemoteCommandReceiver.java +64 -0
  50. data/example/Gemfile +5 -0
  51. data/example/Rakefile +9 -0
  52. data/example/features/example.feature +10 -0
  53. data/example/features/step_definitions/honeydew_steps.rb +1 -0
  54. data/example/features/support/hooks.rb +4 -0
  55. data/honeydew.gemspec +28 -0
  56. data/honeydew.iml +28 -0
  57. data/lib/honeydew/cucumber.rb +4 -0
  58. data/lib/honeydew/device.rb +79 -0
  59. data/lib/honeydew/device_actions.rb +151 -0
  60. data/lib/honeydew/device_commands.rb +84 -0
  61. data/lib/honeydew/device_matchers.rb +52 -0
  62. data/lib/honeydew/dsl.rb +9 -0
  63. data/lib/honeydew/hooks.rb +0 -0
  64. data/lib/honeydew/step_definitions.rb +75 -0
  65. data/lib/honeydew/version.rb +3 -0
  66. data/lib/honeydew.rb +72 -0
  67. data/lib/tasks/honeydew.rake +7 -0
  68. data/spec/honeydew/device_matchers_spec.rb +58 -0
  69. data/spec/honeydew/device_spec.rb +66 -0
  70. data/spec/spec_helper.rb +39 -0
  71. data/todo.md +9 -0
  72. metadata +232 -0
data/lib/honeydew.rb ADDED
@@ -0,0 +1,72 @@
1
+ require 'bundler'
2
+ require 'bundler/setup'
3
+ require 'restclient'
4
+ require 'active_support/core_ext'
5
+
6
+ require "honeydew/version"
7
+ require "honeydew/device"
8
+
9
+ module Honeydew
10
+ class Configuration
11
+ attr_accessor :port, :timeout
12
+
13
+ def initialize
14
+ @port = 7120
15
+ @timeout = 5.seconds
16
+ end
17
+
18
+ def obtain_new_port
19
+ @port.tap { @port += 1 }
20
+ end
21
+ end
22
+
23
+ class <<self
24
+ attr_accessor :config
25
+
26
+ def config
27
+ return @config if @config
28
+ configure
29
+ @config
30
+ end
31
+
32
+ def configure
33
+ @config ||= Configuration.new
34
+ yield(@config) if block_given?
35
+ end
36
+
37
+ def attached_devices
38
+ `adb devices`.split("\n").drop(1).collect {|line| line.split[0].chomp}
39
+ end
40
+
41
+ def default_device_serial
42
+ attached_devices.first
43
+ end
44
+
45
+ def default_device
46
+ @default_device ||= device[default_device_serial]
47
+ end
48
+
49
+ def current_device
50
+ @current_device ||= default_device
51
+ end
52
+
53
+ def using_device(serial, &block)
54
+ original_device = current_device
55
+ use_device(serial).tap do |device|
56
+ device.instance_eval(&block) if block_given?
57
+ end
58
+ ensure
59
+ @current_device = original_device
60
+ end
61
+
62
+ def use_device(serial)
63
+ @current_device = device[serial]
64
+ end
65
+
66
+ def device
67
+ @devices ||= Hash.new do |hash, serial|
68
+ hash[serial] = Device.new(serial) if attached_devices.include?(serial)
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,7 @@
1
+ require 'honeydew'
2
+ require 'cucumber/rake/task'
3
+
4
+ Cucumber::Rake::Task.new(:honeydew, 'Run honeydew cucumber tests') do |t|
5
+ t.profile = 'honeydew'
6
+ t.cucumber_opts = "--tags @honeydew"
7
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe Honeydew::DeviceMatchers do
4
+
5
+ class DeviceTest
6
+ include Honeydew::DeviceMatchers
7
+ def perform_action; end
8
+ end
9
+
10
+ let (:device) { DeviceTest.new }
11
+
12
+ describe "#has_textview_text" do
13
+ let (:text) { "some text" }
14
+
15
+ it "should perform action for is_text_present" do
16
+ device.should_receive(:perform_action).with(hash_including({action: "is_text_present"}))
17
+
18
+ device.has_textview_text? text
19
+ end
20
+
21
+ it "should retry for a default timeout" do
22
+ device.should_receive(:perform_action).with(hash_including({retry_until: Honeydew.config.timeout}))
23
+
24
+ device.has_textview_text? text
25
+ end
26
+
27
+ it "should pass the arguments for the text view" do
28
+ device.should_receive(:perform_action).with(hash_including({arguments: { text: text, type: 'TextView'}}))
29
+
30
+ device.has_textview_text? text
31
+ end
32
+
33
+ end
34
+
35
+ describe "#has_textview_with_text_and_description" do
36
+ let (:text) { "some text" }
37
+ let (:description) { "some description" }
38
+
39
+ it "should perform action for is_text_present" do
40
+ device.should_receive(:perform_action).with(hash_including({action: "is_text_present"}))
41
+
42
+ device.has_textview_with_text_and_description? text, description
43
+ end
44
+
45
+ it "should retry for a default timeout" do
46
+ device.should_receive(:perform_action).with(hash_including({retry_until: Honeydew.config.timeout}))
47
+
48
+ device.has_textview_with_text_and_description? text, description
49
+ end
50
+
51
+ it "should pass the arguments for the text view" do
52
+ device.should_receive(:perform_action).with(hash_including({arguments: { text: text, description: description, type: 'TextView'}}))
53
+
54
+ device.has_textview_with_text_and_description? text, description
55
+ end
56
+
57
+ end
58
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe Honeydew::Device, :silence_puts do
4
+ let(:response) { "{ \"success\": true }" }
5
+ let(:command) { {"action" => '', "arguments" => {}} }
6
+ let(:serial) { "ABC123DEF" }
7
+
8
+ before do
9
+ @device = Honeydew::Device.new serial
10
+ @device_end_point = "http://127.0.0.1:#{@device.port}"
11
+ RestClient.stub(:get).with(@device_end_point, params: { "command" => command}).and_return(response)
12
+ end
13
+
14
+ describe "contains_textview_text?" do
15
+ let(:text) { "Ok" }
16
+ let(:command) { {"action" => 'is_text_present', "arguments" => {"text" => text, "type" => 'TextView'}} }
17
+
18
+ it "should make the call with command is_text_present" do
19
+ RestClient.should_receive(:get).with(@device_end_point, params: { "command" => command}).and_return(response)
20
+ @device.contains_textview_text?(text)
21
+ end
22
+
23
+ context "on successful response" do
24
+ let(:response) { "{ \"success\": true }" }
25
+
26
+ it "should return true" do
27
+ @device.contains_textview_text?(text).should be_true
28
+ end
29
+ end
30
+
31
+ context "on failure response" do
32
+ let(:response) { "{ \"success\": false }" }
33
+
34
+ it "should return false" do
35
+ @device.contains_textview_text?(text).should be_false
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "contains_button?" do
41
+ let(:text) { "Ok" }
42
+ let(:command) { {"action" => 'is_button_present', "arguments" => {"text" => text}} }
43
+
44
+ it "should make the call with command is_button_present" do
45
+ RestClient.should_receive(:get).with(@device_end_point, params: { "command" => command}).and_return(response)
46
+ @device.contains_button?(text)
47
+ end
48
+
49
+ context "on successful response" do
50
+ let(:response) { "{ \"success\": true }" }
51
+
52
+ it "should return true" do
53
+ @device.contains_button?(text).should be_true
54
+ end
55
+ end
56
+
57
+ context "on failure response" do
58
+ let(:response) { "{ \"success\": false }" }
59
+
60
+ it "should return false" do
61
+ @device.contains_button?(text).should be_false
62
+ end
63
+ end
64
+ end
65
+
66
+ end
@@ -0,0 +1,39 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+
8
+ require 'honeydew'
9
+ Dir["honeydew/**/*.rb"].each{|f| require f}
10
+
11
+ RSpec.configure do |config|
12
+ config.treat_symbols_as_metadata_keys_with_true_values = true
13
+ config.run_all_when_everything_filtered = true
14
+ config.filter_run :focus
15
+
16
+ # Run specs in random order to surface order dependencies. If you find an
17
+ # order dependency and want to debug it, you can fix the order by providing
18
+ # the seed, which is printed after each run.
19
+ # --seed 1234
20
+ config.order = 'random'
21
+
22
+ config.around :each do |example|
23
+ if example.metadata[:silence_puts]
24
+ silence_stream(STDOUT) { example.run }
25
+ else
26
+ example.run
27
+ end
28
+ end
29
+
30
+ config.before do
31
+ Honeydew.configure do |config|
32
+ config.timeout = 2.seconds
33
+ config.port = 7120
34
+ end
35
+ Honeydew::Device.any_instance.stub(:start_uiautomator_server)
36
+ Honeydew::Device.any_instance.stub(ensure_tablet_ready: true)
37
+ end
38
+ end
39
+
data/todo.md ADDED
@@ -0,0 +1,9 @@
1
+ TODO
2
+ ====
3
+
4
+ * More predefined steps (like swipe, back, etc)
5
+ * Multiple devices
6
+ * Start multiple devices
7
+ * Specify the device on a step basis
8
+ * RDoc
9
+ * Other language clients
metadata ADDED
@@ -0,0 +1,232 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: honeydew
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Selva
9
+ - Christopher Rex
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-07-02 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '1.3'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '1.3'
31
+ - !ruby/object:Gem::Dependency
32
+ name: rake
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: cucumber
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ - !ruby/object:Gem::Dependency
80
+ name: json
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ type: :runtime
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: rest-client
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: activesupport
113
+ requirement: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ description: Automated functional testing on Android with uiautomator and cucumber
128
+ email:
129
+ - scmp-team@amplify.com
130
+ executables: []
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - .gitignore
135
+ - .rspec
136
+ - Gemfile
137
+ - LICENSE.txt
138
+ - README.md
139
+ - Rakefile
140
+ - android-server/.gitignore
141
+ - android-server/pom.xml
142
+ - android-server/repo/com/google/android/uiautomator/4.1.1.4/_maven.repositories
143
+ - android-server/repo/com/google/android/uiautomator/4.1.1.4/uiautomator-4.1.1.4.jar
144
+ - android-server/repo/com/google/android/uiautomator/4.1.1.4/uiautomator-4.1.1.4.pom
145
+ - android-server/repo/com/jayway/maven/plugins/android/generation2/android-maven-plugin/3.5.2-SNAPSHOT/android-maven-plugin-3.5.2-SNAPSHOT.jar
146
+ - android-server/repo/com/jayway/maven/plugins/android/generation2/android-maven-plugin/3.5.2-SNAPSHOT/android-maven-plugin-3.5.2-SNAPSHOT.pom
147
+ - android-server/repo/com/jayway/maven/plugins/android/generation2/android-maven-plugin/3.5.2-SNAPSHOT/maven-metadata-local.xml
148
+ - android-server/repo/commons-jxpath/commons-jxpath/1.4-SNAPSHOT/_maven.repositories
149
+ - android-server/repo/commons-jxpath/commons-jxpath/1.4-SNAPSHOT/commons-jxpath-1.4-SNAPSHOT.jar
150
+ - android-server/repo/commons-jxpath/commons-jxpath/1.4-SNAPSHOT/commons-jxpath-1.4-SNAPSHOT.pom
151
+ - android-server/repo/commons-jxpath/commons-jxpath/1.4-SNAPSHOT/maven-metadata-local.xml
152
+ - android-server/repo/commons-jxpath/commons-jxpath/maven-metadata-local.xml
153
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/Action.java
154
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/ActionsExecutor.java
155
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/Command.java
156
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/Result.java
157
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/TestRunner.java
158
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/Click.java
159
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/ClickAndWaitForNewWindow.java
160
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/DumpWindowHierarchy.java
161
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/HasSettingsMenuItem.java
162
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/InspectOptionInSettingsMenu.java
163
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsButtonPresent.java
164
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsChildCountEqualTo.java
165
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsElementWithNestedTextPresent.java
166
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsOptionInSettingsMenuDisabled.java
167
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsOptionInSettingsMenuEnabled.java
168
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/IsTextPresent.java
169
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/LaunchApp.java
170
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/LaunchHome.java
171
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/LongClick.java
172
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/PressBack.java
173
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/PressEnter.java
174
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/SelectFromAppsList.java
175
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/SelectMenuInSettings.java
176
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/SetText.java
177
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/SetTextByIndex.java
178
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/SetTextByLabel.java
179
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/Unlock.java
180
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/actions/WakeUp.java
181
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/httpd/NanoHTTPD.java
182
+ - android-server/src/main/java/com/uiautomator_cucumber/android_server/httpd/RemoteCommandReceiver.java
183
+ - example/Gemfile
184
+ - example/Rakefile
185
+ - example/features/example.feature
186
+ - example/features/step_definitions/honeydew_steps.rb
187
+ - example/features/support/hooks.rb
188
+ - honeydew.gemspec
189
+ - honeydew.iml
190
+ - lib/honeydew.rb
191
+ - lib/honeydew/cucumber.rb
192
+ - lib/honeydew/device.rb
193
+ - lib/honeydew/device_actions.rb
194
+ - lib/honeydew/device_commands.rb
195
+ - lib/honeydew/device_matchers.rb
196
+ - lib/honeydew/dsl.rb
197
+ - lib/honeydew/hooks.rb
198
+ - lib/honeydew/step_definitions.rb
199
+ - lib/honeydew/version.rb
200
+ - lib/tasks/honeydew.rake
201
+ - spec/honeydew/device_matchers_spec.rb
202
+ - spec/honeydew/device_spec.rb
203
+ - spec/spec_helper.rb
204
+ - todo.md
205
+ homepage: ''
206
+ licenses: []
207
+ post_install_message:
208
+ rdoc_options: []
209
+ require_paths:
210
+ - lib
211
+ required_ruby_version: !ruby/object:Gem::Requirement
212
+ none: false
213
+ requirements:
214
+ - - ! '>='
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ required_rubygems_version: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ! '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ requirements: []
224
+ rubyforge_project:
225
+ rubygems_version: 1.8.25
226
+ signing_key:
227
+ specification_version: 3
228
+ summary: Automated functional testing on Android with uiautomator and cucumber
229
+ test_files:
230
+ - spec/honeydew/device_matchers_spec.rb
231
+ - spec/honeydew/device_spec.rb
232
+ - spec/spec_helper.rb