eyes_selenium 1.40.0 → 2.1.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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZGIwYmU3YzViYzJmNWI2Mzg3NzFjZWZiYjg5OTIzMDE2NTQwODYyZQ==
5
- data.tar.gz: !binary |-
6
- NzdkZDQxZTEzMDFlYTc5YWI5Mzg3Yzk0NmNjZDYyMzhlNDlmOThkZA==
2
+ SHA1:
3
+ metadata.gz: 044cf5e9768b727cff07d095e52743a1fb7de84f
4
+ data.tar.gz: c21b7f05504ef82c53736aede6362db9b517078a
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YjA0ZTVmNzI2NjNlZjQ4Yzk1NmE0ZWJkYjUxMTM0OWY3NzcyYzRkZjg2YTVi
10
- ODA4ZDFkNzQ2MDQ3NTMzZThmYjkyMGJmOGIwNzQxZTA5ODMxNWQyZWM1ZmRl
11
- Mjk4OGI1NWI1NDYyY2U0NjM3OWEwNDJiOTViM2EyYjQ0N2E3YTE=
12
- data.tar.gz: !binary |-
13
- ZmY1NzY2MGViNGUwMGZmY2EwMDQ4NzM1YTZhODMyOThjM2UxY2JjOTkwMGI0
14
- NjMwNGQ0N2Q2MDc2MjJkNGIyYjljYWY2YWVkMGFjNTUyZWIyNThhMDU5MjBi
15
- MDVlN2U0YmI4ZTM4YWU1YmQ4Yzk0ZTQ3ZDYwNTg1YWQ2NGQwYWE=
6
+ metadata.gz: a21b00d31a5e8bc57c53a3a19cc0c149994057c1c5f68bc3a4df9eb5f7c3607ca47f8994d67a2c9800878185758048081f15f2c88d48aa4ac7034190ab837fd3
7
+ data.tar.gz: 3c06337c9fbabdc89169b7baea3e02523eeae435841f74634d190fce8e1c49d1e27c0d623827f52f562ae2bc053e5c8cf218946cc6d9902162a2095d923d7465
@@ -1,47 +1,47 @@
1
- require 'eyes_selenium'
2
-
3
- Applitools::Eyes.api_key = 'YOUR_API_KEY'
4
-
5
- ##
6
- # Based on Appium example: https://github.com/appium/appium/blob/master/sample-code/examples/ruby/
7
-
8
- desired_capabilities = {
9
- "device" => "Android",
10
- "version" => "4.2",
11
- "app" => "http://appium.s3.amazonaws.com/NotesList.apk",
12
- "app-package" => "com.example.android.notepad",
13
- "app-activity" => ".NotesList"
14
- }
15
-
16
- def create_note(text)
17
- @driver.find_element(:name, "New note").click
18
- @driver.find_element(:tag_name, "textfield").send_keys text
19
- @eyes.check_window("Note: #{text}")
20
- @driver.find_element(:name, "Save").click
21
- end
22
-
23
- def clear_note_by_text(text)
24
- @driver.find_element(:name, "#{text}").click
25
- @driver.find_element(:tag_name, "textfield").clear
26
- @driver.find_element(:name, "Save").click
27
- end
28
-
29
- @eyes = Applitools::Eyes.new
30
- begin
31
- @driver = Selenium::WebDriver.for(:remote, :url => 'http://127.0.0.1:4723/wd/hub', :desired_capabilities => desired_capabilities)
32
- @driver = @eyes.open(app_name: 'Selenium Israel', test_name: 'Appium Notepad', driver: @driver)
33
- @eyes.check_window("No notes")
34
-
35
- create_note "I didn't expect a kind of Spanish Inquisition!"
36
- create_note "Nobody expects the Spanish Inquisition!"
37
- @eyes.check_window("Two notes")
38
-
39
- clear_note_by_text "I didn't expect a kind of Spanish Inquisition!"
40
- @eyes.check_window("One note")
41
-
42
- @eyes.close
43
- ensure
44
- sleep 5
45
- @eyes.abort_if_not_closed
46
- @driver.quit
47
- end
1
+ require 'eyes_selenium'
2
+
3
+ Applitools::Eyes.api_key = 'YOUR_API_KEY'
4
+
5
+ ##
6
+ # Based on Appium example: https://github.com/appium/appium/blob/master/sample-code/examples/ruby/
7
+
8
+ desired_capabilities = {
9
+ "device" => "Android",
10
+ "version" => "4.2",
11
+ "app" => "http://appium.s3.amazonaws.com/NotesList.apk",
12
+ "app-package" => "com.example.android.notepad",
13
+ "app-activity" => ".NotesList"
14
+ }
15
+
16
+ def create_note(text)
17
+ @driver.find_element(:name, "New note").click
18
+ @driver.find_element(:tag_name, "textfield").send_keys text
19
+ @eyes.check_window("Note: #{text}")
20
+ @driver.find_element(:name, "Save").click
21
+ end
22
+
23
+ def clear_note_by_text(text)
24
+ @driver.find_element(:name, "#{text}").click
25
+ @driver.find_element(:tag_name, "textfield").clear
26
+ @driver.find_element(:name, "Save").click
27
+ end
28
+
29
+ @eyes = Applitools::Eyes.new
30
+ begin
31
+ @driver = Selenium::WebDriver.for(:remote, :url => 'http://127.0.0.1:4723/wd/hub', :desired_capabilities => desired_capabilities)
32
+ @driver = @eyes.open(app_name: 'Selenium Israel', test_name: 'Appium Notepad', driver: @driver)
33
+ @eyes.check_window("No notes")
34
+
35
+ create_note "I didn't expect a kind of Spanish Inquisition!"
36
+ create_note "Nobody expects the Spanish Inquisition!"
37
+ @eyes.check_window("Two notes")
38
+
39
+ clear_note_by_text "I didn't expect a kind of Spanish Inquisition!"
40
+ @eyes.check_window("One note")
41
+
42
+ @eyes.close
43
+ ensure
44
+ sleep 5
45
+ @eyes.abort_if_not_closed
46
+ @driver.quit
47
+ end
@@ -4,13 +4,21 @@ class Applitools::AgentConnector
4
4
  headers 'Accept' => 'application/json'
5
5
  ssl_ca_file File.join(File.dirname(File.expand_path(__FILE__)), '../../../certs/cacert.pem').to_s
6
6
  default_timeout 300
7
- #debug_output $stdout # comment out when not debugging
8
7
 
9
- attr_reader :uri, :auth
10
- def initialize(base_uri, username, password)
11
- # Remove trailing slashes in base uri and add the running sessions endpoint uri.
12
- @uri = base_uri.gsub(/\/$/,"") + "/api/sessions/running"
13
- @auth = { username: username, password: password }
8
+ # comment out when not debugging
9
+ #http_proxy 'localhost', 8888
10
+ #debug_output $stdout
11
+
12
+ attr_accessor :server_url, :api_key
13
+
14
+ def server_url=(server_url)
15
+ @server_url = server_url
16
+ # Remove trailing slashes in server url and add the running sessions endpoint uri.
17
+ @endpoint_uri = server_url.gsub(/\/$/,'') + '/api/sessions/running'
18
+ end
19
+
20
+ def initialize(server_url)
21
+ self.server_url = server_url
14
22
  end
15
23
 
16
24
  def match_window(session, data)
@@ -18,26 +26,26 @@ class Applitools::AgentConnector
18
26
  json_data = data.to_hash.to_json.force_encoding('BINARY') # Notice that this does not include the screenshot
19
27
  body = [json_data.length].pack('L>') + json_data + data.screenshot
20
28
 
21
- res = self.class.post(uri + "/#{session.id}",basic_auth: auth, body: body)
22
- raise Applitools::EyesError.new("could not connect to server") if res.code != 200
23
- res.parsed_response["asExpected"]
29
+ res = self.class.post(@endpoint_uri + "/#{session.id}", query: {apiKey: api_key}, body: body)
30
+ raise Applitools::EyesError.new('could not connect to server') if res.code != 200
31
+ res.parsed_response['asExpected']
24
32
  end
25
33
 
26
34
  def start_session(session_start_info)
27
35
  self.class.headers 'Content-Type' => 'application/json'
28
- res = self.class.post(uri, basic_auth: auth, body: { startInfo: session_start_info.to_hash }.to_json)
36
+ res = self.class.post(@endpoint_uri, query: {apiKey: api_key}, body: { startInfo: session_start_info.to_hash }.to_json)
29
37
  status_code = res.response.message
30
38
  parsed_res = res.parsed_response
31
- Applitools::Session.new(parsed_res["id"], parsed_res["url"], status_code == "Created" )
39
+ Applitools::Session.new(parsed_res['id'], parsed_res['url'], status_code == 'Created' )
32
40
  end
33
41
 
34
42
  def stop_session(session, aborted=nil, save=false)
