gridium 0.1.7 → 0.1.8
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 +4 -4
- data/README.md +1 -0
- data/lib/driver.rb +2 -1
- data/lib/element.rb +5 -4
- data/lib/gridium.rb +9 -9
- data/lib/gridium/version.rb +1 -1
- data/lib/log.rb +84 -84
- data/lib/page.rb +2 -8
- data/lib/spec_data.rb +39 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73b975ad9416cef474cf4fa5e93bd8555550c13d
|
4
|
+
data.tar.gz: de3481093e293f456cb345c779d988b452bcf1d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0e3e4721c199250e6f8456f7864346ec8462039abc4d6d6018235c9e2a9a91360b4a063aa95cd33e595632b6e66a0e53b1388bc786c035a9aa920d6728fd01c
|
7
|
+
data.tar.gz: 005cf0ffe01492be3e422aac5e10355de684e47ad6e91d50b1f17e1da2046d211c4c31edb3b9af053f9fd1ddd8e8b89f9cc1c3ae8283d579197663877ed5bfd9
|
data/README.md
CHANGED
@@ -29,6 +29,7 @@ To get started using Gridium add the Gem to your automated test library. Includ
|
|
29
29
|
```ruby
|
30
30
|
Gridium.configure do |config|
|
31
31
|
config.report_dir = '/path/to/automation/project'
|
32
|
+
config.browser_source = :local
|
32
33
|
config.target_environment = "Integration"
|
33
34
|
config.browser = :firefox
|
34
35
|
config.url = "http://www.applicationundertest.com"
|
data/lib/driver.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'selenium-webdriver'
|
2
2
|
require 'uri'
|
3
|
+
require 'spec_data'
|
3
4
|
|
4
5
|
|
5
6
|
class Driver
|
@@ -163,7 +164,7 @@ class Driver
|
|
163
164
|
timestamp = Time.now.strftime("%Y_%m_%d__%H_%M_%S")
|
164
165
|
screenshot_path = File.join($current_run_dir, "screenshot__#{timestamp}__#{type}.png")
|
165
166
|
driver.save_screenshot(screenshot_path)
|
166
|
-
|
167
|
+
SpecData.screenshots_captured.push("screenshot__#{timestamp}__#{type}.png") # used by custom_formatter.rb for embedding in report
|
167
168
|
end
|
168
169
|
|
169
170
|
def self.list_open_windows
|
data/lib/element.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'selenium-webdriver'
|
2
2
|
require 'oily_png'
|
3
|
+
require 'spec_data'
|
3
4
|
|
4
5
|
class Element
|
5
6
|
attr_reader :name, :by, :locator
|
@@ -33,7 +34,7 @@ class Element
|
|
33
34
|
@element
|
34
35
|
end
|
35
36
|
|
36
|
-
def element=
|
37
|
+
def element=(e)
|
37
38
|
@element = e
|
38
39
|
end
|
39
40
|
|
@@ -180,9 +181,9 @@ class Element
|
|
180
181
|
element.text
|
181
182
|
end
|
182
183
|
|
183
|
-
def text=
|
184
|
+
def text=(text)
|
184
185
|
element.clear
|
185
|
-
element.send_keys
|
186
|
+
element.send_keys(text)
|
186
187
|
end
|
187
188
|
|
188
189
|
def value
|
@@ -234,7 +235,7 @@ class Element
|
|
234
235
|
image2 = image1.to_image
|
235
236
|
element_screenshot_path = File.join($current_run_dir, "#{name}__#{timestamp}.png")
|
236
237
|
image2.save(element_screenshot_path)
|
237
|
-
|
238
|
+
SpecData.screenshots_captured.push("#{name}__#{timestamp}.png")
|
238
239
|
end
|
239
240
|
|
240
241
|
def method_missing(method_sym, *arguments, &block)
|
data/lib/gridium.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
1
|
+
require 'gridium/version'
|
2
|
+
require 'log'
|
3
|
+
require 'spec_data'
|
4
|
+
require 'driver'
|
5
|
+
require 'driver_extensions'
|
6
|
+
require 'element'
|
7
|
+
require 'element_extensions'
|
8
|
+
require 'element_verification'
|
9
|
+
require 'page'
|
10
10
|
|
11
11
|
module Gridium
|
12
12
|
class << self
|
data/lib/gridium/version.rb
CHANGED
data/lib/log.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Logger class wraps around ruby 'logger' gem to provide diagnostic and workflow information
|
2
|
-
|
2
|
+
require 'spec_data'
|
3
3
|
require 'logger'
|
4
4
|
|
5
5
|
# Add in multiple device logging directly into Logger class
|
@@ -44,99 +44,99 @@ end # class logger
|
|
44
44
|
|
45
45
|
# Singleton Logger class
|
46
46
|
module Gridium
|
47
|
-
class Log
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
def info(msg)
|
70
|
-
log.info(msg)
|
71
|
-
end
|
47
|
+
class Log
|
48
|
+
# make this class static
|
49
|
+
class << self
|
50
|
+
|
51
|
+
#
|
52
|
+
# more generic than INFO, useful for debugging issues
|
53
|
+
# DEBUG = 0
|
54
|
+
# generic, useful information about system operation
|
55
|
+
# INFO = 1
|
56
|
+
# a warning
|
57
|
+
# WARN = 2
|
58
|
+
# a handleable error condition
|
59
|
+
# ERROR = 3
|
60
|
+
# an unhandleable error that results in a program crash
|
61
|
+
# FATAL = 4
|
62
|
+
# an unknown message that should always be logged
|
63
|
+
# UNKNOWN = 5
|
64
|
+
|
65
|
+
def debug(msg)
|
66
|
+
log.debug(msg)
|
67
|
+
end
|
72
68
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
$execution_warnings << msg
|
77
|
-
end
|
69
|
+
def info(msg)
|
70
|
+
log.info(msg)
|
71
|
+
end
|
78
72
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
73
|
+
def warn(msg)
|
74
|
+
log.warn(msg)
|
75
|
+
Driver.save_screenshot('warning') if Gridium.config.screenshot_on_failure
|
76
|
+
SpecData.execution_warnings << msg
|
77
|
+
end
|
84
78
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
79
|
+
def error(msg)
|
80
|
+
log.error(msg)
|
81
|
+
Driver.save_screenshot('error') if Gridium.config.screenshot_on_failure
|
82
|
+
SpecData.verification_errors << msg
|
83
|
+
end
|
90
84
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
85
|
+
def add_device device
|
86
|
+
@@devices ||= []
|
87
|
+
log.attach(device)
|
88
|
+
@@devices << device
|
89
|
+
end
|
96
90
|
|
91
|
+
def close
|
92
|
+
@@devices.each { |dev| @@logger.detach(dev) }
|
93
|
+
@@devices.clear
|
94
|
+
log.close if log
|
95
|
+
end
|
97
96
|
|
98
|
-
private
|
99
97
|
|
100
|
-
|
101
|
-
@@logger ||= initialize_logger
|
102
|
-
end
|
98
|
+
private
|
103
99
|
|
104
|
-
|
105
|
-
|
106
|
-
logger ||= Logger.new(STDOUT)
|
107
|
-
|
108
|
-
# messages that have the set level or higher will be logged
|
109
|
-
case Gridium.config.log_level
|
110
|
-
when :debug then
|
111
|
-
level = Logger::DEBUG
|
112
|
-
when :info then
|
113
|
-
level = Logger::INFO
|
114
|
-
when :warn then
|
115
|
-
level = Logger::WARN
|
116
|
-
when :error then
|
117
|
-
level = Logger::ERROR
|
118
|
-
when :fatal then
|
119
|
-
level = Logger::FATAL
|
100
|
+
def log
|
101
|
+
@@logger ||= initialize_logger
|
120
102
|
end
|
121
103
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
104
|
+
def initialize_logger
|
105
|
+
# log to STDOUT and file
|
106
|
+
logger ||= Logger.new(STDOUT)
|
107
|
+
|
108
|
+
# messages that have the set level or higher will be logged
|
109
|
+
case Gridium.config.log_level
|
110
|
+
when :debug then
|
111
|
+
level = Logger::DEBUG
|
112
|
+
when :info then
|
113
|
+
level = Logger::INFO
|
114
|
+
when :warn then
|
115
|
+
level = Logger::WARN
|
116
|
+
when :error then
|
117
|
+
level = Logger::ERROR
|
118
|
+
when :fatal then
|
119
|
+
level = Logger::FATAL
|
120
|
+
end
|
121
|
+
|
122
|
+
logger.level = level
|
123
|
+
|
124
|
+
logger.formatter = proc do |severity, datetime, progname, msg|
|
125
|
+
base_msg = "[#{datetime.strftime('%Y-%m-%d %H:%M:%S')}][#{severity}]"
|
126
|
+
sev = severity.to_s
|
127
|
+
if sev.eql?("DEBUG")
|
128
|
+
"#{base_msg} #{msg}\n"
|
129
|
+
elsif sev.eql?("INFO")
|
130
|
+
"#{base_msg} > #{msg}\n"
|
131
|
+
elsif sev.eql?("WARN")
|
132
|
+
"#{base_msg} X #{msg}\n"
|
133
|
+
else
|
134
|
+
"#{base_msg} X #{msg}\n"
|
135
|
+
end
|
135
136
|
end
|
136
|
-
end
|
137
137
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
end # Log class
|
138
|
+
logger
|
139
|
+
end # initialize_logger
|
140
|
+
end # class << self
|
141
|
+
end # Log class
|
142
142
|
end
|
data/lib/page.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
module Gridium
|
2
2
|
class Page
|
3
3
|
|
4
|
-
def initialize
|
5
|
-
|
6
|
-
end
|
7
|
-
|
8
4
|
def self.switch_to_frame(frame)
|
9
5
|
Driver.driver.switch_to.frame(frame)
|
10
6
|
end
|
@@ -36,7 +32,6 @@ module Gridium
|
|
36
32
|
rescue Exception => e
|
37
33
|
return false
|
38
34
|
end
|
39
|
-
|
40
35
|
end
|
41
36
|
|
42
37
|
def self.has_link?(linktext)
|
@@ -48,7 +43,7 @@ module Gridium
|
|
48
43
|
end
|
49
44
|
|
50
45
|
def self.has_text?(text)
|
51
|
-
if Driver.html.include?
|
46
|
+
if Driver.html.include?(text)
|
52
47
|
return true
|
53
48
|
else
|
54
49
|
Log.warn("Could not find expected text: #{text} on page.")
|
@@ -63,6 +58,7 @@ module Gridium
|
|
63
58
|
rescue
|
64
59
|
Log.warn("Could not find the flash message!")
|
65
60
|
end
|
61
|
+
|
66
62
|
if element
|
67
63
|
return true
|
68
64
|
else
|
@@ -98,7 +94,6 @@ module Gridium
|
|
98
94
|
def click_link(linktext)
|
99
95
|
link = Element.new("Clicking #{linktext} Link", :link_text, linktext)
|
100
96
|
link.click
|
101
|
-
|
102
97
|
end
|
103
98
|
|
104
99
|
def click_button(button_name)
|
@@ -116,6 +111,5 @@ module Gridium
|
|
116
111
|
def check(id) #checks a checkbox
|
117
112
|
Driver.driver.find_element(:id, id).click
|
118
113
|
end
|
119
|
-
|
120
114
|
end
|
121
115
|
end
|
data/lib/spec_data.rb
CHANGED
@@ -1,47 +1,47 @@
|
|
1
|
-
class
|
1
|
+
class SpecData
|
2
2
|
def self.load_suite_state
|
3
|
-
|
4
|
-
|
3
|
+
screenshots_message
|
4
|
+
screenshots_captured
|
5
5
|
end
|
6
6
|
|
7
7
|
def self.load_spec_state
|
8
|
-
|
9
|
-
|
8
|
+
execution_warnings
|
9
|
+
verification_errors
|
10
10
|
$verification_passes = 0
|
11
11
|
$fail_test_instantly = false
|
12
12
|
$fail_test_at_end = false
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.clear_spec_state
|
16
|
-
|
17
|
-
|
16
|
+
execution_warnings.clear
|
17
|
+
verification_errors.clear
|
18
18
|
$verification_passes = 0
|
19
19
|
$fail_test_instantly = false
|
20
20
|
$fail_test_at_end = false
|
21
21
|
end
|
22
22
|
|
23
23
|
def self.reset_captured_screenshots
|
24
|
-
|
25
|
-
|
24
|
+
screenshots_message.clear
|
25
|
+
screenshots_captured.clear
|
26
26
|
$screenshots_data = {}
|
27
27
|
$fail_screenshot = nil
|
28
28
|
end
|
29
29
|
|
30
30
|
def self.determine_spec_result
|
31
|
-
if
|
31
|
+
if execution_warnings.empty?
|
32
32
|
Log.info("No warnings detected during test run.")
|
33
33
|
else
|
34
|
-
Log.info("Warnings detected during test run: (#{
|
34
|
+
Log.info("Warnings detected during test run: (#{execution_warnings.length} total).")
|
35
35
|
msg = "Warning detected during test execution:"
|
36
|
-
|
36
|
+
execution_warnings.each { |error_message| msg << "\n\t" + error_message }
|
37
37
|
end
|
38
38
|
|
39
|
-
if
|
39
|
+
if verification_errors.empty?
|
40
40
|
Log.info("No errors detected during test run.")
|
41
41
|
else
|
42
|
-
Log.info("Errors detected during test run: (#{
|
42
|
+
Log.info("Errors detected during test run: (#{verification_errors.length} total).")
|
43
43
|
msg = "TEST FAILURE: Errors detected during test execution:"
|
44
|
-
|
44
|
+
verification_errors.each { |error_message| msg << "\n\t" + error_message }
|
45
45
|
end
|
46
46
|
|
47
47
|
if $fail_test_instantly
|
@@ -57,7 +57,29 @@ class Spec_data
|
|
57
57
|
|
58
58
|
def self.add_spec_stats_to_suite_stats
|
59
59
|
$verifications_total += $verification_passes
|
60
|
-
$warnings_total +=
|
61
|
-
$errors_total +=
|
60
|
+
$warnings_total += execution_warnings.length
|
61
|
+
$errors_total += verification_errors.length
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.clear_all_spec_stats
|
65
|
+
$verifications_total = 0
|
66
|
+
$warnings_total = 0
|
67
|
+
$errors_total = 0
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.screenshots_message
|
71
|
+
@screenshots_message ||= Array.new
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.screenshots_captured
|
75
|
+
@screenshots_captured ||= Array.new
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.execution_warnings
|
79
|
+
@execution_warnings ||= Array.new
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.verification_errors
|
83
|
+
@verification_errors ||= Array.new
|
62
84
|
end
|
63
85
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gridium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seth Urban
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|