eyes_selenium 2.16.0 → 2.17.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.
@@ -2,6 +2,8 @@ require 'oily_png'
2
2
  require 'base64'
3
3
 
4
4
  module Applitools::Utils
5
+ QUADRANTS_COUNT = 4.freeze
6
+
5
7
  module ImageUtils
6
8
  extend self
7
9
 
@@ -52,9 +54,40 @@ module Applitools::Utils
52
54
  # and negative values are used for counter-clockwise rotation.
53
55
  #
54
56
  def quadrant_rotate!(image, num_quadrants)
55
- image.tap do |img|
56
- rotate_method = num_quadrants > 0 ? img.method(:rotate_right!) : img.method(:rotate_left!)
57
- (0..(num_quadrants.abs - 1)).each { rotate_method.call }
57
+ num_quadrants %= QUADRANTS_COUNT
58
+
59
+ case num_quadrants
60
+ when 0
61
+ image
62
+ when 1
63
+ image.rotate_right!
64
+ when 2
65
+ image.rotate_180!
66
+ when 3
67
+ image.rotate_left!
68
+ end
69
+ end
70
+
71
+ def scale!(image, factor)
72
+ image.resample_nearest_neighbor!(image.width.to_f * factor, image.height.to_f * factor)
73
+ end
74
+
75
+ def stitch_images(size, images_data)
76
+ ChunkyPNG::Image.new(size.width, size.height, ChunkyPNG::Color::TRANSPARENT).tap do |res|
77
+ images_data.each do |image_data|
78
+ # Crop out of bounds images.
79
+ image = image_data.image
80
+ position = image_data.position
81
+
82
+ new_width = position.left + image.width > size.width ? size.width - position.left : image.width
83
+ new_height = position.top + image.height > size.height ? size.height - position.top : image.height
84
+
85
+ if new_width != image.width || new_height != image.height
86
+ image = image.crop(0, 0, new_width, new_height)
87
+ end
88
+
89
+ res.compose!(image, position.left, position.top)
90
+ end
58
91
  end
59
92
  end
60
93
 
@@ -4,7 +4,7 @@ module Applitools::Utils
4
4
  extend self
5
5
 
6
6
  def underscore(str)
7
- str.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').gsub(/([a-z\d])([A-Z])/,'\1_\2').tr('-', '_').downcase
7
+ str.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').gsub(/([a-z\d])([A-Z])/, '\1_\2').tr('-', '_').downcase
8
8
  end
9
9
 
10
10
  def uncapitalize(str)
@@ -39,14 +39,11 @@ module Applitools::Utils
39
39
  def convert_hash_keys(value, method)
40
40
  case value
41
41
  when Array
42
- value.map {|v| convert_hash_keys(v, method) }
42
+ value.map { |v| convert_hash_keys(v, method) }
43
43
  when Hash
44
- Hash[value.map {|k, v| [send(method, k.to_s).to_sym,
45
- convert_hash_keys(v, method)]}]
44
+ Hash[value.map { |k, v| [send(method, k.to_s).to_sym, convert_hash_keys(v, method)] }]
46
45
  else
47
46
  value
48
47
  end
49
48
  end
50
49
  end
51
-
52
-
@@ -1,3 +1,3 @@
1
1
  module Applitools
2
- VERSION = '2.16.0'.freeze
2
+ VERSION = '2.17.0'.freeze
3
3
  end
data/lib/eyes_selenium.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  module Applitools
2
2
  ROOT_DIR = File.join(File.dirname(File.expand_path(__FILE__)), 'applitools').freeze
3
3
 
4
- Dir["#{ROOT_DIR}/*.rb"].each {|f| require f}
5
- Dir["#{ROOT_DIR}/**/*.rb"].each {|f| require f}
4
+ Dir["#{ROOT_DIR}/*.rb"].each { |f| require f }
5
+ Dir["#{ROOT_DIR}/**/*.rb"].each { |f| require f }
6
6
 
7
7
  class EyesError < StandardError; end
8
8
  class EyesAbort < EyesError; end
@@ -9,7 +9,7 @@ describe 'passthrough methods' do
9
9
  eyes.api_key = 'dummy_key'
10
10
 
11
11
  @driver = eyes.open(app_name: 'Specs', test_name: example.metadata[:full_description],
12
- viewport_size: {width: 800, height: 600}, driver: web_driver)
12
+ viewport_size: { width: 800, height: 600 }, driver: web_driver)
13
13
  @driver.get static_file
14
14
  end
15
15
 
data/spec/spec_helper.rb CHANGED
@@ -3,11 +3,11 @@ require 'eyes_selenium'
3
3
  RSpec.configure do |config|
4
4
  config.before do
5
5
  allow_any_instance_of(Applitools::Base::ServerConnector).to receive(:start_session) do
6
- Applitools::Base::Session.new('dummy_id', 'dummy_url', true )
6
+ Applitools::Base::Session.new('dummy_id', 'dummy_url', true)
7
7
  end
8
8
 
9
9
  allow_any_instance_of(Applitools::Base::ServerConnector).to receive(:stop_session) do
10
- Applitools::Base::TestResults.new()
10
+ Applitools::Base::TestResults.new
11
11
  end
