tddium_reporting 0.0.3
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.
- data/lib/tddium_reporting.rb +20 -0
- data/lib/tddium_reporting/system_capture.rb +80 -0
- data/lib/tddium_reporting/version.rb +4 -0
- metadata +80 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
# Copyright (c) 2011 Solano Labs All Rights Reserved
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + "/tddium_reporting/system_capture")
|
3
|
+
|
4
|
+
runner = defined?(RSpec) ? RSpec : Spec::Runner
|
5
|
+
|
6
|
+
if ENV["TDDIUM"]
|
7
|
+
runner.configure do |config|
|
8
|
+
config.after(:each) do
|
9
|
+
if defined?(selenium_driver)
|
10
|
+
begin
|
11
|
+
reporting = TddiumReporting::SystemCapture.new(selenium_driver, self)
|
12
|
+
reporting.capture_system_state
|
13
|
+
STDOUT.puts "%%TDDIUM_EXAMPLE_ID:#{reporting.example_id}%%"
|
14
|
+
rescue Exception => e
|
15
|
+
STDERR.puts "Problem while capturing system state" + e
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# Copyright (c) 2011 Solano Labs All Rights Reserved
|
2
|
+
#
|
3
|
+
require 'base64'
|
4
|
+
|
5
|
+
module TddiumReporting
|
6
|
+
class SystemCapture
|
7
|
+
attr_reader :example_id
|
8
|
+
|
9
|
+
def initialize(selenium_driver, example)
|
10
|
+
@selenium_driver = selenium_driver
|
11
|
+
@example = example
|
12
|
+
@example_id = Digest::MD5.hexdigest(example.inspect)
|
13
|
+
@things = {:html_capture => "html",
|
14
|
+
:system_screenshot => "png",
|
15
|
+
:page_screenshot => "png",
|
16
|
+
:remote_control_logs => "log"}
|
17
|
+
end
|
18
|
+
|
19
|
+
def path_for(thing)
|
20
|
+
File.expand_path("~/results/#{ENV['TDDIUM_SESSION_ID']}/#{ENV['TDDIUM_TEST_EXEC_ID']}/#{@example_id}-#{thing}.#{@things[thing]}")
|
21
|
+
end
|
22
|
+
|
23
|
+
def capture_system_state
|
24
|
+
# Selenium RC seems to 'freeze' every so often when calling
|
25
|
+
# getHTMLSource, especially when DeepTest timeout is low, I need to investigate...
|
26
|
+
# Set deeptest :timeout_in_seconds => 30 to see it happen
|
27
|
+
begin
|
28
|
+
retrieve_remote_control_logs
|
29
|
+
rescue Exception => e
|
30
|
+
STDERR.puts "WARNING: Could not retrieve remote control logs: #{e}"
|
31
|
+
end
|
32
|
+
begin
|
33
|
+
capture_html_snapshot
|
34
|
+
rescue Exception => e
|
35
|
+
STDERR.puts "WARNING: Could not capture HTML snapshot: #{e}"
|
36
|
+
end
|
37
|
+
begin
|
38
|
+
capture_page_screenshot
|
39
|
+
rescue Exception => e
|
40
|
+
STDERR.puts "WARNING: Could not capture page screenshot: #{e}"
|
41
|
+
end
|
42
|
+
begin
|
43
|
+
capture_system_screenshot
|
44
|
+
rescue Exception => e
|
45
|
+
STDERR.puts "WARNING: Could not capture system screenshot: #{e}"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def capture_html_snapshot
|
50
|
+
# Skipping HTML Snapshot retrieval, if there is no current Selenium session
|
51
|
+
return unless @selenium_driver.session_started?
|
52
|
+
|
53
|
+
html = @selenium_driver.get_html_source
|
54
|
+
File.open(path_for(:html_capture), "w") { |f| f.write html }
|
55
|
+
end
|
56
|
+
|
57
|
+
def capture_system_screenshot
|
58
|
+
@selenium_driver.window_maximize if @selenium_driver.session_started?
|
59
|
+
|
60
|
+
encodedImage = @selenium_driver.capture_screenshot_to_string
|
61
|
+
pngImage = Base64.decode64(encodedImage)
|
62
|
+
File.open(path_for(:system_screenshot), "wb") { |f| f.write pngImage }
|
63
|
+
end
|
64
|
+
|
65
|
+
def capture_page_screenshot
|
66
|
+
return unless @selenium_driver.chrome_backend? && @selenium_driver.session_started?
|
67
|
+
|
68
|
+
encodedImage = @selenium_driver.capture_entire_page_screenshot_to_string("")
|
69
|
+
pngImage = Base64.decode64(encodedImage)
|
70
|
+
File.open(path_for(:page_screenshot), "wb") { |f| f.write pngImage }
|
71
|
+
end
|
72
|
+
|
73
|
+
def retrieve_remote_control_logs
|
74
|
+
logs = @selenium_driver.retrieve_last_remote_control_logs
|
75
|
+
File.open(path_for(:remote_control_logs), "w") { |f| f.write logs }
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tddium_reporting
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.3
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Solano Labs
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2011-08-01 00:00:00 -07:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: rspec
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: "0"
|
25
|
+
type: :development
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
prerelease: false
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: "0"
|
36
|
+
type: :development
|
37
|
+
version_requirements: *id002
|
38
|
+
description: Tddium reporting utilities. Includes support for tddium selenium screencaptures
|
39
|
+
email:
|
40
|
+
- info@tddium.com
|
41
|
+
executables: []
|
42
|
+
|
43
|
+
extensions: []
|
44
|
+
|
45
|
+
extra_rdoc_files: []
|
46
|
+
|
47
|
+
files:
|
48
|
+
- lib/tddium_reporting.rb
|
49
|
+
- lib/tddium_reporting/system_capture.rb
|
50
|
+
- lib/tddium_reporting/version.rb
|
51
|
+
has_rdoc: true
|
52
|
+
homepage: http://www.tddium.com/
|
53
|
+
licenses: []
|
54
|
+
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options: []
|
57
|
+
|
58
|
+
require_paths:
|
59
|
+
- lib
|
60
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: "0"
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: "0"
|
72
|
+
requirements: []
|
73
|
+
|
74
|
+
rubyforge_project: tddium
|
75
|
+
rubygems_version: 1.6.2
|
76
|
+
signing_key:
|
77
|
+
specification_version: 3
|
78
|
+
summary: Tddium Reporting Utilities
|
79
|
+
test_files: []
|
80
|
+
|