mini_autobot 0.4.0 → 0.5.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: a14588e16f8b9c434b101780dd8fb1fa71817cb9
4
- data.tar.gz: 2e2afd19b5fec98af6004574ab86381fee2e0187
3
+ metadata.gz: e3d3f8c199d91925344353710e03c578672d7b81
4
+ data.tar.gz: a382bb4d189785fdd3bc0246fea2f9932bcb4c31
5
5
  SHA512:
6
- metadata.gz: 0feb69768feedbaf3854a029cdda38087a804b2ddb0f8ef916165df120c5586c29be90db121ff7778dddc9a2091793673cde195985dff87f551be79f5938e373
7
- data.tar.gz: 5979f5305990382caa7e682c8d23513d9e0f09b82b7e4cb21cbc59f15c97f91d3e0bb729c354f7b65f45afd34b978b7314cf0532b9f72a0be82eecef246c1afe
6
+ metadata.gz: 1ff48851c618fc2ded94312117c6f158ffc3ab3b2c579d24f53a9ea5a678c15abccbd1b6c32cb541b10a227c8208e5f968444a69b72fdf955730add380cd99ca
7
+ data.tar.gz: 290267038060aa30ce6da5d93ac7558b4b76fabc6b2fa1b8e72373cfcf371491ee5ccf514048e99da4a498ecb3b99805f7278ca3f100fd263967536a41152f96
data/lib/mini_autobot.rb CHANGED
@@ -11,7 +11,7 @@ require 'erb'
11
11
  require 'faker'
12
12
  require 'selenium/webdriver'
13
13
  require 'rest-client'
14
-
14
+ require 'json'
15
15
  require 'cgi'
16
16
  require 'pathname'
17
17
 
@@ -122,19 +122,8 @@ module MiniAutobot
122
122
  # call saucelabs REST API to get last #{limit} jobs' statuses
123
123
  # possible job status: complete, error, in progress
124
124
  def saucelabs_last_n_statuses(limit)
125
- connector = MiniAutobot.settings.connector # eg. saucelabs:phu:win7_ie11
126
- overrides = connector.to_s.split(/:/)
127
- file_name = overrides.shift
128
- path = MiniAutobot.root.join('config/mini_autobot', 'connectors')
129
- filepath = path.join("#{file_name}.yml")
130
- raise ArgumentError, "Cannot load profile #{file_name.inspect} because #{filepath.inspect} does not exist" unless filepath.exist?
131
- cfg = YAML.load(File.read(filepath))
132
- cfg = Connector.resolve(cfg, overrides)
133
- cfg.freeze
134
- username = cfg["hub"]["user"]
135
- access_key = cfg["hub"]["pass"]
136
-
137
- require 'json'
125
+ username = MiniAutobot.settings.sauce_username
126
+ access_key = MiniAutobot.settings.sauce_access_key
138
127
 
139
128
  # call api to get most recent #{limit} jobs' ids
140
129
  http_auth = "https://#{username}:#{access_key}@saucelabs.com/rest/v1/#{username}/jobs?limit=#{limit}"
@@ -33,6 +33,19 @@ module MiniAutobot
33
33
  hsh.fetch(:env, :rent_qa).to_s
34
34
  end
35
35
 
36
+ def sauce_session_http_auth(driver)
37
+ session_id = driver.session_id
38
+ "https://#{sauce_username}:#{sauce_access_key}@saucelabs.com/rest/v1/#{sauce_username}/jobs/#{session_id}"
39
+ end
40
+
41
+ def sauce_username
42
+ sauce_user["user"]
43
+ end
44
+
45
+ def sauce_access_key
46
+ sauce_user["pass"]
47
+ end
48
+
36
49
  def io
37
50
  hsh[:io]
38
51
  end
@@ -83,6 +96,19 @@ module MiniAutobot
83
96
  private
84
97
  attr_reader :hsh
85
98
 
99
+ def sauce_user
100
+ overrides = connector.split(/:/)
101
+ file_name = overrides.shift
102
+ path = MiniAutobot.root.join('config/mini_autobot', 'connectors')
103
+ filepath = path.join("#{file_name}.yml")
104
+ raise ArgumentError, "Cannot load profile #{file_name.inspect} because #{filepath.inspect} does not exist" unless filepath.exist?
105
+
106
+ cfg = YAML.load(File.read(filepath))
107
+ cfg = Connector.resolve(cfg, overrides)
108
+ cfg.freeze
109
+ cfg["hub"]
110
+ end
111
+
86
112
  end
87
113
 
88
114
  end
@@ -1,4 +1,3 @@
1
-
2
1
  module MiniAutobot
3
2
  module Utils
4
3
 
@@ -32,6 +31,13 @@ module MiniAutobot
32
31
  @driver = override_driver if !override_driver.nil?
33
32
  instance = klass.new(@driver)
34
33
 
34
+ # Set SauceLabs session(job) name to test's name if running on Saucelabs
35
+ begin
36
+ update_sauce_session_name if connector_is_saucelabs? && !@driver.nil?
37
+ rescue
38
+ self.logger.debug "Failed setting saucelabs session name for #{name()}"
39
+ end
40
+
35
41
  # Before visiting the page, do any pre-processing necessary, if any,
36
42
  # but only visit the page if the pre-processing succeeds
37
43
  if block_given?
@@ -63,10 +69,9 @@ module MiniAutobot
63
69
  take_screenshot
64
70
  end
65
71
  begin
66
- update_sauce_session if connector_is_saucelabs? && !@driver.nil?
67
- self.logger.debug "Finished setting saucelabs session name for #{name()}"
72
+ update_sauce_session_status if connector_is_saucelabs? && !@driver.nil? && !skipped?
68
73
  rescue
69
- self.logger.debug "Failed setting saucelabs session name for #{name()}"
74
+ self.logger.debug "Failed setting saucelabs session status for #{name()}"
70
75
  end
71
76
 
72
77
  MiniAutobot::Connector.finalize!
@@ -124,27 +129,16 @@ module MiniAutobot
124
129
  end
125
130
 
126
131
  # Update SauceLabs session(job) name
127
- # Update session(job) status if test is not skipped
128
- def update_sauce_session
129
- connector = MiniAutobot.settings.connector # eg. saucelabs:phu:win7_ie11
130
- overrides = connector.to_s.split(/:/)
131
- new_tags = overrides[2]+"_by_"+overrides[1]
132
- file_name = overrides.shift
133
- path = MiniAutobot.root.join('config/mini_autobot', 'connectors')
134
- filepath = path.join("#{file_name}.yml")
135
- raise ArgumentError, "Cannot load profile #{file_name.inspect} because #{filepath.inspect} does not exist" unless filepath.exist?
136
-
137
- cfg = YAML.load(File.read(filepath))
138
- cfg = Connector.resolve(cfg, overrides)
139
- cfg.freeze
140
- username = cfg["hub"]["user"]
141
- access_key = cfg["hub"]["pass"]
132
+ def update_sauce_session_name
133
+ http_auth = MiniAutobot.settings.sauce_session_http_auth(@driver)
134
+ body = { "name" => name() }
135
+ RestClient.put(http_auth, body.to_json, {:content_type => "application/json"})
136
+ end
142
137
 
143
- require 'json'
144
- session_id = @driver.session_id
145
- http_auth = "https://#{username}:#{access_key}@saucelabs.com/rest/v1/#{username}/jobs/#{session_id}"
146
- body = { "name" => name(), "tags" => [new_tags] }
147
- body["passed"] = passed? unless skipped?
138
+ # Update session(job) status if test is not skipped
139
+ def update_sauce_session_status
140
+ http_auth = MiniAutobot.settings.sauce_session_http_auth(@driver)
141
+ body = { "passed" => passed? }
148
142
  RestClient.put(http_auth, body.to_json, {:content_type => "application/json"})
149
143
  end
150
144
 
@@ -1,3 +1,3 @@
1
1
  module MiniAutobot
2
- VERSION = '0.4.0'
2
+ VERSION = '0.5.0'
3
3
  end
data/mini_autobot.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.description = %q{Wrapper of minitest and selenium-webdriver that supports multiple webapps
12
12
  and multiple OS/browser ui automation testing, ready to be integrated in
13
13
  development pipeline with jenkins and saucelabs.}
14
- s.homepage = "https://github.com/rentpath/autobots"
14
+ s.homepage = "https://github.com/rentpath/mini_autobot"
15
15
  s.license = "MIT"
16
16
 
17
17
  s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_autobot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ripta Pasay
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-12-02 00:00:00.000000000 Z
13
+ date: 2015-12-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -229,7 +229,7 @@ files:
229
229
  - lib/tapout/custom_reporters/fancy_tap_reporter.rb
230
230
  - lib/yard/tagged_test_case_handler.rb
231
231
  - mini_autobot.gemspec
232
- homepage: https://github.com/rentpath/autobots
232
+ homepage: https://github.com/rentpath/mini_autobot
233
233
  licenses:
234
234
  - MIT
235
235
  metadata: {}