12
12
 
13
13
  allow_any_instance_of(Applitools::Base::ServerConnector).to receive(:match_window) do
@@ -15,6 +15,3 @@ RSpec.configure do |config|
15
15
  end
16
16
  end
17
17
  end
18
-
19
-
20
-
@@ -7,31 +7,31 @@ require 'appium_lib'
7
7
 
8
8
  def android_caps
9
9
  {
10
- deviceName: 'Samsung Galaxy S4 Emulator',
11
- platformName: 'Android',
12
- platformVersion: 4.4,
13
- app: ENV['ANDROID_NOTES_LIST_APP'],
14
- appPackage: 'com.example.android.notepad',
15
- appActivity: '.NotesList',
16
- # orientation: 'landscape',
17
- newCommandTimeout: 300
10
+ deviceName: 'Samsung Galaxy S4 Emulator',
11
+ platformName: 'Android',
12
+ platformVersion: 4.4,
13
+ app: ENV['ANDROID_NOTES_LIST_APP'],
14
+ appPackage: 'com.example.android.notepad',
15
+ appActivity: '.NotesList',
16
+ # orientation: 'landscape',
17
+ newCommandTimeout: 300
18
18
  }
19
19
  end
20
20
 
21
21
  def ios_caps
22
22
  {
23
- deviceName: 'iPhone 6',
24
- platformName: 'ios',
25
- platformVersion: 8.3,
26
- app: ENV['IOS_DEMO_APP'],
27
- orientation: 'landscape',
28
- newCommandTimeout: 300
23
+ deviceName: 'iPhone 6',
24
+ platformName: 'ios',
25
+ platformVersion: 8.3,
26
+ app: ENV['IOS_DEMO_APP'],
27
+ orientation: 'landscape',
28
+ newCommandTimeout: 300
29
29
  }
30
30
  end
31
31
 
32
32
  def appium_opts
33
33
  {
34
- server_url: 'http://127.0.0.1:4723/wd/hub',
34
+ server_url: 'http://127.0.0.1:4723/wd/hub'
35
35
  }
36
36
  end
37
37
 
data/test/test_script.rb CHANGED
@@ -9,7 +9,7 @@ eyes.log_handler = Logger.new(STDOUT)
9
9
  begin
10
10
  web_driver = Selenium::WebDriver.for :chrome
11
11
 
12
- eyes.test(app_name: 'Ruby SDK', test_name: 'Applitools website test', viewport_size: {width: 900, height: 600},
12
+ eyes.test(app_name: 'Ruby SDK', test_name: 'Applitools website test', viewport_size: { width: 900, height: 600 },
13
13
  driver: web_driver) do |driver|
14
14
  driver.get 'http://www.applitools.com'
15
15
  eyes.check_window('initial')
@@ -10,7 +10,7 @@ eyes.log_handler = Logger.new(STDOUT)
10
10
  browser = Watir::Browser.new
11
11
 
12
12
  begin
13
- eyes.test(app_name: 'Ruby SDK', test_name: 'Applitools website test', viewport_size: {width: 900, height: 600},
13
+ eyes.test(app_name: 'Ruby SDK', test_name: 'Applitools website test', viewport_size: { width: 900, height: 600 },
14
14
  driver: browser) do |driver|
15
15
  driver.get 'http://www.applitools.com'
16
16
  eyes.check_window('initial')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eyes_selenium
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.16.0
4
+ version: 2.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Applitools Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-20 00:00:00.000000000 Z
11
+ date: 2015-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '1.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '1.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: pry
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -201,6 +215,7 @@ extra_rdoc_files: []
201
215
  files:
202
216
  - ".gitignore"
203
217
  - ".rspec"
218
+ - ".rubocop.yml"
204
219
  - ".travis.yml"
205
220
  - Gemfile
206
221
  - LICENSE.txt
@@ -211,6 +226,7 @@ files:
211
226
  - lib/applitools/base/batch_info.rb
212
227
  - lib/applitools/base/dimension.rb
213
228
  - lib/applitools/base/environment.rb
229
+ - lib/applitools/base/image_position.rb
214
230
  - lib/applitools/base/mouse_trigger.rb
215
231
  - lib/applitools/base/point.rb
216
232
  - lib/applitools/base/region.rb
@@ -219,9 +235,11 @@ files:
219
235
  - lib/applitools/base/start_info.rb
220
236
  - lib/applitools/base/test_results.rb
221
237
  - lib/applitools/base/text_trigger.rb
238
+ - lib/applitools/extensions.rb
222
239
  - lib/applitools/eyes.rb
223
240
  - lib/applitools/eyes_logger.rb
224
241
  - lib/applitools/method_tracer.rb
242
+ - lib/applitools/selenium/browser.rb
225
243
  - lib/applitools/selenium/driver.rb
226
244
  - lib/applitools/selenium/element.rb
227
245
  - lib/applitools/selenium/keyboard.rb
@@ -271,3 +289,4 @@ test_files:
271
289
  - test/appium_example_script.rb
272
290
  - test/test_script.rb
273
291
  - test/watir_test_script.rb
292
+ has_rdoc: