brazenhead 0.4.6 → 0.4.7
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.
- checksums.yaml +15 -0
- data/driver/brazenhead-release-unsigned.apk +0 -0
- data/features/brazenhead_target.feature +21 -0
- data/features/step_definitions/brazenhead_target_steps.rb +31 -0
- data/features/support/ApiDemos.apk +0 -0
- data/features/support/debug.keystore +0 -0
- data/features/support/navigation.rb +9 -0
- data/lib/brazenhead/builder.rb +1 -0
- data/lib/brazenhead/server.rb +5 -1
- data/lib/brazenhead/version.rb +1 -1
- data/spec/lib/brazenhead/builder_spec.rb +10 -0
- data/spec/lib/brazenhead/server_spec.rb +8 -1
- data/spec/spec_helper.rb +2 -0
- metadata +5 -21
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NmRlNjg3ZTMyMDg1NmQxZjFhZTljZDc0OGVjNWQxYjY3MmIzMzA0MQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NTQ2ZmQ1ZTRhYjBjODQ1MTNkMmJkYWRmZmMwOTIzYjJhMzhlNDFlNA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MTMxMmI4ZjJjNDMyNGY2MGNiZTNlZTk1M2Q3NTc0M2JjOTI0MjcyY2YyODdk
|
10
|
+
OGU0OTVkNGJiNjJjMDVkMTgzZmVjNWU3ZmE0YjVmMTQzZDMzNjcxMTJjZTM0
|
11
|
+
ODQwOTI0OTFkZjM5NjEyNTZmZjg0MDIxYmMyOTdkZGEyOTI0NzY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZjYyZTI1YjE0ZWVjODIyNWY1MWZjNTIyNzgzZGUxYzllY2FhODI1NGQ4ODhk
|
14
|
+
NjRjZjVlNDUzYzYzYTM1NGM4YjljMzc0ZjI1Zjg0MTgwNmM4MDM5YTQxOTZh
|
15
|
+
Y2E2NmNlZmI0NmVhZWE2MzQ2NWJmZWJmZTQwYzA3ZDgzZTgyM2M=
|
Binary file
|
@@ -28,3 +28,24 @@ Feature: Using the Brazenhead target
|
|
28
28
|
When I'm on the lists screen
|
29
29
|
Then I can select list item "18" even if it is off of the screen
|
30
30
|
And I should see "Views.Lists.18. Custom items"
|
31
|
+
|
32
|
+
Scenario: Getting web views in different ways
|
33
|
+
When I'm on the web views screen
|
34
|
+
Then I should be able to find web views with these properties:
|
35
|
+
| property | value |
|
36
|
+
| id | home-feature |
|
37
|
+
| cssSelector | div.navsection |
|
38
|
+
| textContent | Mobile |
|
39
|
+
| tagName | div |
|
40
|
+
|
41
|
+
Scenario: Trying to get a web view in a way that cannot be got
|
42
|
+
When I'm on the web views screen
|
43
|
+
Then it should be clear why I cannot get a web view by "someInvalidManner"
|
44
|
+
|
45
|
+
Scenario: Simplifying how to get a Solo.By instance
|
46
|
+
Then I should be able to get a By instance via:
|
47
|
+
| how |
|
48
|
+
| id |
|
49
|
+
| cssSelector |
|
50
|
+
| textContent |
|
51
|
+
| tagName |
|
@@ -80,3 +80,34 @@ Then /^the text of the found list item should be "(.*?)"$/ do |text|
|
|
80
80
|
@driver.last_json['text'].should eq(text)
|
81
81
|
end
|
82
82
|
|
83
|
+
When(/^I'm on the web views screen$/) do
|
84
|
+
@navigation.web_views_screen
|
85
|
+
end
|
86
|
+
|
87
|
+
Then(/^I should be able to find web views with these properties:$/) do |web_properties_table|
|
88
|
+
sleep 5
|
89
|
+
web_properties_table.hashes.each do |row|
|
90
|
+
@driver.get_web_views_by row['property'], row['value'], :target => :Brazenhead
|
91
|
+
@driver.last_json.should_not be_empty, "Expected to find web views by '#{row['property']}' with '#{row['value']}' but found none"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
Then(/^it should be clear why I cannot get a web view by "([^"]*)"$/) do |invalid_manner|
|
96
|
+
begin
|
97
|
+
@driver.get_web_views_by(invalid_manner, 'no matter', :target => :Brazenhead)
|
98
|
+
rescue Exception => e
|
99
|
+
json = JSON.parse(e.message)
|
100
|
+
json['theCause']['errorMessage'].should eq("Unable to locate a WebView by \"#{invalid_manner}\"")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
Then(/^I should be able to get a By instance via:$/) do |by_how|
|
105
|
+
by_how.hashes.each do |row|
|
106
|
+
@driver.chain_calls do |device|
|
107
|
+
device.web_view_by row['how'], 'expected value', :target => :Brazenhead
|
108
|
+
device.get_value
|
109
|
+
end
|
110
|
+
@driver.last_json.should eq('expected value')
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
Binary file
|
Binary file
|
@@ -14,6 +14,11 @@ class Navigation
|
|
14
14
|
lists
|
15
15
|
end
|
16
16
|
|
17
|
+
def web_views_screen
|
18
|
+
views
|
19
|
+
web_views
|
20
|
+
end
|
21
|
+
|
17
22
|
def custom_lists_screen
|
18
23
|
lists_screen
|
19
24
|
custom_list_items
|
@@ -71,4 +76,8 @@ class Navigation
|
|
71
76
|
press_list_item(:text => 'ImageView')
|
72
77
|
end
|
73
78
|
|
79
|
+
def web_views
|
80
|
+
press_list_item(:text => 'WebView')
|
81
|
+
end
|
82
|
+
|
74
83
|
end
|
data/lib/brazenhead/builder.rb
CHANGED
@@ -56,6 +56,7 @@ module Brazenhead
|
|
56
56
|
|
57
57
|
def update_test_manifest
|
58
58
|
replace android_manifest, /\btargetPackage="[^"]+"/, "targetPackage=\"#{the_target}\""
|
59
|
+
replace android_manifest, /\bpackage="[^"]+"/, "package=\"#{the_target}.brazenhead\""
|
59
60
|
update_manifest test_apk, android_manifest, manifest_info.target_sdk
|
60
61
|
end
|
61
62
|
|
data/lib/brazenhead/server.rb
CHANGED
@@ -43,12 +43,16 @@ module Brazenhead
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def runner
|
46
|
-
"#{
|
46
|
+
"#{leandog_package}/#{leandog}.BrazenheadInstrumentation"
|
47
47
|
end
|
48
48
|
|
49
49
|
def leandog
|
50
50
|
'com.leandog.brazenhead'
|
51
51
|
end
|
52
52
|
|
53
|
+
def leandog_package
|
54
|
+
"#{their_package}.brazenhead"
|
55
|
+
end
|
56
|
+
|
53
57
|
end
|
54
58
|
end
|
data/lib/brazenhead/version.rb
CHANGED
@@ -85,6 +85,16 @@ describe Brazenhead::Builder do
|
|
85
85
|
server.build_for(apk, keystore)
|
86
86
|
end
|
87
87
|
|
88
|
+
it "should base our package off of theirs" do
|
89
|
+
the_target_package = "the.target.package"
|
90
|
+
File.should_receive(:read).and_return("ignore the first", "package=\"this.will.be.replaced\"")
|
91
|
+
manifest_info.should_receive(:package).and_return(the_target_package)
|
92
|
+
File.should_receive(:write).with("AndroidManifest.xml", "ignore the first")
|
93
|
+
|
94
|
+
File.should_receive(:write).with("AndroidManifest.xml", "package=\"#{the_target_package}.brazenhead\"")
|
95
|
+
server.build_for(apk, keystore)
|
96
|
+
end
|
97
|
+
|
88
98
|
it "should package the modified manifest back into the test package" do
|
89
99
|
manifest_info.should_receive(:target_sdk).and_return(10)
|
90
100
|
server.should_receive(:update_manifest).with("#{driver_apk}", "AndroidManifest.xml", 10)
|
@@ -50,13 +50,20 @@ describe Brazenhead::Server do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
context "instrumenting the application" do
|
53
|
-
let(:
|
53
|
+
let(:brazenhead_instrumentation) { 'com.leandog.brazenhead.BrazenheadInstrumentation' }
|
54
|
+
let(:runner) { "com.example.brazenhead/#{brazenhead_instrumentation}" }
|
54
55
|
|
55
56
|
it "should use the package from the target manifest" do
|
56
57
|
manifest.should_receive(:package)
|
57
58
|
server.start(activity)
|
58
59
|
end
|
59
60
|
|
61
|
+
it "should base our package off of theirs" do
|
62
|
+
manifest.stub(:package).and_return('com.their.package')
|
63
|
+
server.should_receive(:instrument).with("com.their.package.brazenhead/#{brazenhead_instrumentation}", anything)
|
64
|
+
server.start(activity)
|
65
|
+
end
|
66
|
+
|
60
67
|
it "should start instrumenting" do
|
61
68
|
expected = {:packageName => 'com.example', :fullLauncherName => 'com.example.SomeActivity', :class => 'com.leandog.brazenhead.TheTest'}
|
62
69
|
server.should_receive(:instrument).with(runner, expected)
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brazenhead
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.7
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jeffrey S. Morgan
|
@@ -10,12 +9,11 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2013-
|
12
|
+
date: 2013-06-08 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: childprocess
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
18
|
- - ! '>='
|
21
19
|
- !ruby/object:Gem::Version
|
@@ -23,7 +21,6 @@ dependencies:
|
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
25
|
- - ! '>='
|
29
26
|
- !ruby/object:Gem::Version
|
@@ -31,7 +28,6 @@ dependencies:
|
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: rspec
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
32
|
- - ! '>='
|
37
33
|
- !ruby/object:Gem::Version
|
@@ -39,7 +35,6 @@ dependencies:
|
|
39
35
|
type: :development
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
39
|
- - ! '>='
|
45
40
|
- !ruby/object:Gem::Version
|
@@ -47,7 +42,6 @@ dependencies:
|
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: cucumber
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
46
|
- - ! '>='
|
53
47
|
- !ruby/object:Gem::Version
|
@@ -55,7 +49,6 @@ dependencies:
|
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
53
|
- - ! '>='
|
61
54
|
- !ruby/object:Gem::Version
|
@@ -63,7 +56,6 @@ dependencies:
|
|
63
56
|
- !ruby/object:Gem::Dependency
|
64
57
|
name: ADB
|
65
58
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
59
|
requirements:
|
68
60
|
- - ! '>='
|
69
61
|
- !ruby/object:Gem::Version
|
@@ -71,7 +63,6 @@ dependencies:
|
|
71
63
|
type: :development
|
72
64
|
prerelease: false
|
73
65
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
66
|
requirements:
|
76
67
|
- - ! '>='
|
77
68
|
- !ruby/object:Gem::Version
|
@@ -128,33 +119,26 @@ files:
|
|
128
119
|
- driver/brazenhead-release-unsigned.apk
|
129
120
|
homepage: http://github.com/leandog/brazenhead
|
130
121
|
licenses: []
|
122
|
+
metadata: {}
|
131
123
|
post_install_message:
|
132
124
|
rdoc_options: []
|
133
125
|
require_paths:
|
134
126
|
- lib
|
135
127
|
required_ruby_version: !ruby/object:Gem::Requirement
|
136
|
-
none: false
|
137
128
|
requirements:
|
138
129
|
- - ! '>='
|
139
130
|
- !ruby/object:Gem::Version
|
140
131
|
version: '0'
|
141
|
-
segments:
|
142
|
-
- 0
|
143
|
-
hash: -1610332826201642605
|
144
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
133
|
requirements:
|
147
134
|
- - ! '>='
|
148
135
|
- !ruby/object:Gem::Version
|
149
136
|
version: '0'
|
150
|
-
segments:
|
151
|
-
- 0
|
152
|
-
hash: -1610332826201642605
|
153
137
|
requirements: []
|
154
138
|
rubyforge_project:
|
155
|
-
rubygems_version:
|
139
|
+
rubygems_version: 2.0.3
|
156
140
|
signing_key:
|
157
|
-
specification_version:
|
141
|
+
specification_version: 4
|
158
142
|
summary: Driver that accepts remote json requests and invokes methods inside Android
|
159
143
|
emulator / device.
|
160
144
|
test_files:
|