eyes_selenium 2.39.1 → 3.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/applitools/capybara.rb +1 -1
- data/lib/applitools/selenium/border_aware_element_content_location_provider.rb +41 -0
- data/lib/applitools/selenium/browser.rb +1 -0
- data/lib/applitools/selenium/capybara/capybara_settings.rb +8 -0
- data/lib/applitools/selenium/capybara/driver.rb +1 -0
- data/lib/applitools/selenium/context_based_scale_provider.rb +36 -0
- data/lib/applitools/selenium/css_translate_position_provider.rb +66 -0
- data/lib/applitools/selenium/driver.rb +159 -44
- data/lib/applitools/selenium/element.rb +100 -8
- data/lib/applitools/selenium/element_position_provider.rb +48 -0
- data/lib/applitools/selenium/eyes.rb +922 -0
- data/lib/applitools/selenium/eyes_target_locator.rb +191 -0
- data/lib/applitools/selenium/eyes_web_driver_screenshot.rb +274 -0
- data/lib/applitools/selenium/frame.rb +24 -0
- data/lib/applitools/selenium/frame_chain.rb +68 -0
- data/lib/applitools/selenium/full_page_capture_algorithm.rb +162 -0
- data/lib/applitools/selenium/keyboard.rb +1 -0
- data/lib/applitools/selenium/match_window_task.rb +0 -197
- data/lib/applitools/selenium/mouse.rb +1 -0
- data/lib/applitools/selenium/move_to_region_visibility_strategy.rb +33 -0
- data/lib/applitools/selenium/nop_region_visibility_strategy.rb +16 -0
- data/lib/applitools/selenium/scroll_position_provider.rb +52 -0
- data/lib/applitools/selenium/takes_screenshot_image_provider.rb +36 -0
- data/lib/applitools/version.rb +1 -1
- data/lib/eyes_selenium.rb +19 -30
- metadata +24 -254
- data/.gitignore +0 -18
- data/.rspec +0 -2
- data/.rubocop.yml +0 -57
- data/.travis.yml +0 -17
- data/Gemfile +0 -4
- data/LICENSE.txt +0 -13
- data/README.md +0 -38
- data/Rakefile +0 -11
- data/certs/cacert.pem +0 -3557
- data/examples/appium_example_script.rb +0 -59
- data/examples/capybara_example.rb +0 -82
- data/examples/sauce_capybara_example.rb +0 -41
- data/examples/sauce_example.rb +0 -34
- data/examples/simple_test_script.rb +0 -23
- data/examples/watir_test_script.rb +0 -26
- data/eyes_selenium.gemspec +0 -89
- data/lib/applitools/appium_driver.rb +0 -7
- data/lib/applitools/base/batch_info.rb +0 -21
- data/lib/applitools/base/dimension.rb +0 -36
- data/lib/applitools/base/environment.rb +0 -19
- data/lib/applitools/base/image_position.rb +0 -10
- data/lib/applitools/base/mouse_trigger.rb +0 -33
- data/lib/applitools/base/point.rb +0 -34
- data/lib/applitools/base/region.rb +0 -112
- data/lib/applitools/base/server_connector.rb +0 -120
- data/lib/applitools/base/session.rb +0 -15
- data/lib/applitools/base/start_info.rb +0 -34
- data/lib/applitools/base/test_results.rb +0 -28
- data/lib/applitools/base/text_trigger.rb +0 -22
- data/lib/applitools/extensions.rb +0 -17
- data/lib/applitools/eyes.rb +0 -460
- data/lib/applitools/eyes_logger.rb +0 -38
- data/lib/applitools/method_tracer.rb +0 -22
- data/lib/applitools/poltergeist/applitools_compatible.rb +0 -28
- data/lib/applitools/poltergeist/driver.rb +0 -11
- data/lib/applitools/sauce.rb +0 -2
- data/lib/applitools/selenium/match_window_data.rb +0 -28
- data/lib/applitools/selenium_webdriver.rb +0 -8
- data/lib/applitools/utils/image_delta_compressor.rb +0 -148
- data/lib/applitools/utils/image_utils.rb +0 -143
- data/lib/applitools/utils/utils.rb +0 -49
- data/lib/applitools/watir_browser.rb +0 -8
- data/spec/driver_passthrough_spec.rb +0 -68
- data/spec/fixtures/static_test_file.html +0 -15
- data/spec/spec_helper.rb +0 -17
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'logger'
|
2
|
-
require 'appium_lib'
|
3
|
-
|
4
|
-
require 'eyes_selenium'
|
5
|
-
|
6
|
-
# Based on Appium example: https://github.com/appium/appium/blob/master/sample-code/examples/ruby/
|
7
|
-
|
8
|
-
def android_caps
|
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
|
18
|
-
}
|
19
|
-
end
|
20
|
-
|
21
|
-
def ios_caps
|
22
|
-
{
|
23
|
-
deviceName: 'iPhone 6',
|
24
|
-
platformName: 'ios',
|
25
|
-
platformVersion: 8.4,
|
26
|
-
app: ENV['IOS_DEMO_APP'],
|
27
|
-
orientation: 'landscape',
|
28
|
-
newCommandTimeout: 300
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
def appium_opts
|
33
|
-
{
|
34
|
-
server_url: 'http://127.0.0.1:4723/wd/hub'
|
35
|
-
}
|
36
|
-
end
|
37
|
-
|
38
|
-
eyes = Applitools::Eyes.new
|
39
|
-
eyes.log_handler = Logger.new(STDOUT)
|
40
|
-
eyes.api_key = ENV['APPLITOOLS_API_KEY']
|
41
|
-
|
42
|
-
begin
|
43
|
-
# driver = Selenium::WebDriver.for(:remote, :url => 'http://localhost:4723/wd/hub', :desired_capabilities => ios_caps)
|
44
|
-
# driver = Appium::Driver.new({caps: android_caps, appium_lib: appium_opts})
|
45
|
-
driver = Appium::Driver.new(caps: ios_caps, appium_lib: appium_opts)
|
46
|
-
driver.start_driver
|
47
|
-
# driver.driver.rotate :landscape
|
48
|
-
puts "Screen size: #{driver.driver.manage.window.size}"
|
49
|
-
puts "orientation: #{driver.driver.orientation}"
|
50
|
-
puts driver.caps
|
51
|
-
eyes.open(app_name: 'Ruby SDK', test_name: 'Appium Notepad', driver: driver)
|
52
|
-
|
53
|
-
eyes.check_window('No notes')
|
54
|
-
eyes.close
|
55
|
-
ensure
|
56
|
-
eyes.abort_if_not_closed
|
57
|
-
driver.driver_quit
|
58
|
-
# driver.quit
|
59
|
-
end
|
@@ -1,82 +0,0 @@
|
|
1
|
-
require 'rspec'
|
2
|
-
require 'capybara/rspec'
|
3
|
-
require 'eyes_selenium'
|
4
|
-
require 'applitools/capybara'
|
5
|
-
|
6
|
-
##
|
7
|
-
# This will register capybara driver :eyes by performing
|
8
|
-
#
|
9
|
-
# Capybara.register_driver :eyes do |app|
|
10
|
-
# Capybara::Selenium::Driver.new(options)
|
11
|
-
# end
|
12
|
-
#
|
13
|
-
# (options are passed to Applitools.register_capybara_driver method) and set it as a default driver.
|
14
|
-
# The page.driver.browser method will return Applitools::Selenium::Driver instance,
|
15
|
-
# based on standard Selenium::Webdriver driver, when eyes have opened.
|
16
|
-
# The page.driver.browser method will contain Selenium::Webdriver
|
17
|
-
# instance (without applitools wrapper), after eyes have closed
|
18
|
-
#
|
19
|
-
Applitools.register_capybara_driver :browser => :chrome
|
20
|
-
|
21
|
-
# Register another driver if needed
|
22
|
-
Capybara.register_driver :selenium_chrome do |app|
|
23
|
-
Capybara::Selenium::Driver.new(app, :browser => :chrome)
|
24
|
-
end
|
25
|
-
|
26
|
-
# And even one more
|
27
|
-
Capybara.register_driver :selenium_firefox do |app|
|
28
|
-
Capybara::Selenium::Driver.new(app, :browser => :firefox)
|
29
|
-
end
|
30
|
-
|
31
|
-
describe 'Capybara Example', :type => :feature, :js => true do
|
32
|
-
let(:eyes) do
|
33
|
-
Applitools::Eyes.new.tap do |eyes|
|
34
|
-
eyes.api_key = ENV['APPLITOOLS_API_KEY']
|
35
|
-
eyes.log_handler = Logger.new(STDOUT)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'Simple test' do
|
40
|
-
eyes.open(app_name: 'Ruby SDK', test_name: 'Capybara test', driver: page,
|
41
|
-
viewport_size: { width: 800, height: 600 })
|
42
|
-
visit 'http://github.com'
|
43
|
-
eyes.check_window('homepage')
|
44
|
-
fill_in('user[login]', with: 'user')
|
45
|
-
eyes.check_window('homepage with username')
|
46
|
-
eyes.close
|
47
|
-
end
|
48
|
-
|
49
|
-
##
|
50
|
-
# This will use :eyes driver with standard browser, without Applitools wrapper
|
51
|
-
# In our case - Selenium::Webdriver for :crome
|
52
|
-
#
|
53
|
-
it 'common capybara test' do
|
54
|
-
visit 'http://github.com'
|
55
|
-
fill_in('user[login]', with: 'user')
|
56
|
-
# and so on
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'other chrome test' do
|
60
|
-
##
|
61
|
-
# this uses :selenium_chrome driver (see Capybara.register_driver block) instead of :eyes driver
|
62
|
-
Capybara.using_driver :selenium_chrome do
|
63
|
-
visit 'http://github.com'
|
64
|
-
fill_in('user[login]', with: 'user')
|
65
|
-
# and so on
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
after :each do
|
70
|
-
eyes.abort_if_not_closed
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
describe 'Other Capybara tests', :type => :feature, :js => true do
|
75
|
-
it 'some other chrome test' do
|
76
|
-
Capybara.using_driver :selenium_chrome do
|
77
|
-
visit 'http://github.com'
|
78
|
-
fill_in('user[login]', with: 'user')
|
79
|
-
# and so on
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'rspec'
|
2
|
-
require 'capybara/rspec'
|
3
|
-
require 'sauce'
|
4
|
-
require 'sauce/capybara'
|
5
|
-
require 'eyes_selenium'
|
6
|
-
|
7
|
-
Sauce.config do |config|
|
8
|
-
config[:browsers] = [
|
9
|
-
['OS X 10.10', 'chrome', '39.0']
|
10
|
-
]
|
11
|
-
config[:start_tunnel] = false
|
12
|
-
# config[:sauce_connect_4_executable] = '/path/to/sauce-connect/bin/sc'
|
13
|
-
end
|
14
|
-
|
15
|
-
Capybara.configure do |c|
|
16
|
-
c.javascript_driver = :sauce
|
17
|
-
c.default_driver = :sauce
|
18
|
-
end
|
19
|
-
|
20
|
-
describe 'A Saucy Example Group', :type => :feature, :sauce => true do
|
21
|
-
let!(:eyes) do
|
22
|
-
Applitools::Eyes.new.tap do |eyes|
|
23
|
-
eyes.api_key = ENV['APPLITOOLS_API_KEY']
|
24
|
-
eyes.log_handler = Logger.new(STDOUT)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'Simple test' do
|
29
|
-
eyes.open(app_name: 'Ruby SDK', test_name: 'Capybara test', driver: page,
|
30
|
-
viewport_size: { width: 800, height: 600 })
|
31
|
-
visit 'http://github.com'
|
32
|
-
eyes.check_window('homepage')
|
33
|
-
fill_in 'user[login]', with: 'user'
|
34
|
-
eyes.check_window('homepage with username')
|
35
|
-
eyes.close(false)
|
36
|
-
end
|
37
|
-
|
38
|
-
after :each do
|
39
|
-
eyes.abort_if_not_closed
|
40
|
-
end
|
41
|
-
end
|
data/examples/sauce_example.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'rspec'
|
2
|
-
require 'sauce'
|
3
|
-
require 'eyes_selenium'
|
4
|
-
|
5
|
-
Sauce.config do |config|
|
6
|
-
config[:browsers] = [
|
7
|
-
['OS X 10.10', 'chrome', '39.0']
|
8
|
-
]
|
9
|
-
config[:start_tunnel] = false
|
10
|
-
# config[:sauce_connect_4_executable] = '/path/to/sauce-connect/bin/sc'
|
11
|
-
end
|
12
|
-
|
13
|
-
describe 'A Saucy Example Group', sauce: true do
|
14
|
-
let!(:eyes) do
|
15
|
-
Applitools::Eyes.new.tap do |eyes|
|
16
|
-
eyes.api_key = ENV['APPLITOOLS_API_KEY']
|
17
|
-
eyes.log_handler = Logger.new(STDOUT)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'Simple test' do
|
22
|
-
eyes.test(app_name: 'Ruby SDK', test_name: 'Sauce plain test', driver: selenium,
|
23
|
-
viewport_size: { width: 800, height: 600 }) do |driver|
|
24
|
-
driver.get 'http://github.com'
|
25
|
-
eyes.check_window('homepage')
|
26
|
-
driver.find_element(:css, 'input[name="user[login]"]').send_keys 'user'
|
27
|
-
eyes.check_window('homepage with username')
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
after :each do
|
32
|
-
eyes.abort_if_not_closed
|
33
|
-
end
|
34
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require_relative '../lib/eyes_selenium'
|
2
|
-
|
3
|
-
require 'logger'
|
4
|
-
require 'openssl'
|
5
|
-
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
|
6
|
-
|
7
|
-
eyes = Applitools::Eyes.new
|
8
|
-
eyes.api_key = ENV['APPLITOOLS_API_KEY']
|
9
|
-
eyes.log_handler = Logger.new(STDOUT)
|
10
|
-
# eyes.set_proxy('https://localhost:8888')
|
11
|
-
begin
|
12
|
-
web_driver = Selenium::WebDriver.for :chrome
|
13
|
-
|
14
|
-
eyes.test(app_name: 'Ruby SDK', test_name: 'Applitools website test', viewport_size: { width: 900, height: 600 },
|
15
|
-
driver: web_driver) do |driver|
|
16
|
-
driver.get 'http://www.applitools.com'
|
17
|
-
eyes.check_window('initial')
|
18
|
-
pricing = driver.find_element(:css, '.pricing a')
|
19
|
-
eyes.check_region(:element, pricing, 'pricing element')
|
20
|
-
end
|
21
|
-
ensure
|
22
|
-
web_driver.quit
|
23
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'watir'
|
3
|
-
require 'eyes_selenium'
|
4
|
-
require 'logger'
|
5
|
-
|
6
|
-
require 'openssl'
|
7
|
-
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
|
8
|
-
|
9
|
-
eyes = Applitools::Eyes.new
|
10
|
-
eyes.api_key = ENV['APPLITOOLS_API_KEY']
|
11
|
-
eyes.log_handler = Logger.new(STDOUT)
|
12
|
-
|
13
|
-
browser = Watir::Browser.new :chrome
|
14
|
-
|
15
|
-
begin
|
16
|
-
eyes.test(app_name: 'Ruby SDK', test_name: 'Applitools website test', viewport_size: { width: 900, height: 600 },
|
17
|
-
driver: browser) do |driver|
|
18
|
-
driver.get 'http://www.applitools.com'
|
19
|
-
eyes.check_window('initial')
|
20
|
-
eyes.check_region(:css, '.pricing', 'Pricing button')
|
21
|
-
driver.find_element(:css, '.pricing a').click
|
22
|
-
eyes.check_window('pricing page')
|
23
|
-
end
|
24
|
-
ensure
|
25
|
-
browser.quit
|
26
|
-
end
|
data/eyes_selenium.gemspec
DELETED
@@ -1,89 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'applitools/version'
|
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
|
-
RUBY_2_4_0 = Gem::Version.new '2.4.0'
|
12
|
-
|
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
|
14
|
-
|
15
|
-
EYES_GEM_SPECS = {
|
16
|
-
RUBY_1_9_3 => proc do |spec|
|
17
|
-
spec.add_development_dependency 'mime-types', ['~> 2.99.0']
|
18
|
-
spec.add_development_dependency 'rack', ['~> 1.6.0']
|
19
|
-
spec.add_development_dependency 'tomlrb', ['<= 1.2.2']
|
20
|
-
spec.add_development_dependency 'rubocop', ['~> 0.41.1']
|
21
|
-
spec.add_development_dependency 'cmdparse', ['= 2.0.2']
|
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.0'
|
28
|
-
spec.add_dependency 'oily_png', '~> 1.2'
|
29
|
-
end,
|
30
|
-
RUBY_2_0_0 => proc do |spec|
|
31
|
-
spec.add_development_dependency 'rack', ['~> 1.6.0']
|
32
|
-
spec.add_development_dependency 'rubocop', ['<= 0.46.0']
|
33
|
-
spec.add_development_dependency 'net-http-persistent', ['< 3.0.0']
|
34
|
-
spec.add_development_dependency 'sauce'
|
35
|
-
spec.add_dependency 'nokogiri', '~> 1.6.0'
|
36
|
-
spec.add_development_dependency 'appium_lib', '< 9.1.0'
|
37
|
-
spec.add_dependency 'oily_png', '= 1.2.0'
|
38
|
-
end,
|
39
|
-
RUBY_2_2_2 => proc do |spec|
|
40
|
-
spec.add_development_dependency 'rubocop', ['<= 0.46.0']
|
41
|
-
spec.add_development_dependency 'sauce'
|
42
|
-
spec.add_development_dependency 'appium_lib'
|
43
|
-
spec.add_dependency 'oily_png', '~> 1.2'
|
44
|
-
end,
|
45
|
-
RUBY_2_4_0 => proc do |spec|
|
46
|
-
spec.add_development_dependency 'appium_lib'
|
47
|
-
spec.add_development_dependency 'rubocop', ['<= 0.46.0']
|
48
|
-
spec.add_dependency 'oily_png', '~> 1.2'
|
49
|
-
end
|
50
|
-
}.freeze
|
51
|
-
|
52
|
-
Gem::Specification.new do |spec|
|
53
|
-
spec.name = 'eyes_selenium'
|
54
|
-
spec.version = Applitools::VERSION
|
55
|
-
spec.authors = ['Applitools Team']
|
56
|
-
spec.email = ['team@applitools.com']
|
57
|
-
spec.description = 'Applitools Ruby SDK'
|
58
|
-
spec.summary = 'Applitools Ruby SDK'
|
59
|
-
spec.homepage = 'https://www.applitools.com'
|
60
|
-
spec.license = 'Apache License, Version 2.0'
|
61
|
-
|
62
|
-
spec.files = `git ls-files`.split($RS)
|
63
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
64
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
65
|
-
spec.require_paths = ['lib']
|
66
|
-
|
67
|
-
spec.add_dependency 'selenium-webdriver'
|
68
|
-
spec.add_dependency 'poltergeist', '~> 1.9'
|
69
|
-
spec.add_dependency 'chunky_png', '= 1.3.6'
|
70
|
-
spec.add_dependency 'faraday'
|
71
|
-
spec.add_dependency 'oj'
|
72
|
-
spec.add_dependency 'watir'
|
73
|
-
|
74
|
-
spec.add_development_dependency 'bundler'
|
75
|
-
spec.add_development_dependency 'rake'
|
76
|
-
spec.add_development_dependency 'capybara'
|
77
|
-
spec.add_development_dependency 'rspec', '>= 3'
|
78
|
-
|
79
|
-
EYES_GEM_SPECS[RUBY_KEY].call spec
|
80
|
-
|
81
|
-
# Exclude debugging support on Travis CI, due to its incompatibility with jruby and older rubies.
|
82
|
-
unless ENV['TRAVIS'] || CURRENT_RYBY_VERSION < Gem::Version.new('2.0.0')
|
83
|
-
spec.add_development_dependency 'pry'
|
84
|
-
spec.add_development_dependency 'pry-byebug'
|
85
|
-
spec.add_development_dependency 'byebug'
|
86
|
-
spec.add_development_dependency 'pry-doc'
|
87
|
-
spec.add_development_dependency 'pry-stack_explorer'
|
88
|
-
end
|
89
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'securerandom'
|
2
|
-
|
3
|
-
module Applitools::Base
|
4
|
-
class BatchInfo
|
5
|
-
attr_accessor :name, :started_at, :id
|
6
|
-
|
7
|
-
def initialize(name = nil, started_at = Time.now)
|
8
|
-
@name = name
|
9
|
-
@started_at = started_at
|
10
|
-
@id = SecureRandom.uuid
|
11
|
-
end
|
12
|
-
|
13
|
-
def to_hash
|
14
|
-
{
|
15
|
-
id: @id,
|
16
|
-
name: @name,
|
17
|
-
started_at: @started_at.iso8601
|
18
|
-
}
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module Applitools::Base
|
2
|
-
Dimension = Struct.new(:width, :height) do
|
3
|
-
def to_hash
|
4
|
-
{
|
5
|
-
width: width,
|
6
|
-
height: height
|
7
|
-
}
|
8
|
-
end
|
9
|
-
|
10
|
-
def values
|
11
|
-
[width, height]
|
12
|
-
end
|
13
|
-
|
14
|
-
def -(other)
|
15
|
-
self.width -= other.width
|
16
|
-
self.height -= other.height
|
17
|
-
self
|
18
|
-
end
|
19
|
-
|
20
|
-
def +(other)
|
21
|
-
self.width += other.width
|
22
|
-
self.height += other.height
|
23
|
-
self
|
24
|
-
end
|
25
|
-
|
26
|
-
def to_s
|
27
|
-
values.to_s
|
28
|
-
end
|
29
|
-
|
30
|
-
class << self
|
31
|
-
def for(other)
|
32
|
-
new(other.width, other.height)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Applitools::Base
|
2
|
-
class Environment
|
3
|
-
def initialize(os = nil, hosting_app = nil, display_size = nil, inferred = nil)
|
4
|
-
@os = os
|
5
|
-
@hosting_app = hosting_app
|
6
|
-
@display_size = display_size
|
7
|
-
@inferred = inferred
|
8
|
-
end
|
9
|
-
|
10
|
-
def to_hash
|
11
|
-
{
|
12
|
-
os: @os,
|
13
|
-
hosting_app: @hosting_app,
|
14
|
-
display_size: @display_size.to_hash,
|
15
|
-
inferred: @inferred
|
16
|
-
}
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|