eyes_selenium 2.32.0 → 2.33.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dc57b143e0d3877d92cf53f89e53f58ea521db39
4
- data.tar.gz: 450452fc879ddc89f77e7089a0d8623b1f8bc81d
3
+ metadata.gz: 0761083944ac62eddd2754e25e1a99df2f552d42
4
+ data.tar.gz: 618d2ce2130371f1215290c33adf565b76435b4e
5
5
  SHA512:
6
- metadata.gz: d77c9ab86b00cb68b722358807c620517fbcfecb62fc102967ea6faafd9723704b19c2212c4f005e27bb965d7217059a05254d68f7cc7daef21676ac761515ab
7
- data.tar.gz: 33e5a22b2d4bff707f18e19cda2b4949b4aee9c154c90148887cb2b8918ec1659e6d5b8c9da9db9832ef7dd24183a45870659151a7c6a2c100b57c1964d69389
6
+ metadata.gz: e307d5656b5e228b5497b505f44ec611d9b58e6adb767b6142e8aafa8b302ac8432fc3decca3f219d235534a4056200ca49beb4f7ae152b8e3aeb7eb9a3ce3df
7
+ data.tar.gz: 9ce50824573c8e1508e3f9a1af24343730db7a6f0f96ed53238bc364a93c0aaba96d77df2b71be9a755d36782befca19aa5ece72dcd44e4b479618be405158e6
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_development_dependency 'bundler'
27
27
  spec.add_development_dependency 'rake'
28
+ spec.add_development_dependency 'capybara'
28
29
  spec.add_development_dependency 'rspec', '>= 3'
29
30
  spec.add_development_dependency 'watir-webdriver'
30
31
  spec.add_development_dependency 'appium_lib'
@@ -181,14 +181,10 @@ module Applitools::Selenium
181
181
 
182
182
  process_screenshot_part(screenshot_part, size_factor)
183
183
  end
184
-
185
184
  screenshot = Applitools::Utils::ImageUtils.stitch_images(page_size, parts)
186
185
  end
187
-
188
186
  set_transform(original_transform) if @eyes.use_css_transition
189
-
190
187
  scroll_to(original_scroll_position)
191
-
192
188
  screenshot
193
189
  end
194
190
 
@@ -40,7 +40,7 @@ module Applitools::Selenium
40
40
  @wait_before_screenshots = 0
41
41
  @eyes = eyes
42
42
  @browser = Applitools::Selenium::Browser.new(self, @eyes)
43
- Applitools::EyesLogger.warn '"takes_screenshot" capability not found.' unless driver.respond_to? :screenshot_as
43
+ Applitools::EyesLogger.warn '"screenshot_as" method not found!' unless driver.respond_to? :screenshot_as
44
44
  end
45
45
 
46
46
  # Returns:
@@ -100,7 +100,7 @@ module Applitools::Selenium
100
100
  Applitools::EyesLogger.debug "Waiting before screenshot: #{wait_before_screenshots} seconds..."
101
101
  sleep(wait_before_screenshots)
102
102
  Applitools::EyesLogger.debug 'Finished waiting.'
103
- Applitools::Utils::ImageUtils.png_image_from_base64(driver.screenshot_as(:base64))
103
+ Applitools::Utils::ImageUtils::Screenshot.new driver.screenshot_as(:png)
104
104
  end
105
105
 
106
106
  def mouse
@@ -103,7 +103,7 @@ module Applitools::Selenium
103
103
  title = eyes.title
104
104
  Applitools::EyesLogger.debug 'Getting screenshot...'
105
105
  Applitools::EyesLogger.debug 'Done! Creating image object from PNG...'
106
- @current_screenshot = Applitools::Utils::ImageUtils::Screenshot.new(driver.get_screenshot(rotation))
106
+ @current_screenshot = driver.get_screenshot(rotation)
107
107
  Applitools::EyesLogger.debug 'Done!'
108
108
  # If a region was defined, we refer to the sub-image defined by the region.
109
109
  unless region.empty?
@@ -74,7 +74,7 @@ module Applitools::Utils
74
74
  end
75
75
 
76
76
  def stitch_images(size, images_data)
77
- ChunkyPNG::Image.new(size.width, size.height, ChunkyPNG::Color::TRANSPARENT).tap do |res|
77
+ stitched_screenshot = ChunkyPNG::Image.new(size.width, size.height, ChunkyPNG::Color::TRANSPARENT).tap do |res|
78
78
  images_data.each do |image_data|
79
79
  # Crop out of bounds images.
80
80
  image = image_data.image
@@ -84,30 +84,41 @@ module Applitools::Utils
84
84
  new_height = position.top + image.height > size.height ? size.height - position.top : image.height
85
85
 
86
86
  if new_width != image.width || new_height != image.height
87
- image = image.crop(0, 0, new_width, new_height)
87
+ image = image.crop!(0, 0, new_width, new_height)
88
88
  end
89
89
 
90
- res.compose!(image, position.left, position.top)
90
+ res.replace!(image.restore, position.left, position.top)
91
+ GC.start
91
92
  end
92
93
  end
94
+ result = Applitools::Utils::ImageUtils::Screenshot.new stitched_screenshot.to_blob.dup
95
+ GC.start
96
+ result
93
97
  end
94
98
 
95
99
  class Screenshot < Delegator
96
- attr_accessor :width, :height, :file
100
+ extend Forwardable
101
+ def_delegators :header, :width, :height
97
102
 
98
103
  def initialize(image)
99
- @file = Tempfile.new('applitools')
100
- image.save file
101
- @width = image.width
102
- @height = image.height
104
+ @datastream = ChunkyPNG::Datastream.from_string image
105
+ end
106
+
107
+ def to_blob
108
+ @datastream.to_blob
103
109
  end
104
110
 
105
111
  def __getobj__
106
112
  restore
107
113
  end
108
114
 
115
+ def header
116
+ @datastream.header_chunk
117
+ end
118
+
109
119
  def __setobj__(obj)
110
- obj.save file
120
+ @datastream = obj.to_datastream
121
+ self
111
122
  end
112
123
 
113
124
  def method_missing(method, *args, &block)
@@ -118,10 +129,8 @@ module Applitools::Utils
118
129
  end
119
130
  end
120
131
 
121
- private
122
-
123
132
  def restore
124
- ChunkyPNG::Image.from_file(file)
133
+ ChunkyPNG::Image.from_datastream @datastream
125
134
  end
126
135
  end
127
136
 
@@ -1,3 +1,3 @@
1
1
  module Applitools
2
- VERSION = '2.32.0'.freeze
2
+ VERSION = '2.33.0'.freeze
3
3
  end
@@ -0,0 +1,43 @@
1
+ require 'rspec'
2
+ require 'capybara/rspec'
3
+ require_relative '../lib/eyes_selenium'
4
+ require 'openssl'
5
+ OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
6
+
7
+
8
+ Capybara.register_driver :selenium do |app|
9
+ Capybara::Selenium::Driver.new(app, :browser => :chrome)
10
+ end
11
+
12
+ Capybara.javascript_driver = :selenium
13
+
14
+ # require 'capybara/poltergeist'
15
+ #
16
+ # Capybara.register_driver :poltergeist_app do |app|
17
+ # Capybara::Poltergeist::Driver.new(app, :js_errors => false)
18
+ # end
19
+ #
20
+ # Capybara.javascript_driver = :poltergeist_app
21
+
22
+
23
+ describe 'Capybara Example', :type => :feature, :js => true do
24
+ before :each do
25
+ @eyes = Applitools::Eyes.new
26
+ @eyes.api_key = ENV['APPLITOOLS_API_KEY']
27
+ @eyes.log_handler = Logger.new(STDOUT)
28
+ end
29
+
30
+ it 'Simple test' do
31
+ driver = @eyes.open(app_name: 'Ruby SDK', test_name: 'Capybara test', driver: page.driver.browser, viewport_size: {width: 800, height: 600})
32
+ visit 'http://github.com'
33
+ @eyes.check_window('homepage')
34
+ username = driver.find_element(:name, 'user[login]')
35
+ username.send_keys('user')
36
+ @eyes.check_window('homepage with username')
37
+ @eyes.close
38
+ end
39
+
40
+ after :each do
41
+ @eyes.abort_if_not_closed
42
+ end
43
+ end
@@ -0,0 +1,38 @@
1
+ require 'capybara'
2
+ require 'sauce'
3
+ require 'sauce/capybara'
4
+ require_relative '../lib/eyes_selenium'
5
+ require 'openssl'
6
+ OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
7
+
8
+ Sauce.config do |config|
9
+ config[:browsers] = [
10
+ ["OS X 10.10", "chrome", "39.0"]
11
+ ]
12
+ config[:start_tunnel] = false
13
+ # config[:sauce_connect_4_executable] = '/path/to/sauce-connect/bin/sc'
14
+ end
15
+
16
+ Capybara.javascript_driver = :sauce
17
+
18
+ describe 'A Saucy Example Group', :sauce => true do
19
+ before :each do
20
+ @eyes = Applitools::Eyes.new
21
+ @eyes.api_key = ENV['APPLITOOLS_API_KEY']
22
+ @eyes.log_handler = Logger.new(STDOUT)
23
+ end
24
+
25
+ it 'Simple test' do
26
+ driver = @eyes.open(app_name: 'Ruby SDK', test_name: 'Capybara test', driver: selenium.driver, viewport_size: {width: 800, height: 600})
27
+ driver.navigate.to 'http://github.com'
28
+ @eyes.check_window('homepage')
29
+ username = driver.find_element(:name, 'user[login]')
30
+ username.send_keys('user')
31
+ @eyes.check_window('homepage with username')
32
+ @eyes.close(false)
33
+ end
34
+
35
+ after :each do
36
+ @eyes.abort_if_not_closed
37
+ end
38
+ end
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.32.0
4
+ version: 2.33.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: 2016-07-08 00:00:00.000000000 Z
11
+ date: 2016-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: capybara
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rspec
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -256,6 +270,8 @@ files:
256
270
  - spec/fixtures/static_test_file.html
257
271
  - spec/spec_helper.rb
258
272
  - test/appium_example_script.rb
273
+ - test/capybara_example.rb
274
+ - test/sauce_capybara_check.rb
259
275
  - test/test_script.rb
260
276
  - test/watir_test_script.rb
261
277
  homepage: https://www.applitools.com
@@ -287,6 +303,8 @@ test_files:
287
303
  - spec/fixtures/static_test_file.html
288
304
  - spec/spec_helper.rb
289
305
  - test/appium_example_script.rb
306
+ - test/capybara_example.rb
307
+ - test/sauce_capybara_check.rb
290
308
  - test/test_script.rb
291
309
  - test/watir_test_script.rb
292
310
  has_rdoc: