eyes_selenium 2.33.0 → 2.34.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0761083944ac62eddd2754e25e1a99df2f552d42
4
- data.tar.gz: 618d2ce2130371f1215290c33adf565b76435b4e
3
+ metadata.gz: 9cbf531403111ae72e83570622b2f33dbe3c5a1a
4
+ data.tar.gz: 08932a393797ce48ea59a403f2c351e6abebc1ae
5
5
  SHA512:
6
- metadata.gz: e307d5656b5e228b5497b505f44ec611d9b58e6adb767b6142e8aafa8b302ac8432fc3decca3f219d235534a4056200ca49beb4f7ae152b8e3aeb7eb9a3ce3df
7
- data.tar.gz: 9ce50824573c8e1508e3f9a1af24343730db7a6f0f96ed53238bc364a93c0aaba96d77df2b71be9a755d36782befca19aa5ece72dcd44e4b479618be405158e6
6
+ metadata.gz: 83313b5b82299099476d65a5dc975fe2b5797965e2be4cd99055c38ba6cc86b14a7bc6acbca1a223c4dcefdff46a891d0a50267bd572b17fda34436ef7f8d477
7
+ data.tar.gz: 6419913c448acb3f4b2cb92b9fd1313ad46a0719335c594abd68f62f49127dab20ba09355ad99f4256fc142df82cba22589e0c44961ad31f6ddd339adf0fe7a8
@@ -3,6 +3,30 @@ lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'applitools/version'
5
5
 
6
+ CURRENT_RYBY_VERSION = Gem::Version.new RUBY_VERSION
7
+
8
+ RUBY_1_9_3 = Gem::Version.new '1.9.3'
9
+ RUBY_2_0_0 = Gem::Version.new '2.0.0'
10
+ RUBY_2_2_2 = Gem::Version.new '2.2.2'
11
+
12
+ RUBY_KEY = [RUBY_1_9_3, RUBY_2_0_0, RUBY_2_2_2].select { |v| v <= CURRENT_RYBY_VERSION }.last
13
+
14
+ EYES_GEM_SPECS = {
15
+ RUBY_1_9_3 => proc do |spec|
16
+ spec.add_development_dependency 'mime-types', ['~> 2.99.0']
17
+ spec.add_development_dependency 'rack', ['~> 1.6.0']
18
+ spec.add_development_dependency 'tomlrb', ['<= 1.2.2']
19
+ spec.add_development_dependency 'rubocop', ['~> 0.41.1']
20
+ end,
21
+ RUBY_2_0_0 => proc do |spec|
22
+ spec.add_development_dependency 'rack', ['~> 1.6.0']
23
+ spec.add_development_dependency 'rubocop'
24
+ end,
25
+ RUBY_2_2_2 => proc do |spec|
26
+ spec.add_development_dependency 'rubocop'
27
+ end
28
+ }.freeze
29
+
6
30
  Gem::Specification.new do |spec|
7
31
  spec.name = 'eyes_selenium'
8
32
  spec.version = Applitools::VERSION
@@ -29,12 +53,13 @@ Gem::Specification.new do |spec|
29
53
  spec.add_development_dependency 'rspec', '>= 3'
30
54
  spec.add_development_dependency 'watir-webdriver'
31
55
  spec.add_development_dependency 'appium_lib'
32
- spec.add_development_dependency 'rubocop'
56
+ EYES_GEM_SPECS[RUBY_KEY].call spec
33
57
 
34
58
  # Exclude debugging support on Travis CI, due to its incompatibility with jruby and older rubies.
35
- unless ENV['TRAVIS']
59
+ unless ENV['TRAVIS'] || CURRENT_RYBY_VERSION < Gem::Version.new('2.0.0')
36
60
  spec.add_development_dependency 'pry'
37
61
  spec.add_development_dependency 'pry-byebug'
62
+ spec.add_development_dependency 'byebug'
38
63
  spec.add_development_dependency 'pry-doc'
39
64
  spec.add_development_dependency 'pry-stack_explorer'
40
65
  end
@@ -0,0 +1,7 @@
1
+ if defined? Appium::Driver
2
+ Appium::Driver.class_eval do
3
+ def driver_for_eyes(eyes)
4
+ Applitools::Selenium::Driver.new(eyes, driver: driver, is_mobile_device: true)
5
+ end
6
+ end
7
+ end
@@ -2,6 +2,8 @@ require 'securerandom'
2
2
 
3
3
  module Applitools::Base
4
4
  class BatchInfo
5
+ attr_accessor :name, :started_at, :id
6
+
5
7
  def initialize(name = nil, started_at = Time.now)
6
8
  @name = name
7
9
  @started_at = started_at
@@ -42,10 +42,10 @@ module Applitools::Base
42
42
  return
43
43
  end
44
44
 
45
- i_left = (left >= other.left) ? left : other.left
46
- i_right = (right <= other.right) ? right : other.right
47
- i_top = (top >= other.top) ? top : other.top
48
- i_bottom = (bottom <= other.bottom) ? bottom : other.bottom
45
+ i_left = left >= other.left ? left : other.left
46
+ i_right = right <= other.right ? right : other.right
47
+ i_top = top >= other.top ? top : other.top
48
+ i_bottom = bottom <= other.bottom ? bottom : other.bottom
49
49
 
50
50
  @left = i_left
51
51
  @top = i_top
@@ -0,0 +1,8 @@
1
+ require 'capybara'
2
+
3
+ Applitools.require_dir 'capybara'
4
+
5
+ module Applitools
6
+ extend Applitools::Capybara::CapybaraSettings
7
+ register_capybara_driver
8
+ end
@@ -0,0 +1,11 @@
1
+ module Applitools::Capybara
2
+ module CapybaraSettings
3
+ def register_capybara_driver(options = {})
4
+ Capybara.register_driver :eyes do |app|
5
+ Applitools::Capybara::Driver.new app, options
6
+ end
7
+ Capybara.default_driver = :eyes
8
+ Capybara.javascript_driver = :eyes
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,28 @@
1
+ if defined? Capybara::Selenium::Driver
2
+ module Applitools::Capybara
3
+ class Driver < Capybara::Selenium::Driver
4
+ def driver_for_eyes(eyes)
5
+ browser eyes: eyes
6
+ end
7
+
8
+ def browser(options = {})
9
+ eyes = options.delete(:eyes)
10
+ super()
11
+ if eyes.present?
12
+ is_mobile_device = @browser.capabilities['platformName'] ? true : false
13
+ @browser = Applitools::Selenium::Driver.new eyes,
14
+ options.merge(driver: @browser, is_mobile_device: is_mobile_device)
15
+ end
16
+ @browser
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ if defined? Capybara::Session
23
+ Capybara::Session.class_eval do
24
+ def driver_for_eyes(eyes)
25
+ driver.driver_for_eyes eyes
26
+ end
27
+ end
28
+ end
@@ -132,14 +132,8 @@ class Applitools::Eyes
132
132
  "use 'api_key' to set it.")
133
133
  end
134
134
 
135
- if driver.is_a?(Selenium::WebDriver::Driver)
136
- is_mobile_device = driver.capabilities['platformName'] ? true : false
137
- @driver = Applitools::Selenium::Driver.new(self, driver: driver, is_mobile_device: is_mobile_device)
138
- elsif defined?(Appium::Driver) && driver.is_a?(Appium::Driver)
139
- @driver = Applitools::Selenium::Driver.new(self, driver: driver.driver, is_mobile_device: true)
140
- elsif defined?(Watir::Browser) && driver.is_a?(Watir::Browser)
141
- is_mobile_device = driver.driver.capabilities['platformName'] ? true : false
142
- @driver = Applitools::Selenium::Driver.new(self, driver: driver.driver, is_mobile_device: is_mobile_device)
135
+ if driver.respond_to? :driver_for_eyes
136
+ @driver = driver.driver_for_eyes self
143
137
  else
144
138
  unless driver.is_a?(Applitools::Selenium::Driver)
145
139
  Applitools::EyesLogger.warn("Unrecognized driver type: (#{driver.class.name})!")
@@ -204,6 +198,8 @@ class Applitools::Eyes
204
198
  Applitools::EyesLogger.debug 'Element given as an argument...'
205
199
  raise Applitools::EyesError.new('Element does not exist') if what.nil?
206
200
  element_to_check = what
201
+ elsif how == :region && what.is_a?(Applitools::Base::Region)
202
+ return check_region_(what, tag, specific_timeout)
207
203
  else
208
204
  Applitools::EyesLogger.debug 'Finding element...'
209
205
  element_to_check = driver.find_element(how, what)
