gless 1.5.2 → 1.6

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3171f5e0fdfe175806327383ff42c0d96b842a6
4
- data.tar.gz: d4993218e8f18d9f34365bd260fdc07aa6c66c73
3
+ metadata.gz: 6094105504a01a7ceda507eb2a2de510f20fe84a
4
+ data.tar.gz: 8abe86a6fd223db704e5d88b3b047fd920531115
5
5
  SHA512:
6
- metadata.gz: f6a84369b7eabd932a57ac13d5bcf462f86215b5a76fdb1132316ee1a3ab00487e2c661e09560630b8815bf5ef46b9fd02748d5c6506e67f4c4b78f63baf9ca4
7
- data.tar.gz: 8f8e589f457205c9fdf6da23072ca8940d47a868d07a30672d1aba4517502762caf214df03a8c2fc25a74e9cab2a4466f6b4dc421048339d9de3aee7ae5e91c0
6
+ metadata.gz: cb428c193c09e266decac2e913f443cac3477f0f70d8a3813d49cf8059d0cba16ba6dc1ca2b0620988444aef438725f183e96a46d41296e68ba03636cd4f7315
7
+ data.tar.gz: 3ce61d0b7ce91054352a0861d349e0ba32236f27758bc6f0589882107ed9b23e640db3383b6be19f9bbd63540e8a0a73a13a705d3061527322101f315d89fcc6
data/README.md CHANGED
@@ -192,12 +192,12 @@ produce some pretty verbose logging of what it's doing.
192
192
 
193
193
  A less crazy version is ":verbose: true".
194
194
 
195
- It will also create a replay log directory which is intended to be
196
- viewed in a browser. The directory location defaults to
197
- ~/public_html/watir_replay/test/ ; the initialization of
198
- Gless::Logger determines that location. Most actions that Gless
199
- performs will cause the replay log to be updated a copy of the HTML
200
- source as Gless/Watir/Selenium/WebDriver sees it.
195
+ If replay is true in the config file, it will also create a replay
196
+ log directory which is intended to be viewed in a browser. The
197
+ directory location defaults to ~/public_html/watir_replay/test/ ;
198
+ the initialization of Gless::Logger determines that location. Most
199
+ actions that Gless performs will cause the replay log to be updated
200
+ a copy of the HTML source as Gless/Watir/Selenium/WebDriver sees it.
201
201
 
202
202
  If you have ":screenshots: true" (along with debugging), screenshots
203
203
  will also be taken showing the visual state of the browser at the
@@ -15,6 +15,9 @@
15
15
  # :max_duration: 5400 # Sauce specific
16
16
  :verbose: false # Whether to engage in more verbose/info level logging
17
17
  :debug: false # Whether to engage in debug logging
18
+ :replay: false # Whether to create a replay log, which shows html for each step of operations
19
+ :replay_path: "%{home}/public_html/watir_replay/%{tag}"
20
+ # The path to put the replay logs; should probably be web accessible to be of much use; %{home} is replaced as you would expect
18
21
  :screenshots: false # Whether, if debugging is on, to create screenshots as part of the replay log
19
22
  :thumbnails: false # Whether, if screenshots are on, to create small-ish "thumbnail" pictures on the replay page; requires the imagemagick system package and the mini_magick gem
20
23
  :cache: false # Whether, by default, to cache elements, significantly improving performance. For individual elements, caching can be disabled by adding ":cache => false" to the element specifier.
data/lib/gless/logger.rb CHANGED
@@ -40,30 +40,34 @@ module Gless
40
40
 
41
41
  @ssnum = 0 # For snapshot pictures
42
42
 
43
- @replay_path=sprintf(replay_path, { :home => ENV['HOME'], :tag => tag, :replay => replay })
44
- FileUtils.rm_rf(@replay_path)
45
- FileUtils.mkdir(@replay_path)
46
-
47
- replay_log_file = File.open("#{@replay_path}/index.html", "w")
48
- @replay_log = ::Logger.new replay_log_file
49
-
50
- #@replay_log.formatter = proc do |severity, datetime, progname, msg|
51
- # # I, [2012-08-14T15:30:10.736784 #14647] INFO -- : <p>Launching remote browser</p>
52
- # "<p>#{severity[0]}, [#{datetime} #{progname}]: #{severity} -- : #{msg}</p>\n"
53
- #end
54
-
55
43
  original_formatter = ::Logger::Formatter.new
56
44
 
57
- # Add in the tag and html-ify
58
- @replay_log.formatter = proc { |severity, datetime, progname, msg|
59
- # Can't flush after from here, so flush prior stuff
60
- replay_log_file.flush
61
- npn = "#{progname} #{tag} ".sub(/^\s*/,'').sub(/\s*$/,'')
62
- stuff=original_formatter.call(severity, datetime, "#{progname} #{tag} ", msg)
63
- #"<p>#{ERB::Util.html_escape(stuff.chomp)}</p>\n"
64
- "<p>#{stuff.chomp}</p>\n"
65
- }
66
- @replay_log.level = ::Logger::WARN
45
+ if replay
46
+ @replay_path=sprintf(replay_path, { :home => ENV['HOME'], :tag => tag, :replay => replay })
47
+ FileUtils.rm_rf(@replay_path)
48
+ FileUtils.mkdir(@replay_path)
49
+
50
+ replay_log_file = File.open("#{@replay_path}/index.html", "w")
51
+ @replay_log = ::Logger.new replay_log_file
52
+
53
+ #@replay_log.formatter = proc do |severity, datetime, progname, msg|
54
+ # # I, [2012-08-14T15:30:10.736784 #14647] INFO -- : <p>Launching remote browser</p>
55
+ # "<p>#{severity[0]}, [#{datetime} #{progname}]: #{severity} -- : #{msg}</p>\n"
56
+ #end
57
+
58
+ # Add in the tag and html-ify
59
+ @replay_log.formatter = proc { |severity, datetime, progname, msg|
60
+ # Can't flush after from here, so flush prior stuff
61
+ replay_log_file.flush
62
+ npn = "#{progname} #{tag} ".sub(/^\s*/,'').sub(/\s*$/,'')
63
+ stuff=original_formatter.call(severity, datetime, "#{progname} #{tag} ", msg)
64
+ #"<p>#{ERB::Util.html_escape(stuff.chomp)}</p>\n"
65
+ "<p>#{stuff.chomp}</p>\n"
66
+ }
67
+ @replay_log.level = ::Logger::WARN
68
+ else
69
+ @replay_log = nil
70
+ end
67
71
 
68
72
  @normal_log = ::Logger.new(STDOUT)
69
73
  # Add in the tag
@@ -77,7 +81,9 @@ module Gless
77
81
  # Passes on all the normal Logger methods. By default, logs to
78
82
  # both the normal log and the replay log.
79
83
  def method_missing(m, *args, &block)
80
- @replay_log.send(m, *args, &block)
84
+ if @replay_log
85
+ @replay_log.send(m, *args, &block)
86
+ end
81
87
  @normal_log.send(m, *args, &block)
82
88
  end
83
89
 
@@ -87,36 +93,38 @@ module Gless
87
93
  # @param [Watir::Browser] browser
88
94
  # @param [Gless::Session] session
89
95
  def add_to_replay_log( browser, session )
90
- @ssnum = @ssnum + 1
91
-
92
- if session.get_config :global, :screenshots
93
- begin
94
- browser.driver.save_screenshot "#{@replay_path}/screenshot_#{@ssnum}.png"
95
-
96
- if session.get_config :global, :thumbnails
97
- require 'mini_magick'
98
-
99
- image = MiniMagick::Image.open("#{@replay_path}/screenshot_#{@ssnum}.png")
100
- image.resize "400"
101
- image.write "#{@replay_path}/screenshot_#{@ssnum}_thumb.png"
102
- FileUtils.chmod 0755, "#{@replay_path}/screenshot_#{@ssnum}_thumb.png"
103
-
104
- @replay_log.debug "Screenshot: <a href='screenshot_#{@ssnum}.png'><img src='screenshot_#{@ssnum}_thumb.png' /></a>"
105
- else
106
- @replay_log.debug "Screenshot: <a href='screenshot_#{@ssnum}.png'>Screenshot</a>"
96
+ if @replay_log
97
+ @ssnum = @ssnum + 1
98
+
99
+ if session.get_config :global, :screenshots
100
+ begin
101
+ browser.driver.save_screenshot "#{@replay_path}/screenshot_#{@ssnum}.png"
102
+
103
+ if session.get_config :global, :thumbnails
104
+ require 'mini_magick'
105
+
106
+ image = MiniMagick::Image.open("#{@replay_path}/screenshot_#{@ssnum}.png")
107
+ image.resize "400"
108
+ image.write "#{@replay_path}/screenshot_#{@ssnum}_thumb.png"
109
+ FileUtils.chmod 0755, "#{@replay_path}/screenshot_#{@ssnum}_thumb.png"
110
+
111
+ @replay_log.debug "Screenshot: <a href='screenshot_#{@ssnum}.png'><img src='screenshot_#{@ssnum}_thumb.png' /></a>"
112
+ else
113
+ @replay_log.debug "Screenshot: <a href='screenshot_#{@ssnum}.png'>Screenshot</a>"
114
+ end
115
+ rescue Exception => e
116
+ @normal_log.warn "Screenshot failed with exception #{e}"
107
117
  end