35
43
  self.class.headers 'Content-Type' => 'application/json'
36
44
  res = self.class.send_long_request('stop_session') do
37
- self.class.delete(uri + "/#{session.id}", basic_auth: auth, query: { aborted: aborted.to_s, updateBaseline: save.to_s })
45
+ self.class.delete(@endpoint_uri + "/#{session.id}", query: { aborted: aborted.to_s, updateBaseline: save.to_s, apiKey: api_key })
38
46
  end
39
47
  parsed_res = res.parsed_response
40
- parsed_res.delete("$id")
48
+ parsed_res.delete('$id')
41
49
  Applitools::TestResults.new(*parsed_res.values)
42
50
  end
43
51
 
@@ -47,6 +55,7 @@ class Applitools::AgentConnector
47
55
  # Args:
48
56
  # name: (String) name of the method being executed
49
57
  # request_block: (block) The actual block to be executed. Will be called using "yield"
58
+ # noinspection RubyUnusedLocalVariable
50
59
  def self.send_long_request(name, &request_block)
51
60
  delay = 2 # seconds
52
61
 
@@ -1,32 +1,52 @@
1
1
  class Applitools::Eyes
2
2
 
3
3
  DEFAULT_MATCH_TIMEOUT = 2.0
4
- AGENT_ID = 'eyes.selenium.ruby/' + Applitools::VERSION
4
+ BASE_AGENT_ID = 'eyes.selenium.ruby/' + Applitools::VERSION
5
5
  DEFAULT_EYES_SERVER = 'https://eyessdk.applitools.com'
6
6
 
7
- class << self
8
- attr_accessor :api_key
9
-
10
- def log_handler=(handler)
11
- EyesLogger.log_handler = handler
12
- end
13
- end
14
-
15
- # Class instance variables (static variables)
16
- @api_key = nil
17
-
18
7
  private
19
- attr_reader :agent_connector
8
+ attr_reader :agent_connector, :full_agent_id
20
9
  attr_accessor :session, :session_start_info, :match_window_task, :should_match_window_run_once_on_timeout,
21
10
  :dont_get_title
22
11
 
23
12
  public
24
- attr_reader :disabled, :app_name, :test_name, :is_open, :viewport_size, :failure_reports, :match_level, :driver
13
+ attr_reader :app_name, :test_name, :is_open, :viewport_size, :failure_reports, :match_level, :driver
25
14
  attr_accessor :match_timeout, :batch, :host_os, :host_app, :branch_name, :parent_branch_name, :user_inputs,
26
- :save_new_tests, :save_failed_tests
15
+ :save_new_tests, :save_failed_tests, :api_key, :is_disabled, :server_url, :agent_id, :log_handler
16
+
17
+ def log_handler
18
+ EyesLogger.log_handler
19
+ end
20
+
21
+ def log_handler=(handler)
22
+ EyesLogger.log_handler = handler
23
+ end
27
24
 
28
25
  def api_key
29
- self.class.api_key
26
+ @agent_connector.api_key
27
+ end
28
+
29
+ def api_key=(api_key)
30
+ @agent_connector.api_key = api_key
31
+ end
32
+
33
+ def server_url
34
+ @agent_connector.server_url
35
+ end
36
+
37
+ def server_url=(server_url)
38
+ if server_url.nil?
39
+ @agent_connector.server_url = DEFAULT_EYES_SERVER
40
+ else
41
+ @agent_connector.server_url = server_url
42
+ end
43
+ end
44
+
45
+ def full_agent_id
46
+ if agent_id.nil?
47
+ return BASE_AGENT_ID
48
+ end
49
+ "#{agent_id} [#{BASE_AGENT_ID}]"
30
50
  end
31
51
 
32
52
  def title
@@ -42,13 +62,14 @@ class Applitools::Eyes
42
62
 
43
63
  def initialize(params={})
44
64
 
45
- @disabled = params[:disabled]
65
+ @is_disabled = false
46
66
 
47
67
  return if disabled?
48
68
 
69
+ @api_key = nil
49
70
  @user_inputs = []
50
71
  server_url = params.fetch(:server_url, DEFAULT_EYES_SERVER)
51
- @agent_connector = Applitools::AgentConnector.new(server_url, AGENT_ID, api_key)
72
+ @agent_connector = Applitools::AgentConnector.new(server_url)
52
73
  @match_timeout = DEFAULT_MATCH_TIMEOUT
53
74
  @failure_reports = Applitools::FailureReports::ON_CLOSE
54
75
  @save_new_tests = true
