eyes_selenium 2.38.0 → 2.39.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 +4 -4
- data/.rubocop.yml +3 -0
- data/examples/watir_test_script.rb +2 -2
- data/eyes_selenium.gemspec +21 -5
- data/lib/applitools/eyes.rb +15 -3
- data/lib/applitools/eyes_logger.rb +2 -4
- data/lib/applitools/poltergeist/applitools_compatible.rb +28 -0
- data/lib/applitools/poltergeist/driver.rb +11 -0
- data/lib/applitools/selenium/driver.rb +0 -2
- data/lib/applitools/selenium/element.rb +8 -1
- data/lib/applitools/selenium/viewport_size.rb +10 -7
- data/lib/applitools/version.rb +1 -1
- data/lib/eyes_selenium.rb +1 -1
- data/spec/driver_passthrough_spec.rb +10 -0
- metadata +23 -36
- data/lib/applitools/watir_browser.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd32f2f7bfa22643fd6639e2d9cf44564d6fede3
|
4
|
+
data.tar.gz: 2a2b3b5458dcd6d581d54601055ec7683bcdfc8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c1370db2044afad9f6357f18fa9f6f4fc211d84a31a62c27a83f4611c5230531dd727636519e7e1be7bd6a05e59b0766476ee8aa395a7257fb8892dbf7ca7c7
|
7
|
+
data.tar.gz: 533e01b894784508b098e54859e77bb602c5499a82de81fa6c187404bf94594a096459fdc27f324944a83558cd22612281d32ba5fc84603d474211da91adb33c
|
data/.rubocop.yml
CHANGED
@@ -9,11 +9,11 @@ eyes = Applitools::Eyes.new
|
|
9
9
|
eyes.api_key = ENV['APPLITOOLS_API_KEY']
|
10
10
|
eyes.log_handler = Logger.new(STDOUT)
|
11
11
|
|
12
|
-
browser = Watir::Browser.new
|
12
|
+
browser = Watir::Browser.new :chrome
|
13
13
|
|
14
14
|
begin
|
15
15
|
eyes.test(app_name: 'Ruby SDK', test_name: 'Applitools website test', viewport_size: { width: 900, height: 600 },
|
16
|
-
driver: browser) do |driver|
|
16
|
+
driver: browser.driver) do |driver|
|
17
17
|
driver.get 'http://www.applitools.com'
|
18
18
|
eyes.check_window('initial')
|
19
19
|
eyes.check_region(:css, '.pricing', 'Pricing button')
|
data/eyes_selenium.gemspec
CHANGED
@@ -8,8 +8,9 @@ CURRENT_RYBY_VERSION = Gem::Version.new RUBY_VERSION
|
|
8
8
|
RUBY_1_9_3 = Gem::Version.new '1.9.3'
|
9
9
|
RUBY_2_0_0 = Gem::Version.new '2.0.0'
|
10
10
|
RUBY_2_2_2 = Gem::Version.new '2.2.2'
|
11
|
+
RUBY_2_4_0 = Gem::Version.new '2.4.0'
|
11
12
|
|
12
|
-
RUBY_KEY = [RUBY_1_9_3, RUBY_2_0_0, RUBY_2_2_2].select { |v| v <= CURRENT_RYBY_VERSION }.last
|
13
|
+
RUBY_KEY = [RUBY_1_9_3, RUBY_2_0_0, RUBY_2_2_2, RUBY_2_4_0].select { |v| v <= CURRENT_RYBY_VERSION }.last
|
13
14
|
|
14
15
|
EYES_GEM_SPECS = {
|
15
16
|
RUBY_1_9_3 => proc do |spec|
|
@@ -19,13 +20,28 @@ EYES_GEM_SPECS = {
|
|
19
20
|
spec.add_development_dependency 'rubocop', ['~> 0.41.1']
|
20
21
|
spec.add_development_dependency 'cmdparse', ['= 2.0.2']
|
21
22
|
spec.add_development_dependency 'net-ssh', ['<= 3.0.0']
|
23
|
+
spec.add_development_dependency 'net-http-persistent', ['< 3.0.0']
|
24
|
+
spec.add_development_dependency 'sauce'
|
25
|
+
spec.add_dependency 'nokogiri', '~> 1.6.0'
|
26
|
+
spec.add_dependency 'public_suffix', '< 1.5.0'
|
27
|
+
spec.add_dependency 'appium_lib', '< 9.1'
|
22
28
|
end,
|
23
29
|
RUBY_2_0_0 => proc do |spec|
|
24
30
|
spec.add_development_dependency 'rack', ['~> 1.6.0']
|
25
|
-
spec.add_development_dependency 'rubocop'
|
31
|
+
spec.add_development_dependency 'rubocop', ['<= 0.46.0']
|
32
|
+
spec.add_development_dependency 'net-http-persistent', ['< 3.0.0']
|
33
|
+
spec.add_development_dependency 'sauce'
|
34
|
+
spec.add_dependency 'nokogiri', '~> 1.6.0'
|
35
|
+
spec.add_development_dependency 'appium_lib', '< 9.1'
|
26
36
|
end,
|
27
37
|
RUBY_2_2_2 => proc do |spec|
|
28
|
-
spec.add_development_dependency 'rubocop'
|
38
|
+
spec.add_development_dependency 'rubocop', ['<= 0.46.0']
|
39
|
+
spec.add_development_dependency 'sauce'
|
40
|
+
spec.add_development_dependency 'appium_lib'
|
41
|
+
end,
|
42
|
+
RUBY_2_4_0 => proc do |spec|
|
43
|
+
spec.add_development_dependency 'appium_lib'
|
44
|
+
spec.add_development_dependency 'rubocop', ['<= 0.46.0']
|
29
45
|
end
|
30
46
|
}.freeze
|
31
47
|
|
@@ -45,6 +61,7 @@ Gem::Specification.new do |spec|
|
|
45
61
|
spec.require_paths = ['lib']
|
46
62
|
|
47
63
|
spec.add_dependency 'selenium-webdriver', '>= 2.45.0'
|
64
|
+
spec.add_dependency 'poltergeist', '~> 1.9'
|
48
65
|
spec.add_dependency 'oily_png', '~> 1.2'
|
49
66
|
spec.add_dependency 'chunky_png', '= 1.3.6'
|
50
67
|
spec.add_dependency 'faraday'
|
@@ -53,10 +70,9 @@ Gem::Specification.new do |spec|
|
|
53
70
|
spec.add_development_dependency 'bundler'
|
54
71
|
spec.add_development_dependency 'rake'
|
55
72
|
spec.add_development_dependency 'capybara'
|
56
|
-
spec.add_development_dependency 'sauce'
|
57
73
|
spec.add_development_dependency 'rspec', '>= 3'
|
58
74
|
spec.add_development_dependency 'watir-webdriver'
|
59
|
-
|
75
|
+
|
60
76
|
EYES_GEM_SPECS[RUBY_KEY].call spec
|
61
77
|
|
62
78
|
# Exclude debugging support on Travis CI, due to its incompatibility with jruby and older rubies.
|
data/lib/applitools/eyes.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'capybara/poltergeist'
|
2
|
+
|
1
3
|
require_relative 'version'
|
2
4
|
require_relative 'eyes_logger'
|
3
5
|
|
@@ -74,7 +76,7 @@ class Applitools::Eyes
|
|
74
76
|
# the default value.
|
75
77
|
# +debug_screenshot+:: +boolean+ If true saves every taken screenshot in current folder. File name has following
|
76
78
|
# format: +TAG_YYYY_MM_DD_HH_MI__N.png+, where +TAG+ - the tag specified for the test,
|
77
|
-
# +YYYY_MM_DD_HH_MI+ - date && time, +N+ - screenshot number (makes
|
79
|
+
# +YYYY_MM_DD_HH_MI+ - date && time, +N+ - screenshot number (makes sense only when
|
78
80
|
# +force_fullpage_screenshot+ is true). Default value is false
|
79
81
|
|
80
82
|
attr_reader :app_name, :test_name, :is_open, :viewport_size, :driver, :passed_driver
|
@@ -141,9 +143,19 @@ class Applitools::Eyes
|
|
141
143
|
@driver = driver.driver_for_eyes self
|
142
144
|
else
|
143
145
|
unless driver.is_a?(Applitools::Selenium::Driver)
|
144
|
-
Applitools::EyesLogger.warn("Unrecognized driver type: (#{driver.class.name})!")
|
145
146
|
is_mobile_device = driver.respond_to?(:capabilities) && driver.capabilities['platformName']
|
146
|
-
|
147
|
+
|
148
|
+
@driver =
|
149
|
+
case driver
|
150
|
+
when Selenium::WebDriver
|
151
|
+
Applitools::Selenium::Driver.new(self, driver: driver, is_mobile_device: is_mobile_device)
|
152
|
+
when Capybara::Poltergeist::Driver # driver for PhantomJS
|
153
|
+
Applitools::Poltergeist::Driver.new(self, driver: driver, is_mobile_device: is_mobile_device)
|
154
|
+
else
|
155
|
+
Applitools::EyesLogger.warn("Unrecognized driver type: (#{driver.class.name})!")
|
156
|
+
Applitools::Selenium::Driver.new(self, driver: driver, is_mobile_device: is_mobile_device)
|
157
|
+
end
|
158
|
+
|
147
159
|
end
|
148
160
|
end
|
149
161
|
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# This module is used for compatibility with Applitools API.
|
2
|
+
# Should be extended by Poltergeist driver instance.
|
3
|
+
module Applitools::Poltergeist
|
4
|
+
module ApplitoolsCompatible
|
5
|
+
# Implementation of `screenshot_as` method for PhantomJS.
|
6
|
+
# Realisation uses Poltergeist binding to `renderBase64` PhantomJS method.
|
7
|
+
def screenshot_as(fmt)
|
8
|
+
Base64.decode64(browser.render_base64(fmt))
|
9
|
+
end
|
10
|
+
|
11
|
+
# Poltergeist driver does not have `manage` and `window` methods.
|
12
|
+
# In Applitools these methods are used in a chain to get size by `size` method call.
|
13
|
+
%w(manage window).each do |method_name|
|
14
|
+
define_method(method_name) { self }
|
15
|
+
end
|
16
|
+
|
17
|
+
# Method provides opened window size in Applitools format.
|
18
|
+
def size
|
19
|
+
size = window_size(current_window_handle)
|
20
|
+
Applitools::Base::Dimension.new(size[0], size[1])
|
21
|
+
end
|
22
|
+
|
23
|
+
# Method changes opened window size in a way how original Applitools::Selenium::Driver does.
|
24
|
+
def size=(new_size)
|
25
|
+
resize(new_size.width, new_size.height)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# Applitools::Poltergeist::Driver is a small class implemented
|
2
|
+
# for compatibility with Applitools API.
|
3
|
+
# It gives required for Applitools methods to Poltergeist driver.
|
4
|
+
module Applitools::Poltergeist
|
5
|
+
class Driver < Applitools::Selenium::Driver
|
6
|
+
def initialize(eyes, options)
|
7
|
+
options[:driver].extend Applitools::Poltergeist::ApplitoolsCompatible
|
8
|
+
super(eyes, options)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -12,6 +12,8 @@ module Applitools::Selenium
|
|
12
12
|
@web_element ||= __getobj__
|
13
13
|
end
|
14
14
|
|
15
|
+
protected :web_element
|
16
|
+
|
15
17
|
def click
|
16
18
|
current_control = region
|
17
19
|
offset = current_control.middle_offset
|
@@ -25,8 +27,13 @@ module Applitools::Selenium
|
|
25
27
|
end
|
26
28
|
|
27
29
|
def ==(other)
|
28
|
-
other.is_a?
|
30
|
+
if other.is_a? self.class
|
31
|
+
super other.web_element
|
32
|
+
else
|
33
|
+
super other
|
34
|
+
end
|
29
35
|
end
|
36
|
+
|
30
37
|
alias eql? ==
|
31
38
|
|
32
39
|
def send_keys(*args)
|
@@ -72,8 +72,10 @@ module Applitools::Selenium
|
|
72
72
|
|
73
73
|
browser_size_calculation_count = 0
|
74
74
|
while browser_size_calculation_count < BROWSER_SIZE_CALCULATION_RETRIES
|
75
|
-
|
76
|
-
|
75
|
+
unless resize_attempt
|
76
|
+
raise Applitools::TestFailedError.new 'Failed to set browser size!' \
|
77
|
+
" (current size: #{browser_size})"
|
78
|
+
end
|
77
79
|
browser_size_calculation_count += 1
|
78
80
|
if viewport_size == size
|
79
81
|
Applitools::EyesLogger.debug "Actual viewport size #{viewport_size}"
|
@@ -107,11 +109,12 @@ module Applitools::Selenium
|
|
107
109
|
return dimension if dimension.is_a? ::Selenium::WebDriver::Dimension
|
108
110
|
return Applitools::Base::Dimension.for(dimension) if dimension.respond_to?(:width) &
|
109
111
|
dimension.respond_to?(:height)
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
112
|
+
if dimension.is_a?(Hash) && (dimension.keys & [:width, :height]).size == 2
|
113
|
+
return Applitools::Base::Dimension.new(
|
114
|
+
dimension[:width],
|
115
|
+
dimension[:height]
|
116
|
+
)
|
117
|
+
end
|
115
118
|
raise ArgumentError,
|
116
119
|
"expected #{@dimension.inspect}:#{@dimension.class} to respond to #width and #height," \
|
117
120
|
' or be a hash with these keys.'
|
data/lib/applitools/version.rb
CHANGED
data/lib/eyes_selenium.rb
CHANGED
@@ -30,11 +30,11 @@ require_relative 'applitools/version'
|
|
30
30
|
Applitools.require_dir 'base'
|
31
31
|
Applitools.require_dir 'utils'
|
32
32
|
Applitools.require_dir 'selenium'
|
33
|
+
Applitools.require_dir 'poltergeist'
|
33
34
|
|
34
35
|
require_relative 'applitools/eyes'
|
35
36
|
require_relative 'applitools/selenium_webdriver'
|
36
37
|
require_relative 'applitools/appium_driver'
|
37
|
-
require_relative 'applitools/watir_browser'
|
38
38
|
|
39
39
|
if defined? Sauce
|
40
40
|
require 'applitools/sauce'
|
@@ -37,6 +37,16 @@ describe 'passthrough methods' do
|
|
37
37
|
expect(link).not_to be_nil
|
38
38
|
expect(link).to be_a(Applitools::Selenium::Element)
|
39
39
|
end
|
40
|
+
|
41
|
+
# From the Selenium tests
|
42
|
+
# @see https://github.com/SeleniumHQ/selenium/blob/7e2cca5/rb/spec/integration/selenium/webdriver/element_spec.rb#L192
|
43
|
+
it 'should know when two elements are equal' do
|
44
|
+
body = @driver.find_element(tag_name: 'body')
|
45
|
+
xbody = @driver.find_element(xpath: '//body')
|
46
|
+
|
47
|
+
expect(body).to eq(xbody)
|
48
|
+
expect(body).to eql(xbody)
|
49
|
+
end
|
40
50
|
end
|
41
51
|
|
42
52
|
context 'all elements' do
|
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.
|
4
|
+
version: 2.39.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:
|
11
|
+
date: 2017-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.45.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: poltergeist
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.9'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.9'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: oily_png
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,20 +136,6 @@ dependencies:
|
|
122
136
|
- - ">="
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: sauce
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: rspec
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,34 +178,20 @@ dependencies:
|
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: rack
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - "~>"
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: 1.6.0
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - "~>"
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: 1.6.0
|
195
181
|
- !ruby/object:Gem::Dependency
|
196
182
|
name: rubocop
|
197
183
|
requirement: !ruby/object:Gem::Requirement
|
198
184
|
requirements:
|
199
|
-
- - "
|
185
|
+
- - "<="
|
200
186
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
187
|
+
version: 0.46.0
|
202
188
|
type: :development
|
203
189
|
prerelease: false
|
204
190
|
version_requirements: !ruby/object:Gem::Requirement
|
205
191
|
requirements:
|
206
|
-
- - "
|
192
|
+
- - "<="
|
207
193
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
194
|
+
version: 0.46.0
|
209
195
|
- !ruby/object:Gem::Dependency
|
210
196
|
name: pry
|
211
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -317,6 +303,8 @@ files:
|
|
317
303
|
- lib/applitools/eyes.rb
|
318
304
|
- lib/applitools/eyes_logger.rb
|
319
305
|
- lib/applitools/method_tracer.rb
|
306
|
+
- lib/applitools/poltergeist/applitools_compatible.rb
|
307
|
+
- lib/applitools/poltergeist/driver.rb
|
320
308
|
- lib/applitools/sauce.rb
|
321
309
|
- lib/applitools/selenium/browser.rb
|
322
310
|
- lib/applitools/selenium/capybara/capybara_settings.rb
|
@@ -334,7 +322,6 @@ files:
|
|
334
322
|
- lib/applitools/utils/image_utils.rb
|
335
323
|
- lib/applitools/utils/utils.rb
|
336
324
|
- lib/applitools/version.rb
|
337
|
-
- lib/applitools/watir_browser.rb
|
338
325
|
- lib/eyes_selenium.rb
|
339
326
|
- spec/driver_passthrough_spec.rb
|
340
327
|
- spec/fixtures/static_test_file.html
|
@@ -359,7 +346,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
359
346
|
version: '0'
|
360
347
|
requirements: []
|
361
348
|
rubyforge_project:
|
362
|
-
rubygems_version: 2.
|
349
|
+
rubygems_version: 2.6.8
|
363
350
|
signing_key:
|
364
351
|
specification_version: 4
|
365
352
|
summary: Applitools Ruby SDK
|
@@ -1,8 +0,0 @@
|
|
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
|