108
- rescue Exception => e
109
- @normal_log.warn "Screenshot failed with exception #{e}"
110
118
  end
111
- end
112
119
 
113
- html=browser.html
114
- htmlFile = File.new("#{@replay_path}/html_capture_#{@ssnum}.txt", "w")
115
- htmlFile.write(html)
116
- htmlFile.close
120
+ html=browser.html
121
+ htmlFile = File.new("#{@replay_path}/html_capture_#{@ssnum}.txt", "w")
122
+ htmlFile.write(html)
123
+ htmlFile.close
117
124
 
118
- @replay_log.debug "<a href='html_capture_#{@ssnum}.txt'>HTML Source</a>"
119
- @replay_log.debug "Force flush"
125
+ @replay_log.debug "<a href='html_capture_#{@ssnum}.txt'>HTML Source</a>"
126
+ @replay_log.debug "Force flush"
127
+ end
120
128
  end
121
129
  end
122
130
  end
@@ -380,7 +380,7 @@ module Gless
380
380
  if trimmed_selectors.inspect =~ /password/i
381
381
  @session.log.debug "WrapWatir: Doing something with passwords, redacted."
382
382
  else
383
- if @session.get_config :global, :debug
383
+ if @session.get_config :global, :replay
384
384
  @session.log.add_to_replay_log( @browser, @session )
385
385
  end
386
386
 
data/lib/gless.rb CHANGED
@@ -6,7 +6,7 @@
6
6
  # project.
7
7
  module Gless
8
8
  # The current version number.
9
- VERSION = '1.5.2'
9
+ VERSION = '1.6'
10
10
 
11
11
  # Sets up the config, logger and browser instances, the ordering
12
12
  # of which is slightly tricky. If a block is given, the config, after being
@@ -26,12 +26,16 @@ module Gless
26
26
  #
27
27
  # @return [Gless::Logger, Gless::EnvConfig, Gless::Browser] logger, config, browser (in that order)
28
28
  def self.setup( tag, hash = nil )
29
- logger = Gless::Logger.new( tag )
30
-
31
29
  # Create the config reading/storage object
32
30
  config = Gless::EnvConfig.new( hash )
33
31
  config = yield config if block_given?
34
32
 
33
+ logger = Gless::Logger.new(
34
+ tag,
35
+ config.get_default( false, :global, :replay ),
36
+ config.get_default( '%{home}/public_html/watir_replay/%{tag}', :global, :replay_path )
37
+ )
38
+
35
39
  # Get the whole backtrace, please.
36
40
  if config.get :global, :debug
37
41
  ::Cucumber.use_full_backtrace = true
@@ -46,14 +50,18 @@ module Gless
46
50
  # Turn on verbose (info) level logging.
47
51
  if config.get :global, :verbose
48
52
  logger.normal_log.level = ::Logger::INFO
49
- logger.replay_log.level = ::Logger::INFO
53
+ if logger.replay_log
54
+ logger.replay_log.level = ::Logger::INFO
55
+ end
50
56
  logger.debug "Verbose/info level logging enabled."
51
57
  end
52
58
 
53
59
  # Turn on debug level logging.
54
60
  if config.get :global, :debug
55
61
  logger.normal_log.level = ::Logger::DEBUG
56
- logger.replay_log.level = ::Logger::DEBUG
62
+ if logger.replay_log
63
+ logger.replay_log.level = ::Logger::DEBUG
64
+ end
57
65
  logger.debug "Debug level logging enabled."
58
66
  end
59
67
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gless
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: '1.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Lee Powell
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-24 00:00:00.000000000 Z
12
+ date: 2014-03-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec