eyes_selenium_ruby 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +13 -0
- data/README.md +66 -0
- data/Rakefile +1 -0
- data/eyes_selenium_ruby.gemspec +30 -0
- data/lib/eyes_selenium_ruby/capybara.rb +21 -0
- data/lib/eyes_selenium_ruby/eyes/agent_connecter.rb +39 -0
- data/lib/eyes_selenium_ruby/eyes/batch_info.rb +14 -0
- data/lib/eyes_selenium_ruby/eyes/driver.rb +145 -0
- data/lib/eyes_selenium_ruby/eyes/element.rb +78 -0
- data/lib/eyes_selenium_ruby/eyes/environment.rb +13 -0
- data/lib/eyes_selenium_ruby/eyes/eyes.rb +179 -0
- data/lib/eyes_selenium_ruby/eyes/eyes_keyboard.rb +25 -0
- data/lib/eyes_selenium_ruby/eyes/eyes_mouse.rb +60 -0
- data/lib/eyes_selenium_ruby/eyes/failure_reports.rb +4 -0
- data/lib/eyes_selenium_ruby/eyes/match_level.rb +7 -0
- data/lib/eyes_selenium_ruby/eyes/match_window_data.rb +18 -0
- data/lib/eyes_selenium_ruby/eyes/match_window_task.rb +71 -0
- data/lib/eyes_selenium_ruby/eyes/mouse_trigger.rb +19 -0
- data/lib/eyes_selenium_ruby/eyes/region.rb +22 -0
- data/lib/eyes_selenium_ruby/eyes/screenshot_taker.rb +18 -0
- data/lib/eyes_selenium_ruby/eyes/session.rb +14 -0
- data/lib/eyes_selenium_ruby/eyes/start_info.rb +33 -0
- data/lib/eyes_selenium_ruby/eyes/target_app.rb +17 -0
- data/lib/eyes_selenium_ruby/eyes/test_results.rb +21 -0
- data/lib/eyes_selenium_ruby/eyes/text_trigger.rb +15 -0
- data/lib/eyes_selenium_ruby/eyes/viewport_size.rb +109 -0
- data/lib/eyes_selenium_ruby/eyes_logger.rb +18 -0
- data/lib/eyes_selenium_ruby/utils/image_delta_compressor.rb +147 -0
- data/lib/eyes_selenium_ruby/utils.rb +5 -0
- data/lib/eyes_selenium_ruby/version.rb +3 -0
- data/lib/eyes_selenium_ruby.rb +41 -0
- data/spec/capybara_spec.rb +33 -0
- data/spec/driver_spec.rb +10 -0
- data/spec/eyes_spec.rb +156 -0
- data/spec/spec_helper.rb +29 -0
- data/spec/test_app.rb +11 -0
- data/test_script.rb +22 -0
- metadata +225 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'capybara/rspec'
|
3
|
+
require 'eyes_selenium_ruby/capybara'
|
4
|
+
require 'test_app'
|
5
|
+
|
6
|
+
Capybara.app = TestApp
|
7
|
+
|
8
|
+
describe Applitools::Eyes do
|
9
|
+
init_eyes
|
10
|
+
describe 'capybara' do
|
11
|
+
before do
|
12
|
+
eyes.agent_connector.stub(:stop_session).and_return(double("TestResults", mismatches: 0, missing: 0))
|
13
|
+
@navigation = double("navigation")
|
14
|
+
@navigation.stub(:to)
|
15
|
+
end
|
16
|
+
it 'should invoke eyes driver when calling capybara visit inside of eyes.open' do
|
17
|
+
Capybara.current_driver.should == :rack_test
|
18
|
+
|
19
|
+
eyes.driver.should_receive(:navigate).and_return(@navigation)
|
20
|
+
eyes.test(app_name: 'test', test_name: 'test') do |eyes|
|
21
|
+
Capybara.current_driver.should == :selenium
|
22
|
+
eyes.driver.should == Capybara.current_session.driver.instance_variable_get(:@browser)
|
23
|
+
Capybara.current_session.visit '/'
|
24
|
+
eyes.check_window('test')
|
25
|
+
end
|
26
|
+
Capybara.current_driver.should == :rack_test
|
27
|
+
end
|
28
|
+
it 'should not invoke eyes driver when calling capybara visit outside of eyes.open' do
|
29
|
+
eyes.driver.should_not_receive(:navigate)
|
30
|
+
Capybara.current_session.visit '/'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/spec/driver_spec.rb
ADDED
data/spec/eyes_spec.rb
ADDED
@@ -0,0 +1,156 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Applitools::Eyes do
|
4
|
+
init_eyes
|
5
|
+
|
6
|
+
before do
|
7
|
+
eyes.open(app_name: 'test_app', test_name: 'test_app_test')
|
8
|
+
fake_session = Applitools::Session.new(1,"http://fake_url.com", false)
|
9
|
+
eyes.session = fake_session
|
10
|
+
eyes.agent_connector.stub(:stop_session).and_return(double("TestResults", mismatches: 0, missing: 0))
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "#new" do
|
14
|
+
context "doesn't have an apikey" do
|
15
|
+
before do
|
16
|
+
Applitools::Eyes.config[:apikey] = nil
|
17
|
+
end
|
18
|
+
it {expect {Applitools::Eyes.new }.to raise_error }
|
19
|
+
after do
|
20
|
+
Applitools::Eyes.config[:apikey] = 'YOUR_API_KEY_HERE'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
context "has an apikey url" do
|
24
|
+
it {expect {Applitools::Eyes.new }.to_not raise_error }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe ".open" do
|
29
|
+
context "already open" do
|
30
|
+
it "aborts session" do
|
31
|
+
eyes.should_receive(:abort_if_not_closed)
|
32
|
+
expect {eyes.open}.to raise_error
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
describe ".abort_if_not_closed" do
|
39
|
+
it "closes eyes" do
|
40
|
+
expect(eyes).to be_open
|
41
|
+
eyes.send(:abort_if_not_closed)
|
42
|
+
expect(eyes).to_not be_open
|
43
|
+
end
|
44
|
+
|
45
|
+
it "clears session" do
|
46
|
+
eyes.send(:abort_if_not_closed)
|
47
|
+
expect(eyes.session).to be_nil
|
48
|
+
end
|
49
|
+
|
50
|
+
it "stops session" do
|
51
|
+
expect(eyes.agent_connector).to receive(:stop_session)
|
52
|
+
eyes.send(:abort_if_not_closed)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe ".close" do
|
57
|
+
it "stops the session" do
|
58
|
+
eyes.agent_connector.stub(:stop_session).and_return(double("TestResults", mismatches: 0, missing: 0))
|
59
|
+
expect(eyes.agent_connector).to receive(:stop_session)
|
60
|
+
expect(eyes.close)
|
61
|
+
end
|
62
|
+
|
63
|
+
context "new_session" do
|
64
|
+
before { eyes.session.stub(:new_session?).and_return(true) }
|
65
|
+
it "raises NewTestError" do
|
66
|
+
eyes.session_start_info = double().as_null_object
|
67
|
+
expect { eyes.close }.to raise_error(Applitools::NewTestError)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "not new_session" do
|
72
|
+
before do
|
73
|
+
eyes.stub(:session_start_info).and_return double().as_null_object
|
74
|
+
eyes.session.new_session = false
|
75
|
+
end
|
76
|
+
|
77
|
+
it "raises TestFailedError if results have mismatches" do
|
78
|
+
eyes.agent_connector.stub(:stop_session).and_return(double("TestResults", mismatches: 2))
|
79
|
+
expect { eyes.close }.to raise_error(Applitools::TestFailedError)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "raises TestFailedError if results have missing" do
|
83
|
+
eyes.agent_connector.stub(:stop_session).and_return(double("TestResults", mismatches: 0, missing: 2))
|
84
|
+
expect { eyes.close }.to raise_error(Applitools::TestFailedError)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "doesn't raise if old session without mismatches" do
|
88
|
+
eyes.stub_chain(:agent_connector, :stop_session).and_return(double("TestResults", mismatches: 0, missing: 0))
|
89
|
+
expect(eyes.close).to_not raise_error
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe ".check_window" do
|
95
|
+
it "raises EyesError if eyes aren't open"
|
96
|
+
context "no session" do
|
97
|
+
it "creates new session if no session exists"
|
98
|
+
it "creates new MatchWindowTask"
|
99
|
+
end
|
100
|
+
|
101
|
+
context "results are as expected" do
|
102
|
+
it "doesn't raise"
|
103
|
+
end
|
104
|
+
context "results are not as expected" do
|
105
|
+
context "new session" do
|
106
|
+
specify "next check_window will run once on time out"
|
107
|
+
end
|
108
|
+
context "not new session" do
|
109
|
+
context "immediate failreports" do
|
110
|
+
it "raises TestFailedError"
|
111
|
+
end
|
112
|
+
|
113
|
+
context "not immediate failreports" do
|
114
|
+
it "doesn't raise"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe ".test" do
|
121
|
+
it "opens and closes the eyes around the block execution" do
|
122
|
+
eyes.should_receive(:open).ordered
|
123
|
+
eyes.should_receive(:close).ordered
|
124
|
+
eyes.test { "foo" }
|
125
|
+
end
|
126
|
+
|
127
|
+
it "always closes eyes even if there were exceptions" do
|
128
|
+
eyes.stub(:open)
|
129
|
+
eyes.should_receive(:abort_if_not_closed)
|
130
|
+
eyes.test { raise Applitools::EyesError }
|
131
|
+
end
|
132
|
+
|
133
|
+
context "testing .test" do
|
134
|
+
let!(:eyes) do
|
135
|
+
Applitools::Eyes.new
|
136
|
+
end
|
137
|
+
it "catches triggers" do
|
138
|
+
#eyes.send(:abort_if_not_closed)
|
139
|
+
eyes.test(app_name: 'my app1', test_name: 'my test') do |eyes, driver|
|
140
|
+
driver.get "http://www.applitools.com"
|
141
|
+
eyes.check_window("initial")
|
142
|
+
driver.find_element(:css, "li.pricing a").click
|
143
|
+
# return false unless user_inputs.map(&:to_hash) == [{"$type"=>"Applitools.Models.MouseTrigger, Core", :mouseAction=>1, :control=>{"$type"=>"Applitools.Utils.Geometry.MutableRegion, Core", :left=>555, :top=>0, :height=>69, :width=>50}, :location=>{:latitude=>25, :longitude=>34, :altitude=>nil}}]
|
144
|
+
driver.check_window("pricing page")
|
145
|
+
el = driver.find_elements(:css, ".footer-row a").first
|
146
|
+
driver.action.double_click(el).perform
|
147
|
+
# return false unless user_inputs.map(&:to_hash) == [{"$type"=>"Applitools.Models.MouseTrigger, Core", :mouseAction=>3, :control=>{"$type"=>"Applitools.Utils.Geometry.MutableRegion, Core", :left=>0, :top=>0, :height=>115, :width=>376}, :location=>{:x=>115, :y=>376}}]
|
148
|
+
eyes.check_window("in forms")
|
149
|
+
other_el = driver.find_elements(:css, ".s2member-pro-paypal-registration-email").first
|
150
|
+
driver.action.move_to(other_el).click(other_el).send_keys("text1",:space,"text2").perform
|
151
|
+
# return false unless user_inputs.map(&:to_hash) == [{"$type"=>"Applitools.Models.MouseTrigger, Core", :mouseAction=>4, :control=>{"$type"=>"Applitools.Utils.Geometry.MutableRegion, Core", :left=>0, :top=>0, :height=>230, :width=>331}, :location=>{:x=>230, :y=>331}}, {"$type"=>"Applitools.Models.MouseTrigger, Core", :mouseAction=>1, :control=>{"$type"=>"Applitools.Utils.Geometry.MutableRegion, Core", :left=>0, :top=>0, :height=>230, :width=>331}, :location=>{:x=>230, :y=>331}}, {"$type"=>"Applitools.Models.TextTrigger, Core", :text=>"text1", :control=>{"$type"=>"Applitools.Utils.Geometry.MutableRegion, Core", :left=>230, :top=>331, :height=>367, :width=>35}}, {"$type"=>"Applitools.Models.TextTrigger, Core", :text=>"", :control=>{"$type"=>"Applitools.Utils.Geometry.MutableRegion, Core", :left=>230, :top=>331, :height=>367, :width=>35}}, {"$type"=>"Applitools.Models.TextTrigger, Core", :text=>"text2", :control=>{"$type"=>"Applitools.Utils.Geometry.MutableRegion, Core", :left=>230, :top=>331, :height=>367, :width=>35}}]
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
require 'eyes_selenium_ruby'
|
8
|
+
RSpec.configure do |config|
|
9
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
10
|
+
config.run_all_when_everything_filtered = true
|
11
|
+
config.filter_run :focus
|
12
|
+
|
13
|
+
# Run specs in random order to surface order dependencies. If you find an
|
14
|
+
# order dependency and want to debug it, you can fix the order by providing
|
15
|
+
# the seed, which is printed after each run.
|
16
|
+
# --seed 1234
|
17
|
+
config.order = 'random'
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def init_eyes
|
22
|
+
before(:all) do
|
23
|
+
Applitools::Eyes.config[:apikey] = 'YOUR_API_KEY'
|
24
|
+
Applitools::Eyes.config[:server_url] = 'http://eyesbeta.cloudapp.net:8080'
|
25
|
+
end
|
26
|
+
let!(:eyes) do
|
27
|
+
Applitools::Eyes.new
|
28
|
+
end
|
29
|
+
end
|
data/spec/test_app.rb
ADDED
data/test_script.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
## Before running this, please install ruby(installtion changes depending on machine)
|
2
|
+
## Then install rake via `gem install rake` (all ruby developers use this gem)
|
3
|
+
## run `./rake install` in applitools root directory (here), this should install the gem (after we release the gem, users will run `gem install eyes` instead
|
4
|
+
|
5
|
+
require 'eyes_selenium_ruby'
|
6
|
+
|
7
|
+
Applitools::Eyes.config[:apikey] = 'YOUR_API_KEY_HERE'
|
8
|
+
|
9
|
+
eyes = Applitools::Eyes.new
|
10
|
+
|
11
|
+
eyes.test(app_name: 'my app', test_name: 'my test') do |eyes, driver|
|
12
|
+
driver.get "http://www.applitools.com"
|
13
|
+
eyes.check_window("initial")
|
14
|
+
driver.find_element(:css, "li.pricing a").click
|
15
|
+
eyes.check_window("pricing page")
|
16
|
+
el = driver.find_elements(:css, ".footer-row a").first
|
17
|
+
driver.action.double_click(el).perform
|
18
|
+
eyes.check_window("in forms")
|
19
|
+
other_el = driver.find_elements(:css, ".s2member-pro-paypal-registration-email").first
|
20
|
+
driver.action.move_to(other_el).click(other_el).send_keys("applitools").perform
|
21
|
+
eyes.check_window("end")
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,225 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: eyes_selenium_ruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Applitools team
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-10-30 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: selenium-webdriver
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '2.0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: httparty
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: oily_png
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.1.0
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.1.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.3'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.3'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rake
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rspec
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 2.2.0
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.2.0
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: capybara
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 2.1.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 2.1.0
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: sinatra
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
description: Applitools Ruby SDK
|
143
|
+
email:
|
144
|
+
- team@applitools.com
|
145
|
+
executables: []
|
146
|
+
extensions: []
|
147
|
+
extra_rdoc_files: []
|
148
|
+
files:
|
149
|
+
- .gitignore
|
150
|
+
- .rspec
|
151
|
+
- Gemfile
|
152
|
+
- LICENSE.txt
|
153
|
+
- README.md
|
154
|
+
- Rakefile
|
155
|
+
- eyes_selenium_ruby.gemspec
|
156
|
+
- lib/eyes_selenium_ruby.rb
|
157
|
+
- lib/eyes_selenium_ruby/capybara.rb
|
158
|
+
- lib/eyes_selenium_ruby/eyes/agent_connecter.rb
|
159
|
+
- lib/eyes_selenium_ruby/eyes/batch_info.rb
|
160
|
+
- lib/eyes_selenium_ruby/eyes/driver.rb
|
161
|
+
- lib/eyes_selenium_ruby/eyes/element.rb
|
162
|
+
- lib/eyes_selenium_ruby/eyes/environment.rb
|
163
|
+
- lib/eyes_selenium_ruby/eyes/eyes.rb
|
164
|
+
- lib/eyes_selenium_ruby/eyes/eyes_keyboard.rb
|
165
|
+
- lib/eyes_selenium_ruby/eyes/eyes_mouse.rb
|
166
|
+
- lib/eyes_selenium_ruby/eyes/failure_reports.rb
|
167
|
+
- lib/eyes_selenium_ruby/eyes/match_level.rb
|
168
|
+
- lib/eyes_selenium_ruby/eyes/match_window_data.rb
|
169
|
+
- lib/eyes_selenium_ruby/eyes/match_window_task.rb
|
170
|
+
- lib/eyes_selenium_ruby/eyes/mouse_trigger.rb
|
171
|
+
- lib/eyes_selenium_ruby/eyes/region.rb
|
172
|
+
- lib/eyes_selenium_ruby/eyes/screenshot_taker.rb
|
173
|
+
- lib/eyes_selenium_ruby/eyes/session.rb
|
174
|
+
- lib/eyes_selenium_ruby/eyes/start_info.rb
|
175
|
+
- lib/eyes_selenium_ruby/eyes/target_app.rb
|
176
|
+
- lib/eyes_selenium_ruby/eyes/test_results.rb
|
177
|
+
- lib/eyes_selenium_ruby/eyes/text_trigger.rb
|
178
|
+
- lib/eyes_selenium_ruby/eyes/viewport_size.rb
|
179
|
+
- lib/eyes_selenium_ruby/eyes_logger.rb
|
180
|
+
- lib/eyes_selenium_ruby/utils.rb
|
181
|
+
- lib/eyes_selenium_ruby/utils/image_delta_compressor.rb
|
182
|
+
- lib/eyes_selenium_ruby/version.rb
|
183
|
+
- spec/capybara_spec.rb
|
184
|
+
- spec/driver_spec.rb
|
185
|
+
- spec/eyes_spec.rb
|
186
|
+
- spec/spec_helper.rb
|
187
|
+
- spec/test_app.rb
|
188
|
+
- test_script.rb
|
189
|
+
homepage: http://www.applitools.com
|
190
|
+
licenses:
|
191
|
+
- Apache License, Version 2.0
|
192
|
+
post_install_message:
|
193
|
+
rdoc_options: []
|
194
|
+
require_paths:
|
195
|
+
- lib
|
196
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
197
|
+
none: false
|
198
|
+
requirements:
|
199
|
+
- - ! '>='
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
segments:
|
203
|
+
- 0
|
204
|
+
hash: -3642816426594908165
|
205
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
|
+
none: false
|
207
|
+
requirements:
|
208
|
+
- - ! '>='
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: '0'
|
211
|
+
segments:
|
212
|
+
- 0
|
213
|
+
hash: -3642816426594908165
|
214
|
+
requirements: []
|
215
|
+
rubyforge_project:
|
216
|
+
rubygems_version: 1.8.25
|
217
|
+
signing_key:
|
218
|
+
specification_version: 3
|
219
|
+
summary: Applitools Ruby SDK
|
220
|
+
test_files:
|
221
|
+
- spec/capybara_spec.rb
|
222
|
+
- spec/driver_spec.rb
|
223
|
+
- spec/eyes_spec.rb
|
224
|
+
- spec/spec_helper.rb
|
225
|
+
- spec/test_app.rb
|