zucchini-ios 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. data/.gitignore +17 -1
  2. data/CHANGELOG.md +28 -15
  3. data/README.md +23 -19
  4. data/Rakefile +1 -0
  5. data/bin/zucchini +4 -11
  6. data/lib/zucchini.rb +12 -0
  7. data/lib/{approver.rb → zucchini/approver.rb} +0 -0
  8. data/lib/{config.rb → zucchini/config.rb} +0 -0
  9. data/lib/{detector.rb → zucchini/detector.rb} +0 -0
  10. data/lib/{feature.rb → zucchini/feature.rb} +25 -22
  11. data/lib/{generator.rb → zucchini/generator.rb} +5 -5
  12. data/lib/{report.rb → zucchini/report.rb} +3 -4
  13. data/lib/zucchini/report/css/zucchini.report.css +241 -0
  14. data/lib/{report → zucchini/report}/js/jquery.effects.core.js +0 -0
  15. data/lib/{report → zucchini/report}/js/jquery.js +0 -0
  16. data/lib/{report → zucchini/report}/js/jquery.ui.core.js +0 -0
  17. data/lib/zucchini/report/js/zucchini.report.js +59 -0
  18. data/lib/zucchini/report/template.erb.html +47 -0
  19. data/lib/{report → zucchini/report}/view.rb +0 -0
  20. data/lib/{runner.rb → zucchini/runner.rb} +0 -0
  21. data/lib/{screenshot.rb → zucchini/screenshot.rb} +77 -30
  22. data/lib/{uia → zucchini/uia}/base.coffee +0 -1
  23. data/lib/{uia → zucchini/uia}/screen.coffee +5 -4
  24. data/lib/{version.rb → zucchini/version.rb} +1 -1
  25. data/spec/lib/{config_spec.rb → zucchini/config_spec.rb} +0 -0
  26. data/spec/lib/{detector_spec.rb → zucchini/detector_spec.rb} +0 -0
  27. data/spec/lib/{feature_spec.rb → zucchini/feature_spec.rb} +0 -0
  28. data/spec/lib/{generator_spec.rb → zucchini/generator_spec.rb} +0 -0
  29. data/spec/lib/{report_spec.rb → zucchini/report_spec.rb} +0 -0
  30. data/spec/lib/zucchini/screenshot_spec.rb +164 -0
  31. data/spec/sample_setup/feature_one/run_data/Run 1/06_sign up_spinner.png b/data/spec/sample_setup/feature_one/run_data/Run 1/06_splash-screen_sign → up_spinner.png +0 -0
  32. data/spec/sample_setup/support/masks/splash.png +0 -0
  33. data/spec/spec_helper.rb +14 -10
  34. data/zucchini-ios.gemspec +8 -9
  35. metadata +58 -36
  36. data/lib/report/css/zucchini.report.css +0 -239
  37. data/lib/report/js/zucchini.report.js +0 -59
  38. data/lib/report/template.erb +0 -47
  39. data/spec/lib/screenshot_spec.rb +0 -109
@@ -1,18 +1,22 @@
1
+ require 'coveralls'
2
+ require 'simplecov'
3
+
4
+ if ENV['COVERAGE'] == 'coveralls'
5
+ Coveralls.wear!
6
+ else
7
+ SimpleCov.start do
8
+ add_filter "/spec/"
9
+ end
10
+ end
11
+
1
12
  require 'clamp'
2
13
  require 'fileutils'
3
14
 
4
- $LOAD_PATH << File.expand_path("#{File.dirname(__FILE__)}/..")
5
- require 'lib/config'
6
- require 'lib/screenshot'
7
- require 'lib/report'
8
- require 'lib/feature'
9
- require 'lib/detector'
10
- require 'lib/runner'
11
- require 'lib/generator'
12
- require 'lib/approver'
15
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..'))
16
+ require 'lib/zucchini'
13
17
 
14
18
  RSpec.configure do |config|
15
19
  config.color_enabled = true
16
20
  config.tty = true
17
- #config.formatter = :documentation
21
+ config.formatter = :doc
18
22
  end
@@ -1,13 +1,11 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require 'version'
4
- require 'date'
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'zucchini/version'
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "zucchini-ios"
8
8
  s.version = Zucchini::VERSION
9
- s.date = Date.today.to_s
10
- s.platform = Gem::Platform::RUBY
11
9
  s.authors = ["Vasily Mikhaylichenko", "Rajesh Kumar", "Kevin O'Neill"]
12
10
  s.license = "BSD"
13
11
  s.email = ["vaskas@zucchiniframework.org"]
@@ -15,14 +13,15 @@ Gem::Specification.new do |s|
15
13
  s.summary = %q{Functional testing framework for iOS-powered devices}
16
14
  s.description = %q{Zucchini follows simple walkthrough scenarios for your iOS app, takes screenshots and compares them to the reference ones.}
17
15
 
18
- s.add_runtime_dependency "clamp"
19
- s.add_development_dependency "rspec"
20
- s.add_development_dependency "watchr"
16
+ s.add_runtime_dependency 'clamp'
17
+ s.add_development_dependency 'rspec'
18
+ s.add_development_dependency 'simplecov'
19
+ s.add_development_dependency 'coveralls'
21
20
 
22
21
  s.files = `git ls-files | grep -vE '(web|.watchr)'`.split("\n")
23
22
  s.test_files = `git ls-files -- spec/*`.split("\n")
24
23
  s.executables = %w(zucchini)
25
24
  s.require_paths = ["lib"]
26
25
 
27
- s.required_ruby_version = '>= 1.9.2'
26
+ s.required_ruby_version = '>= 1.9.3'
28
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zucchini-ios
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-07-28 00:00:00.000000000 Z
14
+ date: 2013-08-07 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: clamp
@@ -46,7 +46,23 @@ dependencies:
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  - !ruby/object:Gem::Dependency
49
- name: watchr
49
+ name: simplecov
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ - !ruby/object:Gem::Dependency
65
+ name: coveralls
50
66
  requirement: !ruby/object:Gem::Requirement
51
67
  none: false
52
68
  requirements:
@@ -78,30 +94,31 @@ files:
78
94
  - README.md
79
95
  - Rakefile
80
96
  - bin/zucchini
81
- - lib/approver.rb
82
- - lib/config.rb
83
- - lib/detector.rb
84
- - lib/feature.rb
85
- - lib/generator.rb
86
- - lib/report.rb
87
- - lib/report/css/zucchini.report.css
88
- - lib/report/js/jquery.effects.core.js
89
- - lib/report/js/jquery.js
90
- - lib/report/js/jquery.ui.core.js
91
- - lib/report/js/zucchini.report.js
92
- - lib/report/template.erb
93
- - lib/report/view.rb
94
- - lib/runner.rb
95
- - lib/screenshot.rb
96
- - lib/uia/base.coffee
97
- - lib/uia/screen.coffee
98
- - lib/version.rb
99
- - spec/lib/config_spec.rb
100
- - spec/lib/detector_spec.rb
101
- - spec/lib/feature_spec.rb
102
- - spec/lib/generator_spec.rb
103
- - spec/lib/report_spec.rb
104
- - spec/lib/screenshot_spec.rb
97
+ - lib/zucchini.rb
98
+ - lib/zucchini/approver.rb
99
+ - lib/zucchini/config.rb
100
+ - lib/zucchini/detector.rb
101
+ - lib/zucchini/feature.rb
102
+ - lib/zucchini/generator.rb
103
+ - lib/zucchini/report.rb
104
+ - lib/zucchini/report/css/zucchini.report.css
105
+ - lib/zucchini/report/js/jquery.effects.core.js
106
+ - lib/zucchini/report/js/jquery.js
107
+ - lib/zucchini/report/js/jquery.ui.core.js
108
+ - lib/zucchini/report/js/zucchini.report.js
109
+ - lib/zucchini/report/template.erb.html
110
+ - lib/zucchini/report/view.rb
111
+ - lib/zucchini/runner.rb
112
+ - lib/zucchini/screenshot.rb
113
+ - lib/zucchini/uia/base.coffee
114
+ - lib/zucchini/uia/screen.coffee
115
+ - lib/zucchini/version.rb
116
+ - spec/lib/zucchini/config_spec.rb
117
+ - spec/lib/zucchini/detector_spec.rb
118
+ - spec/lib/zucchini/feature_spec.rb
119
+ - spec/lib/zucchini/generator_spec.rb
120
+ - spec/lib/zucchini/report_spec.rb
121
+ - spec/lib/zucchini/screenshot_spec.rb
105
122
  - spec/sample_screenshots/01_LandscapeLeft_Screenshot.png
106
123
  - spec/sample_screenshots/02_LandscapeRight_Screenshot.png
107
124
  - spec/sample_screenshots/03_PortraitUpsideDown_Screenshot.png
@@ -109,7 +126,7 @@ files:
109
126
  - spec/sample_setup/feature_one/masks/retina_ios5/06_sign up_spinner.png
110
127
  - spec/sample_setup/feature_one/reference/retina_ios5/06_sign up_spinner.png
111
128
  - spec/sample_setup/feature_one/reference/retina_ios5/06_sign up_spinner_error.png
112
- - spec/sample_setup/feature_one/run_data/Run 1/06_sign up_spinner.png
129
+ - spec/sample_setup/feature_one/run_data/Run 1/06_splash-screen_sign up_spinner.png
113
130
  - spec/sample_setup/feature_three/feature.zucchini
114
131
  - spec/sample_setup/feature_two/feature.zucchini
115
132
  - spec/sample_setup/feature_two/masks/retina_ios5/06_sign up_spinner.png
@@ -119,6 +136,7 @@ files:
119
136
  - spec/sample_setup/support/config.yml
120
137
  - spec/sample_setup/support/lib/helpers.coffee
121
138
  - spec/sample_setup/support/masks/retina_ios5.png
139
+ - spec/sample_setup/support/masks/splash.png
122
140
  - spec/sample_setup/support/screens/splash.coffee
123
141
  - spec/sample_setup_2/support/config.yml
124
142
  - spec/sample_setup_3/support/config.yml
@@ -149,13 +167,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
167
  requirements:
150
168
  - - ! '>='
151
169
  - !ruby/object:Gem::Version
152
- version: 1.9.2
170
+ version: 1.9.3
153
171
  required_rubygems_version: !ruby/object:Gem::Requirement
154
172
  none: false
155
173
  requirements:
156
174
  - - ! '>='
157
175
  - !ruby/object:Gem::Version
158
176
  version: '0'
177
+ segments:
178
+ - 0
179
+ hash: -2489194857369851293
159
180
  requirements: []
160
181
  rubyforge_project:
161
182
  rubygems_version: 1.8.23
@@ -163,12 +184,12 @@ signing_key:
163
184
  specification_version: 3
164
185
  summary: Functional testing framework for iOS-powered devices
165
186
  test_files:
166
- - spec/lib/config_spec.rb
167
- - spec/lib/detector_spec.rb
168
- - spec/lib/feature_spec.rb
169
- - spec/lib/generator_spec.rb
170
- - spec/lib/report_spec.rb
171
- - spec/lib/screenshot_spec.rb
187
+ - spec/lib/zucchini/config_spec.rb
188
+ - spec/lib/zucchini/detector_spec.rb
189
+ - spec/lib/zucchini/feature_spec.rb
190
+ - spec/lib/zucchini/generator_spec.rb
191
+ - spec/lib/zucchini/report_spec.rb
192
+ - spec/lib/zucchini/screenshot_spec.rb
172
193
  - spec/sample_screenshots/01_LandscapeLeft_Screenshot.png
173
194
  - spec/sample_screenshots/02_LandscapeRight_Screenshot.png
174
195
  - spec/sample_screenshots/03_PortraitUpsideDown_Screenshot.png
@@ -176,7 +197,7 @@ test_files:
176
197
  - spec/sample_setup/feature_one/masks/retina_ios5/06_sign up_spinner.png
177
198
  - spec/sample_setup/feature_one/reference/retina_ios5/06_sign up_spinner.png
