watir_testframework 0.0.2
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 +7 -0
- data/bin/compress_template +0 -0
- data/bin/runregress +71 -0
- data/lib/common.rb +97 -0
- data/lib/setup.rb +69 -0
- data/lib/tar.rb +91 -0
- data/lib/watir_testframework/version.rb +3 -0
- data/lib/watir_testframework.rb +5 -0
- metadata +109 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 34c7d0e863bc56e244d45303c46d8a357de22b23
|
4
|
+
data.tar.gz: bb31d0d7ca68a6d9bc7de61297367791a701ec7f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d7322e76f2e7f86579243cf3cdf8a8db9060fcaa0838274570bb6fd4c2a4235f5967922306305cc473e1761a25254099848cd6cc75032e83c1391ddb7c2c689e
|
7
|
+
data.tar.gz: 5aae00757e1065cf7e8918b0ffc0be2969482a8ee35234f11873f8bc6acdaccff97f4f1ab2226c4874d68c053d04c62eb5a279347974408c5920dcad96977508
|
Binary file
|
data/bin/runregress
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "watir_testframework/version"
|
3
|
+
require 'open3'
|
4
|
+
require 'optparse'
|
5
|
+
require 'common'
|
6
|
+
require 'setup'
|
7
|
+
include Common
|
8
|
+
include Setup
|
9
|
+
puts "Running: 'WatirTestframework: version:#{WatirTestframework::VERSION}'\n\n"
|
10
|
+
|
11
|
+
opts = Setup::cml_options #Lets grab the CommandLine Options
|
12
|
+
|
13
|
+
unless opts[:projectname].nil?
|
14
|
+
binpath = File.expand_path(File.dirname(__FILE__)) + "\/"
|
15
|
+
Setup::unbundle_and_untar(binpath, opts[:projectname])
|
16
|
+
exit(0)
|
17
|
+
end
|
18
|
+
|
19
|
+
if (opts[:regression_file])
|
20
|
+
regressionlist = Common::regression_list(opts[:regression_file])
|
21
|
+
end
|
22
|
+
|
23
|
+
if ( regressionlist.nil? && opts[:testlist].nil? )
|
24
|
+
# zero tests passed on cli, so use all the tests found
|
25
|
+
rspec_testlist = Common::testlist_constructor (nil)
|
26
|
+
else
|
27
|
+
# combine anything from regression file and/or test params
|
28
|
+
rl = regressionlist ? regressionlist['test_list'] : []
|
29
|
+
tl = opts[:testlist] ? opts[:testlist] : []
|
30
|
+
rspec_testlist = Common::testlist_constructor (rl.concat(tl))
|
31
|
+
end
|
32
|
+
|
33
|
+
puts "Preparing: #{rspec_testlist.length} tests for this regression\n\n"
|
34
|
+
|
35
|
+
rspec_testlist.map { |test| if !(test.include?('.rb')) then test.concat('.rb') end }
|
36
|
+
|
37
|
+
rspec_testlist.each do |test|
|
38
|
+
test = Dir.pwd + '/tests/spec/'.concat(test)
|
39
|
+
if !File.exists?(test)
|
40
|
+
puts " Error found for: #{test}"
|
41
|
+
raise RuntimeError.new "'#{File.basename(test)}' is not a valid file."
|
42
|
+
else
|
43
|
+
puts "#{File.basename(test)}: \t \t \t successfully validated."
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
puts "\nLaunching RSpec Regression Tests"
|
48
|
+
rspec_testlist = rspec_testlist.map{|r| 'tests/spec/'.concat(r)}.join(", ")
|
49
|
+
|
50
|
+
command_l = "rspec --pattern \"#{rspec_testlist}\""
|
51
|
+
puts "\n\nRSpec with: #{command_l}"
|
52
|
+
|
53
|
+
result2, err, status = Open3.capture3("#{command_l}")
|
54
|
+
|
55
|
+
#Give user feedback without going into the regression logs
|
56
|
+
reportfile = File.open(Dir.pwd + "/reports/#{logfilename}", "w")
|
57
|
+
|
58
|
+
if err.length != 0
|
59
|
+
puts "ERROR FOUND, WRITING TO '#{reportfile.path}'"
|
60
|
+
elsif result2.include? "Pending: "
|
61
|
+
puts "NO ERRORS FOUND, BUT INCOMPLETE SPEC FOUND. WRITING TO '#{reportfile.path}'"
|
62
|
+
else
|
63
|
+
puts "NO ERRORS FOUND."
|
64
|
+
end
|
65
|
+
STDOUT.puts "Finished Spec Testing"
|
66
|
+
$stdout.puts "Writing out report to log-file"
|
67
|
+
|
68
|
+
reportfile.write("#{result2}")
|
69
|
+
reportfile.write("Error: #{err}")
|
70
|
+
|
71
|
+
$stdout.puts "Test Completed"
|
data/lib/common.rb
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
module Common
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
if(File.exists?('config/config.yml'))
|
5
|
+
CONFIG = YAML.load_file('config/config.yml') #unless defined? CONFIG
|
6
|
+
else
|
7
|
+
puts 'WARNING: Config file not found'
|
8
|
+
end
|
9
|
+
|
10
|
+
def regression_list(filename)
|
11
|
+
filename = "#{Dir.pwd}" + "/#{filename}"
|
12
|
+
puts "searching for #{filename}\n"
|
13
|
+
if(File.exists?(filename))
|
14
|
+
result = YAML.load_file(filename) #unless defined? CONFIG
|
15
|
+
else
|
16
|
+
puts "\n\n#{filename} was not found. \nPlease check the file then try again.\n\n"
|
17
|
+
exit(1)
|
18
|
+
end
|
19
|
+
result
|
20
|
+
end
|
21
|
+
|
22
|
+
def logfilename
|
23
|
+
time_formatted = Time.now.strftime('%m_%d_%Y_%I_%M_%p') #EXAMPLE: 01_14_2016_11_13_AM
|
24
|
+
filenametime = [time_formatted,'_regression.log'].join
|
25
|
+
end
|
26
|
+
|
27
|
+
# todo: request test id from factory or test-id api/application
|
28
|
+
def test_id
|
29
|
+
return {test_id:CONFIG['testid'], password: CONFIG['password']}
|
30
|
+
end
|
31
|
+
|
32
|
+
def config
|
33
|
+
return CONFIG
|
34
|
+
end
|
35
|
+
|
36
|
+
def env
|
37
|
+
CONFIG['env']
|
38
|
+
end
|
39
|
+
|
40
|
+
def browser
|
41
|
+
CONFIG['browser']
|
42
|
+
end
|
43
|
+
|
44
|
+
def dayofweek
|
45
|
+
Date.today.strftime("%A")
|
46
|
+
end
|
47
|
+
|
48
|
+
# check RUBY_PLATFORM to determine OS. returns string (uppercase)
|
49
|
+
def os
|
50
|
+
if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
|
51
|
+
"WINDOWS"
|
52
|
+
elsif (/darwin/ =~ RUBY_PLATFORM) != nil
|
53
|
+
"MAC"
|
54
|
+
else
|
55
|
+
"LINUX"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
################################################################
|
60
|
+
# creates the test list for this particular regression run
|
61
|
+
# sources of test for tests is -r & test_list or -t options
|
62
|
+
################################################################
|
63
|
+
def testlist_constructor (regression_test_list = nil)
|
64
|
+
constructor_rspec_testlist = Array.new
|
65
|
+
|
66
|
+
if (regression_test_list.nil?)
|
67
|
+
spec_dir_content = Dir[Dir.pwd + "/tests/spec/*_spec.rb"]
|
68
|
+
spec_dir_content.each do |test|
|
69
|
+
puts "Adding... #{File.basename(test)}..."
|
70
|
+
constructor_rspec_testlist.push("#{$test_dir_path}" + "#{File.basename(test)}" )
|
71
|
+
end
|
72
|
+
return constructor_rspec_testlist
|
73
|
+
end
|
74
|
+
|
75
|
+
# case: tests passed via command line or from a test_list
|
76
|
+
regression_test_list.each do |test|
|
77
|
+
puts "Adding... #{File.basename(test)}..."
|
78
|
+
constructor_rspec_testlist.push("#{$test_dir_path}" + "#{File.basename(test)}" )
|
79
|
+
end
|
80
|
+
return constructor_rspec_testlist
|
81
|
+
end
|
82
|
+
|
83
|
+
def run_acceptance_tests (reportfile)
|
84
|
+
STDOUT.puts "Starting Test Acceptance Tests"
|
85
|
+
result1, err, status = Open3.capture3('cucumber', 'tests/acceptance')
|
86
|
+
|
87
|
+
# Give user feedback without going into the regression logs
|
88
|
+
if err.length != 0
|
89
|
+
puts "ERROR FOUND, WRITING TO #{reportfile.path}"
|
90
|
+
else
|
91
|
+
puts "NO ERRORS FOUND."
|
92
|
+
end
|
93
|
+
STDOUT.puts "Finished Acceptance Testing"
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
end
|
data/lib/setup.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'tar'
|
2
|
+
include Util::Tar
|
3
|
+
module Setup
|
4
|
+
|
5
|
+
def bundle_and_tar
|
6
|
+
io = Util::Tar::tar('template')
|
7
|
+
f = File.open('compress_template', 'w+')
|
8
|
+
f.binmode
|
9
|
+
f.write io.read
|
10
|
+
f.close
|
11
|
+
end
|
12
|
+
|
13
|
+
def unbundle_and_untar(path, projectname)
|
14
|
+
f = File.open(path.concat('compress_template'), 'r')
|
15
|
+
puts "Writing #{File.expand_path(f)} To:: #{projectname}.... "
|
16
|
+
b = f.read
|
17
|
+
ba = StringIO.new(b)
|
18
|
+
Util::Tar::untar(ba,projectname)
|
19
|
+
end
|
20
|
+
|
21
|
+
def scaffold
|
22
|
+
puts "Adding Directory Structure"
|
23
|
+
Dir.mkdir("reports2")
|
24
|
+
FileUtils::mkdir_p "/tests/spec"
|
25
|
+
FileUtils::mkdir_p("#{dir_name}/reports") \
|
26
|
+
unless File.exists?('reports')
|
27
|
+
end
|
28
|
+
|
29
|
+
def cml_options
|
30
|
+
options={}
|
31
|
+
#ruby.about.com/od/advancedruby/a/optionparser.htm
|
32
|
+
optparse = OptionParser.new do |opts|
|
33
|
+
|
34
|
+
opts.banner = "Usage: runregress [options]"
|
35
|
+
|
36
|
+
opts.on("-v", "--verbose", "Run in verbose mode") do|v|
|
37
|
+
options[:verbose] = v
|
38
|
+
end
|
39
|
+
opts.on("-s", "--setup", "Setup new projet") do |s|
|
40
|
+
options[:setup] = true
|
41
|
+
scaffold
|
42
|
+
end
|
43
|
+
|
44
|
+
opts.on('-l', '--logfile FILENAME', 'Write Log to FILE') do |file|
|
45
|
+
options[:logfile] = file
|
46
|
+
puts "using file name: #{file}"
|
47
|
+
end
|
48
|
+
|
49
|
+
opts.on('-r', '--test_list FILENAME', 'File with Tests for this regression') do |file|
|
50
|
+
options[:regression_file] = file
|
51
|
+
puts "\nRunning Regression with Test_List from: #{file} \n"
|
52
|
+
end
|
53
|
+
|
54
|
+
opts.on('-t', '--test test1,test2', Array, 'tests to run') do |tests|
|
55
|
+
options[:testlist] = tests
|
56
|
+
puts "Running Tests: #{options[:testlist]}"
|
57
|
+
end
|
58
|
+
|
59
|
+
opts.on('-n', '--new PROJECTNAME','Create new project')do |projectname|
|
60
|
+
options[:projectname] = projectname
|
61
|
+
end
|
62
|
+
opts.on("-h", "--help", "Display this screen") do |h|
|
63
|
+
puts opts
|
64
|
+
exit
|
65
|
+
end
|
66
|
+
end.parse!
|
67
|
+
options
|
68
|
+
end
|
69
|
+
end
|
data/lib/tar.rb
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rubygems/package'
|
3
|
+
require 'zlib'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
module Util
|
7
|
+
module Tar
|
8
|
+
# Creates a tar file in memory recursively
|
9
|
+
# from the given path.
|
10
|
+
#
|
11
|
+
# Returns a StringIO whose underlying String
|
12
|
+
# is the contents of the tar file.
|
13
|
+
def tar(path)
|
14
|
+
tarfile = StringIO.new("")
|
15
|
+
Gem::Package::TarWriter.new(tarfile) do |tar|
|
16
|
+
Dir[File.join(path, "**/*")].each do |file|
|
17
|
+
mode = File.stat(file).mode
|
18
|
+
relative_file = file.sub /^#{Regexp::escape path}\/?/, ''
|
19
|
+
|
20
|
+
if File.directory?(file)
|
21
|
+
tar.mkdir relative_file, mode
|
22
|
+
else
|
23
|
+
tar.add_file relative_file, mode do |tf|
|
24
|
+
File.open(file, "rb") { |f| tf.write f.read }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
tarfile.rewind
|
31
|
+
tarfile
|
32
|
+
end
|
33
|
+
|
34
|
+
# gzips the underlying string in the given StringIO,
|
35
|
+
# returning a new StringIO representing the
|
36
|
+
# compressed file.
|
37
|
+
def gzip(tarfile)
|
38
|
+
gz = StringIO.new("")
|
39
|
+
z = Zlib::GzipWriter.new(gz)
|
40
|
+
z.write tarfile.string
|
41
|
+
z.close # this is necessary!
|
42
|
+
|
43
|
+
# z was closed to write the gzip footer, so
|
44
|
+
# now we need a new StringIO
|
45
|
+
StringIO.new gz.string
|
46
|
+
end
|
47
|
+
|
48
|
+
# un-gzips the given IO, returning the
|
49
|
+
# decompressed version as a StringIO
|
50
|
+
def ungzip(tarfile)
|
51
|
+
z = Zlib::GzipReader.new(tarfile)
|
52
|
+
unzipped = StringIO.new(z.read)
|
53
|
+
z.close
|
54
|
+
unzipped
|
55
|
+
end
|
56
|
+
|
57
|
+
# untars the given IO into the specified
|
58
|
+
# directory
|
59
|
+
def untar(io, destination)
|
60
|
+
Gem::Package::TarReader.new io do |tar|
|
61
|
+
tar.each do |tarfile|
|
62
|
+
destination_file = File.join destination, tarfile.full_name
|
63
|
+
|
64
|
+
if tarfile.directory?
|
65
|
+
FileUtils.mkdir_p destination_file
|
66
|
+
else
|
67
|
+
destination_directory = File.dirname(destination_file)
|
68
|
+
FileUtils.mkdir_p destination_directory unless File.directory?(destination_directory)
|
69
|
+
File.open destination_file, "wb" do |f|
|
70
|
+
f.print tarfile.read
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
### Usage Example: ###
|
81
|
+
#
|
82
|
+
# include Util::Tar
|
83
|
+
#
|
84
|
+
# io = tar("./Desktop") # io is a TAR of files
|
85
|
+
# gz = gzip(io) # gz is a TGZ
|
86
|
+
#
|
87
|
+
# io = ungzip(gz) # io is a TAR
|
88
|
+
# untar(io, "./untarred") # files are untarred
|
89
|
+
#
|
90
|
+
# credit to:
|
91
|
+
# https://gist.github.com/sinisterchipmunk/1335041#file-tar-rb
|
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: watir_testframework
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Vladmr
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-03-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.11'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: watir-webdriver
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.9.1
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.9.1
|
69
|
+
description: Test framework based on Watir, Ruby, Git and Rspec
|
70
|
+
email:
|
71
|
+
- vcharlem@gmail.com
|
72
|
+
executables:
|
73
|
+
- runregress
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- bin/compress_template
|
78
|
+
- bin/runregress
|
79
|
+
- lib/common.rb
|
80
|
+
- lib/setup.rb
|
81
|
+
- lib/tar.rb
|
82
|
+
- lib/watir_testframework.rb
|
83
|
+
- lib/watir_testframework/version.rb
|
84
|
+
homepage: https://github.com/vcharlem/watir_testframework.git
|
85
|
+
licenses:
|
86
|
+
- MIT
|
87
|
+
metadata: {}
|
88
|
+
post_install_message:
|
89
|
+
rdoc_options: []
|
90
|
+
require_paths:
|
91
|
+
- lib
|
92
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
requirements: []
|
103
|
+
rubyforge_project:
|
104
|
+
rubygems_version: 2.4.5
|
105
|
+
signing_key:
|
106
|
+
specification_version: 4
|
107
|
+
summary: Web Application TestFramework
|
108
|
+
test_files: []
|
109
|
+
has_rdoc:
|