zucchini-ios 0.7.2 → 0.7.3

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.
@@ -1,3 +1,9 @@
1
+ ## 0.7.3 / 2013-08-20
2
+ * Fix timing problems due to mechanic.js changing timeout to 0 - [@phatmann][]
3
+ * Fix: When using run -p, the orientation-specific masks are not used - [@phatmann][], [#36][]
4
+ * Fix: Tapping an element shows "(null).tap()" in the log - [@phatmann][], [#37][]
5
+ * Ignore error-based UIAutomation screenshots - [@phatmann], [#38][]
6
+
1
7
  ## 0.7.2 / 2013-08-19
2
8
  * Implement orientation specific masks - [@phatmann][], [#34][]
3
9
  * Archivable HTML reports - [@vaskas][], [#33][]
@@ -72,6 +78,9 @@
72
78
  [#32]: https://github.com/zucchini-src/zucchini/issues/32
73
79
  [#33]: https://github.com/zucchini-src/zucchini/issues/33
74
80
  [#34]: https://github.com/zucchini-src/zucchini/issues/34
81
+ [#36]: https://github.com/zucchini-src/zucchini/issues/36
82
+ [#37]: https://github.com/zucchini-src/zucchini/issues/37
83
+ [#38]: https://github.com/zucchini-src/zucchini/issues/38
75
84
 
76
85
  [@Jaco-Pretorius]: https://github.com/Jaco-Pretorius
77
86
  [@NathanSudell]: https://github.com/NathanSudell
@@ -36,16 +36,18 @@ class Zucchini::Feature
36
36
  end
37
37
 
38
38
  def screenshots(process = true)
39
- log = Zucchini::Log.new(run_path) if process && @screenshot_log_exists
39
+ log = Zucchini::Log.new(run_path) if process && Zucchini::Log.exists?(run_path)
40
40
 
41
41
  @screenshots ||= Dir.glob("#{run_path}/*.png").sort.map do |file|
42
+ next unless Zucchini::Screenshot.valid?(file)
43
+
42
44
  screenshot = Zucchini::Screenshot.new(file, @device, log)
43
45
  if process
44
46
  screenshot.mask
45
47
  screenshot.compare
46
48
  end
47
49
  screenshot
48
- end + unmatched_pending_screenshots
50
+ end.compact + unmatched_pending_screenshots
49
51
  end
50
52
 
51
53
  def stats
@@ -69,7 +71,7 @@ class Zucchini::Feature
69
71
  @js_exception = true if (out.match /JavaScript error/) || (out.match /Instruments\ .{0,5}\ Error\ :/ )
70
72
  ensure
71
73
  `rm -rf instrumentscli*.trace`
72
- @screenshot_log_exists = Zucchini::Log.parse_automation_log(run_path)
74
+ Zucchini::Log.parse_automation_log(run_path)
73
75
  end
74
76
  end
75
77
  end
@@ -6,15 +6,11 @@ class Zucchini::Log
6
6
  attr_reader :screenshot_log_path
7
7
 
8
8
  def initialize(path)
9
- @screenshot_log_path = File.join(path, YAML_FILE)
9
+ @screenshot_log_path = Zucchini::Log.screenshot_log_path(path)
10
10
  raise "Screenshot log not found at #{@screenshot_log_path}" unless File.exists?(@screenshot_log_path)
11
11
  @screenshots = File.open(@screenshot_log_path, 'r') { |f| YAML.load(f) }
12
12
  end
13
13
 
14
- def exists?
15
- @screenshots != nil
16
- end
17
-
18
14
  def screenshot_metadata(sequence_number)
19
15
  raise "Invalid screenshot sequence number #{sequence_number}" if sequence_number > @screenshots.size
20
16
  @screenshots[sequence_number - 1]
@@ -54,6 +50,14 @@ class Zucchini::Log
54
50
  false
55
51
  end
56
52
  end
53
+
54
+ def self.exists?(path)
55
+ File.exists?(screenshot_log_path(path))
56
+ end
57
+
58
+ def self.screenshot_log_path(path)
59
+ File.join(path, YAML_FILE)
60
+ end
57
61
  end
58
62
 
59
63
 
@@ -104,6 +104,10 @@ class Zucchini::Screenshot
104
104
  end
105
105
  end
106
106
 
107
+ def self.valid?(file_path)
108
+ FILE_NAME_PATTERN =~ File.basename(file_path)
109
+ end
110
+
107
111
  private
108
112
  def mask_path(path)
109
113
  suffix = case @orientation
@@ -148,7 +148,7 @@ var mechanic = (function() {
148
148
  };
149
149
 
150
150
  UIAElement.prototype.getElementsByAttr = function(attr, value) {
151
- return $.map(this.elements().toArray(), function(el) {
151
+ return $.map(this.elements(), function(el) {
152
152
  var matches = el.getElementsByAttr(attr, value),
153
153
  val = el[attr]
154
154
  if (typeof val == 'function') val = val.apply(el)
@@ -158,7 +158,7 @@ var mechanic = (function() {
158
158
  })
159
159
  }
160
160
  UIAElement.prototype.getElementsByType = function(type) {
161
- return $.map(this.elements().toArray(), function(el) {
161
+ return $.map(this.elements(), function(el) {
162
162
  var matches = el.getElementsByType(type);
163
163
  if (el.isType(type)) matches.unshift(el);
164
164
  return matches;
@@ -15,7 +15,7 @@ raise = (message) -> throw new Error(message)
15
15
  # Handle both cases
16
16
  _elementFrom = (finder) ->
17
17
  res = finder()
18
- res = res[0] if (typeof res.length is 'number')
18
+ res = res[0] if res and typeof res.length is 'number'
19
19
  res
20
20
 
21
21
  # Execute a finder function until the element appears
@@ -24,14 +24,15 @@ wait = (finder) ->
24
24
  counter = 0
25
25
  element = null
26
26
 
27
- while not found and (counter < 10)
27
+ while not found and counter < 10
28
28
  element = _elementFrom finder
29
29
 
30
- if element? and element.isValid() and element.isVisible()
30
+ if element? and element.checkIsValid() and element.isVisible()
31
31
  found = true
32
32
  else
33
33
  target.delay 0.5
34
34
  counter++
35
+
35
36
  if found then element else false
36
37
 
37
38
  rotateTo = (orientation) ->
@@ -38,8 +38,7 @@ class Screen
38
38
  'Wait for "([^"]*)" second[s]*$': (seconds) -> target.delay(seconds)
39
39
 
40
40
  'Type "([^"]*)" in the "([^"]*)" field$': (text, name) ->
41
- @element(name).tap()
42
- app.keyboard().typeString text
41
+ $(@element(name)).input(text)
43
42
 
44
43
  'Clear the "([^"]*)" field$': (name) -> @element(name).setValue ''
45
44
 
@@ -1,3 +1,3 @@
1
1
  module Zucchini
2
- VERSION = "0.7.2"
2
+ VERSION = "0.7.3"
3
3
  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.7.2
4
+ version: 0.7.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-18 00:00:00.000000000 Z
12
+ date: 2013-08-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: clamp
@@ -170,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
170
  version: '0'
171
171
  segments:
172
172
  - 0
173
- hash: 3231635061301993483
173
+ hash: 2982676141383125946
174
174
  requirements: []
175
175
  rubyforge_project:
176
176
  rubygems_version: 1.8.23