@@ -0,0 +1,2 @@
1
+ require_relative 'capybara'
2
+ Applitools.require_dir 'sauce'
@@ -0,0 +1,23 @@
1
+ if defined? Sauce::Selenium2
2
+ Sauce::Capybara::Driver.class_eval do
3
+ def driver_for_eyes(eyes)
4
+ browser.raw_driver eyes: eyes
5
+ end
6
+ end
7
+
8
+ Sauce::Selenium2.class_eval do
9
+ def driver_for_eyes(eyes)
10
+ raw_driver eyes: eyes
11
+ end
12
+
13
+ def raw_driver(options = {})
14
+ eyes = options.delete(:eyes)
15
+ if eyes.present?
16
+ is_mobile_device = @raw_driver.capabilities['platformName'] ? true : false
17
+ @raw_driver = Applitools::Selenium::Driver.new eyes,
18
+ options.merge(driver: @raw_driver, is_mobile_device: is_mobile_device)
19
+ end
20
+ @raw_driver
21
+ end
22
+ end
23
+ end
@@ -175,7 +175,7 @@ module Applitools::Selenium
175
175
  page_size.height).subregions(screenshot_part_size)
176
176
  parts = sub_regions.map do |screenshot_part|
177
177
  # Skip (0,0), as we already got the screenshot.
178
- if screenshot_part.left == 0 && screenshot_part.top == 0
178
+ if screenshot_part.left.zero? && screenshot_part.top.zero?
179
179
  next Applitools::Base::ImagePosition.new(screenshot, Applitools::Base::Point::TOP_LEFT)
180
180
  end
181
181
 
@@ -35,7 +35,6 @@ module Applitools::Selenium
35
35
  # If driver is not provided, Applitools::Selenium::Driver will raise an EyesError exception.
36
36
  def initialize(eyes, options)
37
37
  super(options[:driver])
38
-
39
38
  @is_mobile_device = options.fetch(:is_mobile_device, false)
40
39
  @wait_before_screenshots = 0
41
40
  @eyes = eyes
@@ -138,6 +137,10 @@ module Applitools::Selenium
138
137
 
139
138
  private
140
139
 
140
+ def bridge
141
+ __getobj__.send(:bridge)
142
+ end
143
+
141
144
  def driver
142
145
  @driver ||= __getobj__
143
146
  end
@@ -174,11 +177,11 @@ module Applitools::Selenium
174
177
  # +rotation+:: +Integer+|+nil+ The degrees by which to rotate the image: positive values = clockwise rotation,
175
178
  # negative values = counter-clockwise, 0 = force no rotation, +nil+ = rotate automatically when needed.
176
179
  def normalize_rotation(driver, image, rotation)
177
- return if rotation == 0
180
+ return if rotation && rotation.zero?
178
181
 
179
182
  num_quadrants = 0
180
183
  if !rotation.nil?
181
- if rotation % RIGHT_ANGLE != 0
184
+ if (rotation % RIGHT_ANGLE).nonzero?
182
185
  raise Applitools::EyesError.new('Currently only quadrant rotations are supported. Current rotation: '\
183
186
  "#{rotation}")
184
187
  end
@@ -67,5 +67,17 @@ module Applitools::Selenium
67
67
 
68
68
  Applitools::Base::Region.new(left, top, width, height)
69
69
  end
70
+
71
+ def find_element(*args)
72
+ self.class.new driver, super
73
+ end
74
+
75
+ def find_elements(*args)
76
+ super(*args).map { |e| self.class.new driver, e }
77
+ end
78
+
79
+ private
80
+
81
+ attr_reader :driver
70
82
  end
71
83
  end
@@ -130,7 +130,7 @@ module Applitools::Selenium
130
130
 
131
131
  retries_left = VERIFY_RETRIES
132
132
 
133
- until retries_left == 0
133
+ until retries_left.zero?
134
134
  return true if browser_size == required_browser_size
135
135
  Applitools::EyesLogger.debug "Trying to set browser size to #{required_browser_size}"
136
136
  resize_browser required_browser_size
@@ -0,0 +1,8 @@
1
+ if defined? Selenium::WebDriver::Driver
2
+ Selenium::WebDriver::Driver.class_eval do
3
+ def driver_for_eyes(eyes)
4
+ is_mobile_device = capabilities['platformName'] ? true : false
5
+ Applitools::Selenium::Driver.new(eyes, driver: self, is_mobile_device: is_mobile_device)
6
+ end
7
+ end
8
+ end
@@ -26,8 +26,8 @@ module Applitools::Utils
26
26
  target_pixels = target.to_rgb_stream.unpack('C*')
27
27
  source_pixels = source.to_rgb_stream.unpack('C*')
28
28
  image_size = Dimension.new(target.width, target.height)
29
- block_columns_count = (target.width / block_size) + ((target.width % block_size) == 0 ? 0 : 1)
30
- block_rows_count = (target.height / block_size) + ((target.height % block_size) == 0 ? 0 : 1)
29
+ block_columns_count = (target.width / block_size) + ((target.width % block_size).zero? ? 0 : 1)
30
+ block_rows_count = (target.height / block_size) + ((target.height % block_size).zero? ? 0 : 1)
31
31
 
32
32
  # IMPORTANT: The "-Zlib::MAX_WBITS" tells ZLib to create raw deflate compression, without the
33
33
  # "Zlib headers" (this isn't documented in the Zlib page, I found this in some internet forum).
@@ -129,6 +129,10 @@ module Applitools::Utils
129
129
  end
130
130
  end
131
131
 
132
+ def respond_to_missing?(method_name, include_private = false)
133
+ super
134
+ end
135
+
132
136
  def restore
133
137
  ChunkyPNG::Image.from_datastream @datastream
134
138
  end
@@ -1,3 +1,3 @@
1
1
  module Applitools
2
- VERSION = '2.33.0'.freeze
2
+ VERSION = '2.34.0'.freeze
3
3
  end
@@ -0,0 +1,8 @@
1
+ if defined? Watir::Browser
2
+ Watir::Browser.class_eval do
3
+ def driver_for_eyes(eyes)
4
+ is_mobile_device = driver.capabilities['platformName'] ? true : false
5
+ Applitools::Selenium::Driver.new(eyes, driver: driver, is_mobile_device: is_mobile_device)
6
+ end
7
+ end
8
+ end
@@ -1,8 +1,11 @@
1
1
  module Applitools
2
- ROOT_DIR = File.join(File.dirname(File.expand_path(__FILE__)), 'applitools').freeze
3
-
4
- Dir["#{ROOT_DIR}/*.rb"].sort.each { |f| require f }
5
- Dir["#{ROOT_DIR}/**/*.rb"].sort.each { |f| require f }
2
+ class << self
3
+ def require_dir(dir)
4
+ Dir[File.join(File.dirname(File.expand_path(__FILE__)), 'applitools', dir, '*.rb')].sort.each do |f|
5
+ require f
6
+ end
7
+ end
8
+ end
6
9
 
7
10
  class EyesError < StandardError; end
8
11
  class EyesAbort < EyesError; end
@@ -19,3 +22,16 @@ module Applitools
19
22
 
20
23
  class NewTestError < TestFailedError; end
21
24
  end
25
+
26
+ require_relative 'applitools/method_tracer'
27
+ require_relative 'applitools/extensions'
28
+ require_relative 'applitools/version'
29
+
30
+ Applitools.require_dir 'base'
31
+ Applitools.require_dir 'utils'
32
+ Applitools.require_dir 'selenium'
33
+
34
+ require_relative 'applitools/eyes'
35
+ require_relative 'applitools/selenium_webdriver'
36
+ require_relative 'applitools/appium_driver'
37
+ require_relative 'applitools/watir_browser'
@@ -4,12 +4,7 @@ require_relative '../lib/eyes_selenium'
4
4
  require 'openssl'
5
5
  OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
6
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
7
+ Applitools.register_capybara_driver :browser => :chrome
13
8
 
14
9
  # require 'capybara/poltergeist'
15
10
  #
@@ -19,25 +14,25 @@ Capybara.javascript_driver = :selenium
19
14
  #
20
15
  # Capybara.javascript_driver = :poltergeist_app
21
16
 
22
-
23
17
  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)
18
+ let(:eyes) do
19
+ Applitools::Eyes.new.tap do |eyes|
20
+ eyes.api_key = ENV['APPLITOOLS_API_KEY']
21
+ eyes.log_handler = Logger.new(STDOUT)
22
+ end
28
23
  end
29
24
 
30
25
  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})
26
+ eyes.open(app_name: 'Ruby SDK', test_name: 'Capybara test', driver: page,
27
+ viewport_size: { width: 800, height: 600 })
32
28
  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
29
+ eyes.check_window('homepage')
30
+ fill_in('user[login]', with: 'user')
31
+ eyes.check_window('homepage with username')
32
+ eyes.close
38
33
  end
39
34
 
40
35
  after :each do
41
- @eyes.abort_if_not_closed
36
+ eyes.abort_if_not_closed
42
37
  end
43
38
  end
@@ -2,37 +2,42 @@ require 'capybara'
2
2
  require 'sauce'
3
3
  require 'sauce/capybara'
4
4
  require_relative '../lib/eyes_selenium'
5
+ require 'applitools/sauce'
5
6
  require 'openssl'
6
7
  OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
7
8
 
8
9
  Sauce.config do |config|
9
10
  config[:browsers] = [
10
- ["OS X 10.10", "chrome", "39.0"]
11
+ ['OS X 10.10', 'chrome', '39.0']
11
12
  ]
12
13
  config[:start_tunnel] = false
13
14
  # config[:sauce_connect_4_executable] = '/path/to/sauce-connect/bin/sc'
14
15
  end
15
16
 
16
- Capybara.javascript_driver = :sauce
17
+ Capybara.configure do |c|
18
+ c.javascript_driver = :sauce
19
+ c.default_driver = :sauce
20
+ end
17
21
 
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)
22
+ describe 'A Saucy Example Group', sauce: true do
23
+ let!(:eyes) do
24
+ Applitools::Eyes.new.tap do |eyes|
25
+ eyes.api_key = ENV['APPLITOOLS_API_KEY']
26
+ eyes.log_handler = Logger.new(STDOUT)
27
+ end
23
28
  end
24
29
 
25
30
  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)
31
+ eyes.open(app_name: 'Ruby SDK', test_name: 'Capybara test', driver: page,
32
+ viewport_size: { width: 800, height: 600 })
33
+ visit 'http://github.com'
34
+ eyes.check_window('homepage')
35
+ fill_in 'user[login]', with: 'user'
36
+ eyes.check_window('homepage with username')
37
+ eyes.close(false)
33
38
  end
34
39
 
35
40
  after :each do
36
41
  @eyes.abort_if_not_closed
37
42
  end
38
- end
43
+ 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.33.0
4
+ version: 2.34.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-18 00:00:00.000000000 Z
11
+ date: 2016-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rack
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 1.6.0
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 1.6.0
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: rubocop
155
169
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +206,20 @@ dependencies:
192
206
  - - ">="
193
207
  - !ruby/object:Gem::Version
194
208
  version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: byebug
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
195
223
  - !ruby/object:Gem::Dependency
196
224
  name: pry-doc
197
225
  requirement: !ruby/object:Gem::Requirement
@@ -237,6 +265,7 @@ files:
237
265
  - Rakefile
238
266
  - certs/cacert.pem
239
267
  - eyes_selenium.gemspec
268
+ - lib/applitools/appium_driver.rb
240
269
  - lib/applitools/base/batch_info.rb
241
270
  - lib/applitools/base/dimension.rb
242
271
  - lib/applitools/base/environment.rb
@@ -249,10 +278,15 @@ files:
249
278
  - lib/applitools/base/start_info.rb
250
279
  - lib/applitools/base/test_results.rb
251
280
  - lib/applitools/base/text_trigger.rb
281
+ - lib/applitools/capybara.rb
282
+ - lib/applitools/capybara/capybara_settings.rb
283
+ - lib/applitools/capybara/driver.rb
252
284
  - lib/applitools/extensions.rb
253
285
  - lib/applitools/eyes.rb
254
286
  - lib/applitools/eyes_logger.rb
255
287
  - lib/applitools/method_tracer.rb
288
+ - lib/applitools/sauce.rb
289
+ - lib/applitools/sauce/driver.rb
256
290
  - lib/applitools/selenium/browser.rb
257
291
  - lib/applitools/selenium/driver.rb
258
292
  - lib/applitools/selenium/element.rb
@@ -261,10 +295,12 @@ files:
261
295
  - lib/applitools/selenium/match_window_task.rb
262
296
  - lib/applitools/selenium/mouse.rb
263
297
  - lib/applitools/selenium/viewport_size.rb
298
+ - lib/applitools/selenium_webdriver.rb
264
299
  - lib/applitools/utils/image_delta_compressor.rb
265
300
  - lib/applitools/utils/image_utils.rb
266
301
  - lib/applitools/utils/utils.rb
267
302
  - lib/applitools/version.rb
303
+ - lib/applitools/watir_browser.rb
268
304
  - lib/eyes_selenium.rb
269
305
  - spec/driver_passthrough_spec.rb
270
306
  - spec/fixtures/static_test_file.html