178
199
  - spec/sample_setup/feature_one/reference/retina_ios5/06_sign up_spinner_error.png
179
- - spec/sample_setup/feature_one/run_data/Run 1/06_sign up_spinner.png
200
+ - spec/sample_setup/feature_one/run_data/Run 1/06_splash-screen_sign up_spinner.png
180
201
  - spec/sample_setup/feature_three/feature.zucchini
181
202
  - spec/sample_setup/feature_two/feature.zucchini
182
203
  - spec/sample_setup/feature_two/masks/retina_ios5/06_sign up_spinner.png
@@ -186,6 +207,7 @@ test_files:
186
207
  - spec/sample_setup/support/config.yml
187
208
  - spec/sample_setup/support/lib/helpers.coffee
188
209
  - spec/sample_setup/support/masks/retina_ios5.png
210
+ - spec/sample_setup/support/masks/splash.png
189
211
  - spec/sample_setup/support/screens/splash.coffee
190
212
  - spec/sample_setup_2/support/config.yml
191
213
  - spec/sample_setup_3/support/config.yml
@@ -1,239 +0,0 @@
1
- html {
2
- font-family: Myriad Pro, sans-serif;
3
- }
4
- body {
5
- margin: 0;
6
- }
7
- tr {
8
- text-align: center;
9
- }
10
- td {
11
- padding: 2px;
12
- }
13
- dl {
14
- -webkit-margin-before: 0;
15
- }
16
- dd {
17
- -webkit-margin-start: 0;
18
- }
19
- h1 {
20
- margin: 16px;
21
- font-weight: normal;
22
- font-size: 24px;
23
- }
24
- h1 .time {
25
- margin-left: 10px;
26
- opacity: 0.5;
27
- }
28
- h3 {
29
- margin: 0 0 6px 4px;
30
- font-size: 24px;
31
- width: 763px;
32
- padding: 0;
33
- float: left;
34
- text-shadow: 1px 1px 1px white;
35
- }
36
- .indicators {
37
- font-size: 12px;
38
- width: 92px;
39
- float: left;
40
- margin: 5px 28px 5px 0;
41
- -webkit-transition: all 0.1s ease-in-out;
42
- }
43
- .indicators div {
44
- border-radius: 8px;
45
- padding: 3px 8px;
46
- margin-right: 5px;
47
- float: right;
48
- color: #FFF;
49
- opacity: 0.8;
50
- height: 11px;
51
- line-height: 11px;
52
- font-weight: bold;
53
- }
54
- .indicators div:hover {
55
- -webkit-transition:opacity 0.3s ease-in-out;
56
- }
57
- .indicators .passed {
58
- background: #65C400;
59
- }
60
- .indicators .failed {
61
- background: #C20000;
62
- }
63
- .indicators .pending {
64
- background: #F9E934;
65
- color: #000;
66
- }
67
- .feature {
68
- padding: 10px 9px 4px 9px;
69
- border-radius: 5px;
70
- width: 1012px;
71
- margin: 15px 15px 24px 15px;
72
- box-shadow: 0 0 4px rgba(0,0,0,0.2);
73
- }
74
- .ci .feature {
75
- display: none;
76
- }
77
- .ci .first.feature {
78
- display: block;
79
- }
80
- .buttons {
81
- float: left;
82
- width: 125px;
83
- display: block;
84
- }
85
- .ci .buttons {
86
- display: none;
87
- }
88
- .buttons a {
89
- text-align: center;
90
- width: 70px;
91
- color: #484848;
92
- text-decoration: none;
93
- text-shadow: 0 1px 0 white;
94
- font: bold 12px Helvetica, Arial, sans-serif;
95
- margin-bottom: 6px;
96
- line-height: 26px;
97
- height: 25px;
98
- display: block;
99
- float: left;
100
- padding: 0 5px;
101
- background: -webkit-linear-gradient(top, #F4F4F4, #ECECEC);
102
- border: solid 1px #D4D4D4;
103
- border-radius: 5px;
104
- box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
105
- -webkit-transition: border-color .218s;
106
- cursor: pointer;
107
- }
108
- .buttons a.left {
109
- border-radius: 5px 0 0 5px;
110
- width: 50px;
111
- float: left;
112
- margin: 0;
113
- }
114
- .buttons a.right {
115
- border-radius: 0 5px 5px 0;
116
- width: 50px;
117
- float: left;
118
- position: relative;
119
- left: -1px;
120
- margin: 0;
121
- }
122
- .buttons a:hover {
123
- border: solid 1px #7f7f7f;
124
- color: #282828;
125
- background: -webkit-linear-gradient(top, #ffffff, #dfdfdf);
126
- }
127
- .buttons a:active {
128
- border: solid 1px #7f7f7f;
129
- background: #d0d0d0;
130
- background: -webkit-gradient(linear, left top, left bottom, from(#a8a8a8), color-stop(0.15, #c6c6c6), to(#d8d8d8));
131
- background: -webkit-linear-gradient(top, #a8a8a8, #c6c6c6 15%, #d8d8d8);
132
- }
133
-
134
- .screen {
135
- -webkit-transition:all 0.2s ease-in-out;
136
- width: 990px;
137
- height: 15px;
138
- padding: 5px 0 5px 9px;
139
- margin-bottom: 6px;
140
- border-radius: 5px;
141
- cursor: pointer;
142
- overflow: hidden;
143
- }
144
- .screen.passed {
145
- color: #65C400;
146
- background-color: #DBFFB4;
147
- border: 1px #65C400 solid;
148
- border-left: 10px #65C400 solid;
149
- }
150
- .screen.passed img {
151
- box-shadow: 0px 0px 4px #65C400;
152
- }
153
- .screen.failed {
154
- color: #C20000;
155
- background-color: #FFD6D6;
156
- border: 1px #C20000 solid;
157
- border-left: 10px #C20000 solid;
158
- }
159
- .screen.failed img {
160
- box-shadow: 0px 0px 4px #C20000;
161
- }
162
- .screen.pending {
163
- color: #F2CF32;
164
- background-color: #FFFDBC;
165
- border: 1px solid #F9E934;
166
- border-left: 10px solid #F9E934;
167
- }
168
- .screen.pending img {
169
- box-shadow: 0px 0px 4px #F9E934;
170
- }
171
- .screen dt {
172
- color: #000;
173
- font-size: 13px;
174
- line-height: 17px;
175
- margin: 0;
176
- font-weight: normal;
177
- }
178
- .ci .screen dt {
179
- position: relative;
180
- z-index: 2;
181
- }
182
- .screen dd {
183
- float: left;
184
- margin-right: 10px;
185
- -webkit-transition:all 0.3s ease-in-out;
186
- opacity: 0;
187
- position: relative;
188
- top: -30px;
189
- }
190
- .screen dd.hidden {
191
- visibility: hidden;
192
- }
193
- .screen.expanded, .ci .screen {
194
- -webkit-transition:all 0.2s ease-in-out;
195
- height: 510px;
196
- }
197
- .screen.expanded dd, .ci .screen dd {
198
- opacity: 1.0;
199
- -webkit-transition:all 0.3s ease-in-out;
200
- }
201
- .screen p {
202
- margin-bottom: -3px;
203
- padding: 5px;
204
- font-size: 13px;
205
- text-align: center;
206
- font-weight: bold;
207
- background-color: rgba(255, 255, 255, 0.5);;
208
- border-radius: 5px;
209
- opacity: 0.0;
210
- position: relative;
211
- z-index: 0;
212
- }
213
- .screen dd:hover p {
214
- opacity: 1.0;
215
- }
216
- .ci .screen dd p {
217
- opacity: 1.0;
218
- background: transparent;
219
- }
220
- .screen img {
221
- width: 320px;
222
- height: 480px;
223
- position: relative;
224
- }
225
- .ci .viewport {
226
- width: 1018px;
227
- height: 530px;
228
- overflow: scroll;
229
- }
230
- .ci .surface {
231
- height: 530px;
232
- width: 100000px;
233
- position: relative;
234
- }
235
- .ci .surface .screen {
236
- float: left;
237
- margin-right: 10px;
238
- position: relative;
239
- }