@@ -146,8 +167,8 @@ class Applitools::Eyes
146
167
  instructions = "Please approve the new baseline at #{session_results_url}"
147
168
  EyesLogger.info "--- New test ended. #{instructions}"
148
169
  if raise_ex
149
- message = "' #{session_start_info.scenario_id_or_name} of"\
150
- " #{session_start_info.app_id_or_name}. #{instructions}"
170
+ message = "'#{session_start_info.scenario_id_or_name}' of"\
171
+ " '#{session_start_info.app_id_or_name}'. #{instructions}"
151
172
  raise Applitools::NewTestError.new(message, results)
152
173
  end
153
174
  return results
@@ -158,7 +179,7 @@ class Applitools::Eyes
158
179
  EyesLogger.info "--- Failed test ended. See details at #{session_results_url}"
159
180
  if raise_ex
160
181
  message = "'#{session_start_info.scenario_id_or_name}' of"\
161
- "#{session_start_info.app_id_or_name}''. see details at #{session_results_url}"
182
+ " '#{session_start_info.app_id_or_name}'. see details at #{session_results_url}"
162
183
  raise Applitools::TestFailedError.new(message, results)
163
184
  end
164
185
  return results
@@ -207,7 +228,7 @@ class Applitools::Eyes
207
228
  private
208
229
 
209
230
  def disabled?
210
- disabled
231
+ is_disabled
211
232
  end
212
233
 
213
234
  def get_driver(params)
@@ -246,7 +267,7 @@ class Applitools::Eyes
246
267
  self.batch ||= Applitools::BatchInfo.new
247
268
  app_env = Applitools::Environment.new(host_os, host_app, viewport_size, inferred_environment)
248
269
  self.session_start_info = Applitools::StartInfo.new(
249
- AGENT_ID, app_name, test_name, batch, app_env, match_level, nil, branch_name, parent_branch_name
270
+ full_agent_id, app_name, test_name, batch, app_env, match_level, nil, branch_name, parent_branch_name
250
271
  )
251
272
  self.session = agent_connector.start_session(session_start_info)
252
273
  self.should_match_window_run_once_on_timeout = session.new_session?
@@ -1,3 +1,3 @@
1
1
  module Applitools
2
- VERSION = '1.40.0'
2
+ VERSION = '2.1.0'
3
3
  end
@@ -1,16 +1,14 @@
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
1
  require 'eyes_selenium'
6
2
  require 'logger'
7
3
 
8
- Applitools::Eyes.api_key = 'YOUR_API_KEY'
9
- Applitools::Eyes.log_handler = Logger.new(STDOUT)
4
+ # require 'openssl'
5
+ # OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
10
6
 
11
7
  eyes = Applitools::Eyes.new
12
8
 
13
9
  my_webdriver = Selenium::WebDriver.for :firefox
10
+ eyes.api_key = 'YOUR_API_KEY'
11
+ eyes.log_handler = Logger.new(STDOUT)
14
12
 
15
13
  begin
16
14
  eyes.test(app_name: 'Ruby SDK', test_name: 'Applitools website test', viewport_size: {width: 1024, height: 768}, driver: my_webdriver) do |driver|
metadata CHANGED
@@ -1,125 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eyes_selenium
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.40.0
4
+ version: 2.1.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: 2014-06-18 00:00:00.000000000 Z
11
+ date: 2014-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: selenium-webdriver
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.37'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.37'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: httparty
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: oily_png
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.1.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.1.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.3'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.3'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: 2.2.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ! '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: 2.2.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: capybara
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ! '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: 2.1.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ! '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: 2.1.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: sinatra
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ! '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ! '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  description: Applitools Ruby SDK
@@ -129,8 +129,8 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
- - .gitignore
133
- - .rspec
132
+ - ".gitignore"
133
+ - ".rspec"
134
134
  - Gemfile
135
135
  - LICENSE.txt
136
136
  - README.md
@@ -176,17 +176,17 @@ require_paths:
176
176
  - lib
177
177
  required_ruby_version: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - ! '>='
179
+ - - ">="
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  required_rubygems_version: !ruby/object:Gem::Requirement
183
183
  requirements:
184
- - - ! '>='
184
+ - - ">="
185
185
  - !ruby/object:Gem::Version
186
186
  version: '0'
187
187
  requirements: []
188
188
  rubyforge_project:
189
- rubygems_version: 2.1.11
189
+ rubygems_version: 2.2.2
190
190
  signing_key:
191
191
  specification_version: 4
192
192
  summary: Applitools Ruby SDK