taf 0.2.6 → 0.2.7
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/lib/main.rb +0 -2
- data/lib/parser/json_parser.rb +42 -0
- data/lib/parser/parser.rb +11 -10
- data/lib/report/report.rb +11 -11
- data/lib/taf_config.rb +2 -2
- data/lib/utils/test_engine.rb +5 -13
- data/lib/utils/test_steps.rb +2 -3
- data/lib/version.rb +1 -1
- metadata +17 -17
- data/lib/parser/xlsx_parser.rb +0 -72
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8547dfd48a03b189469331103f5fe10b053b8761c1b25bdce6e069b9808c264c
|
4
|
+
data.tar.gz: 35b82be0e8d1f7ee7d7146a16aaecc5cb09914519ac31a4c36d4dad5cd473bf5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98dd2ffb3dbf3be2fc7beb897a9453ff2f6ad48645da9cb663538ac92f909a5e615452f6766be6c9f70541b08a67666de5a829b909600982019aa8a2db4fc533
|
7
|
+
data.tar.gz: 1d934465ba76c51574fcbda69d930a9809e9c46fbca9ded3b858e6819d42eaadc00d2d264f1d10b0f7f9c091333d417d8bf2e9aaf68e7f70152aa003955f5786
|
data/lib/main.rb
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
# Created on 02 Aug 2018
|
2
|
+
# @author: Andy Perrett
|
3
|
+
#
|
4
|
+
# Versions:
|
5
|
+
# 1.0 - Baseline
|
6
|
+
#
|
7
|
+
# json_parser.rb - json parser functions
|
8
|
+
module JsonParser
|
9
|
+
require_relative '../taf_config.rb'
|
10
|
+
|
11
|
+
def self.parse_test_header_data(parse_json)
|
12
|
+
# get the number of test steps in the file
|
13
|
+
$numberOfTestSteps = parse_json['steps'].count
|
14
|
+
# get the remaining test data
|
15
|
+
$testId = parse_json['testId']
|
16
|
+
$projectId = parse_json['projectId']
|
17
|
+
$testDes = parse_json['testDescription']
|
18
|
+
MyLog.log.info "Number of test steps: #{$numberOfTestSteps}"
|
19
|
+
MyLog.log.info "Test Description: #{$testDes}"
|
20
|
+
MyLog.log.info "TestID: #{$testId} \n"
|
21
|
+
end
|
22
|
+
|
23
|
+
# parseTestStepData
|
24
|
+
def self.parse_test_step_data(parse_json)
|
25
|
+
parsed_step = {
|
26
|
+
testStep: parse_json['currentStep'],
|
27
|
+
testdesc: parse_json['description'],
|
28
|
+
testFunction: parse_json['function'].downcase,
|
29
|
+
testvalue: parse_json['value0'],
|
30
|
+
locate: parse_json['value1'] || 'id',
|
31
|
+
testvalue2: parse_json['value2'],
|
32
|
+
locate2: parse_json['value3'] || 'id',
|
33
|
+
screenShotData: parse_json['screenshot'] == 'yes',
|
34
|
+
skipTestCase: parse_json['skipTestCase'] == 'yes'
|
35
|
+
}
|
36
|
+
|
37
|
+
parsed_step
|
38
|
+
# if an error reading the test step data then re-raise the exception
|
39
|
+
rescue StandardError => error
|
40
|
+
raise error
|
41
|
+
end
|
42
|
+
end
|
data/lib/parser/parser.rb
CHANGED
@@ -7,11 +7,9 @@
|
|
7
7
|
# parser.rb - basic parser functions
|
8
8
|
module Parser
|
9
9
|
require_relative '../taf_config.rb'
|
10
|
-
# variables:
|
11
|
-
@xlsx_file_name_type = '.xlsx'
|
12
10
|
|
13
11
|
def self.test_files
|
14
|
-
@test_files ||= Dir.glob("#{$testcasesFolder}/*.
|
12
|
+
@test_files ||= Dir.glob("#{$testcasesFolder}/*.json").reject do |file|
|
15
13
|
File.basename(file).start_with?('~$')
|
16
14
|
end.sort
|
17
15
|
end
|
@@ -20,17 +18,20 @@ module Parser
|
|
20
18
|
def self.read_test_data(test_file_name)
|
21
19
|
# get the file type
|
22
20
|
file_type = File.extname(test_file_name)
|
23
|
-
if file_type.casecmp(
|
21
|
+
if file_type.casecmp('.json').zero?
|
24
22
|
MyLog.log.info "Processing test file: #{test_file_name}"
|
25
23
|
MyLog.log.info "Browser Type: #{$browserType}"
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
json = File.read(test_file_name)
|
25
|
+
parse_json = JSON.parse(json)
|
26
|
+
|
27
|
+
JsonParser.parse_test_header_data(parse_json)
|
28
|
+
return parse_json
|
29
29
|
else
|
30
30
|
# if unable to read the test file list then construct a custom error
|
31
31
|
# message and raise an exception.
|
32
|
+
MyLog.log.info 'Not a valid JSON File Type' if test_file_name != 'JSON'
|
32
33
|
error_to_display = "Test File Name: '#{test_file_name}' " \
|
33
|
-
'type not recognised (must be .xslx)'
|
34
|
+
'type not recognised (must be .xslx or .json)'
|
34
35
|
raise IOError, error_to_display
|
35
36
|
end
|
36
37
|
|
@@ -41,7 +42,7 @@ module Parser
|
|
41
42
|
end
|
42
43
|
|
43
44
|
# parseTestStepData
|
44
|
-
def self.parse_test_step_data(
|
45
|
-
|
45
|
+
def self.parse_test_step_data(parse_json)
|
46
|
+
JsonParser.parse_test_step_data(parse_json)
|
46
47
|
end
|
47
48
|
end
|
data/lib/report/report.rb
CHANGED
@@ -16,14 +16,14 @@ module Report
|
|
16
16
|
end
|
17
17
|
|
18
18
|
# print the test Step info to the test results file
|
19
|
-
def self.print_test_step_header(test_file_name, test_step_index)
|
19
|
+
def self.print_test_step_header(test_file_name, test_step_index, step_attributes)
|
20
20
|
@test_start_time = current_time
|
21
|
-
MyLog.log.info "Test step: #{
|
21
|
+
MyLog.log.info "Test step: #{step_attributes[:testStep]} : #{step_attributes[:testdesc]}"
|
22
22
|
|
23
23
|
step = {
|
24
|
-
'id' =>
|
25
|
-
'classname' => 'SuiteID: ' + $testId.to_s + ' Test Step: ' +
|
26
|
-
'name' =>
|
24
|
+
'id' => step_attributes[:testStep],
|
25
|
+
'classname' => 'SuiteID: ' + $testId.to_s + ' Test Step: ' + step_attributes[:testStep].to_s + ' ' + step_attributes[:testdesc].to_s,
|
26
|
+
'name' => step_attributes[:testdesc],
|
27
27
|
'file' => test_file_name
|
28
28
|
}
|
29
29
|
# output to console to show test step
|
@@ -37,19 +37,19 @@ module Report
|
|
37
37
|
end
|
38
38
|
|
39
39
|
# print the Pass / Fail status of a test to the test results file
|
40
|
-
def self.test_pass_fail(pass_fail, test_file_name, test_step_index)
|
40
|
+
def self.test_pass_fail(pass_fail, test_file_name, test_step_index, step_attributes)
|
41
41
|
if pass_fail == true
|
42
42
|
$previousTestFail = $currentTestFail
|
43
43
|
$currentTestFail = false
|
44
44
|
$testStepPasses += 1
|
45
|
-
MyLog.log.info "Test #{
|
45
|
+
MyLog.log.info "Test #{step_attributes[:testStep]} has Passed ".green
|
46
46
|
elsif pass_fail == false
|
47
47
|
$previousTestFail = $currentTestFail
|
48
48
|
$currentTestFail = true
|
49
49
|
$testStepFailures += 1
|
50
|
-
MyLog.log.info "Test #{
|
50
|
+
MyLog.log.info "Test #{step_attributes[:testStep]} has FAILED ".red
|
51
51
|
failstep = {
|
52
|
-
'message' => 'SuiteID: ' + $testId.to_s + ' Test Step: ' +
|
52
|
+
'message' => 'SuiteID: ' + $testId.to_s + ' Test Step: ' + step_attributes[:testStep].to_s + ' Test has FAILED - Check logs',
|
53
53
|
'type' => 'FAILURE',
|
54
54
|
'file' => test_file_name
|
55
55
|
}
|
@@ -64,9 +64,9 @@ module Report
|
|
64
64
|
else
|
65
65
|
$currentTestFail = false
|
66
66
|
$testStepNotrun += 1
|
67
|
-
MyLog.log.info "Test #{
|
67
|
+
MyLog.log.info "Test #{step_attributes[:testStep]} no checks performed ".blue
|
68
68
|
skipstep = {
|
69
|
-
'message' => 'SuiteID: ' + $testId.to_s + ' Test Step: ' +
|
69
|
+
'message' => 'SuiteID: ' + $testId.to_s + ' Test Step: ' + step_attributes[:testStep].to_s + ' No checks performed - Check logs',
|
70
70
|
'type' => 'SKIPPED',
|
71
71
|
'file' => test_file_name
|
72
72
|
}
|
data/lib/taf_config.rb
CHANGED
@@ -18,10 +18,10 @@ require 'net/ping'
|
|
18
18
|
require 'nokogiri'
|
19
19
|
require 'time_difference'
|
20
20
|
require 'colored'
|
21
|
-
require 'rubyXL'
|
22
21
|
require 'optparse'
|
23
22
|
require 'fileutils'
|
24
23
|
require 'securerandom'
|
24
|
+
require 'json'
|
25
25
|
|
26
26
|
# list of all the required files
|
27
27
|
require_relative './utils/test_steps'
|
@@ -34,7 +34,7 @@ require_relative './utils/exceptions'
|
|
34
34
|
require_relative './report/junit_report'
|
35
35
|
require_relative './report/report_summary'
|
36
36
|
require_relative './parser/parser'
|
37
|
-
require_relative './parser/
|
37
|
+
require_relative './parser/json_parser'
|
38
38
|
|
39
39
|
# Require all test step handlers, which register themselves with
|
40
40
|
# TestStep.handlers when the files are required.
|
data/lib/utils/test_engine.rb
CHANGED
@@ -19,7 +19,7 @@ module TestEngine
|
|
19
19
|
Parser.test_files.each_with_index do |test_file_name, test_file_index|
|
20
20
|
begin
|
21
21
|
# read in the test data
|
22
|
-
|
22
|
+
tests = Parser.read_test_data(test_file_name)
|
23
23
|
# if unable to read the test data, show the error and move onto the
|
24
24
|
# next file (if there is one)
|
25
25
|
rescue StandardError => error
|
@@ -31,26 +31,18 @@ module TestEngine
|
|
31
31
|
# create project folders - these only need creating once per test suite
|
32
32
|
CreateDirectories.construct_projectdirs
|
33
33
|
|
34
|
-
# loop through the test file
|
35
|
-
MyLog.log.info 'Not a valid XLSX File Type' if test_file_type != 'XLSX'
|
36
|
-
|
37
34
|
# get the test case start time
|
38
35
|
$test_case_start_time = Report.current_time
|
39
36
|
# initialise the test end time
|
40
37
|
$test_case_end_time = Report.current_time
|
41
38
|
|
42
39
|
begin
|
43
|
-
|
44
|
-
|
45
|
-
test_steps.each_with_index do |test_step, step_index|
|
46
|
-
$test_step = test_step[:testStep]
|
47
|
-
$test_step_des = test_step[:testdesc]
|
48
|
-
screen_shot = test_step[:screenShotData]
|
49
|
-
|
40
|
+
tests['steps'].each do |test_step|
|
41
|
+
parsed_steps = Parser.parse_test_step_data(test_step)
|
50
42
|
# process the test step data
|
51
|
-
TestSteps.process_test_steps(test_file_name,
|
43
|
+
TestSteps.process_test_steps(test_file_name, parsed_steps[:testStep], parsed_steps)
|
52
44
|
# see if screenshot required
|
53
|
-
Browser.check_save_screenshot(
|
45
|
+
Browser.check_save_screenshot(parsed_steps[:screenShotData])
|
54
46
|
end
|
55
47
|
rescue TafError => error
|
56
48
|
warn error
|
data/lib/utils/test_steps.rb
CHANGED
@@ -18,15 +18,14 @@ module TestSteps
|
|
18
18
|
# processing the associated data accordingly
|
19
19
|
def self.process_test_steps(test_file_name, test_step_index, step_attributes)
|
20
20
|
# print the test step information
|
21
|
-
Report.print_test_step_header(test_file_name, test_step_index)
|
22
|
-
|
21
|
+
Report.print_test_step_header(test_file_name, test_step_index, step_attributes)
|
23
22
|
runtest = step_attributes[:skipTestCase]
|
24
23
|
step_function = step_attributes[:testFunction]
|
25
24
|
handler = handlers[step_function.to_s]
|
26
25
|
|
27
26
|
if handler.respond_to?(:perform)
|
28
27
|
func = handler.perform(step_attributes) if runtest == false
|
29
|
-
Report.test_pass_fail(func, test_file_name, test_step_index)
|
28
|
+
Report.test_pass_fail(func, test_file_name, test_step_index, step_attributes)
|
30
29
|
Report.check_failure_threshold(test_file_name, test_step_index)
|
31
30
|
return true
|
32
31
|
else
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Perrett
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: json
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.2'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.2'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: logger
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,20 +122,6 @@ dependencies:
|
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '2.7'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rubyXL
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '3.3'
|
118
|
-
type: :runtime
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '3.3'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: selenium-webdriver
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -199,8 +199,8 @@ files:
|
|
199
199
|
- lib/functions/handlers/send_special_keys.rb
|
200
200
|
- lib/functions/handlers/write_box_data.rb
|
201
201
|
- lib/main.rb
|
202
|
+
- lib/parser/json_parser.rb
|
202
203
|
- lib/parser/parser.rb
|
203
|
-
- lib/parser/xlsx_parser.rb
|
204
204
|
- lib/report/junit_report.rb
|
205
205
|
- lib/report/report.rb
|
206
206
|
- lib/report/report_summary.rb
|
data/lib/parser/xlsx_parser.rb
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
# Created on 02 Aug 2018
|
2
|
-
# @author: Andy Perrett
|
3
|
-
#
|
4
|
-
# Versions:
|
5
|
-
# 1.0 - Baseline
|
6
|
-
#
|
7
|
-
# xlsx_parser.rb - xlsx parser functions
|
8
|
-
module XlsxParser
|
9
|
-
require_relative '../taf_config.rb'
|
10
|
-
|
11
|
-
def self.parse_xlxs_test_header_data
|
12
|
-
# get the number of test steps in the file
|
13
|
-
$numberOfTestSteps = $xlsxDoc[0].sheet_data.size - 4
|
14
|
-
worksheet = $xlsxDoc[0]
|
15
|
-
# get the remaining test data
|
16
|
-
$testId = worksheet.sheet_data[1][0].value
|
17
|
-
$projectId = worksheet.sheet_data[1][1].value
|
18
|
-
$testDes = worksheet.sheet_data[1][2].value
|
19
|
-
MyLog.log.info "Number of test steps: #{$numberOfTestSteps}"
|
20
|
-
MyLog.log.info "Test Description: #{$testDes}"
|
21
|
-
MyLog.log.info "TestID: #{$testId} \n"
|
22
|
-
end
|
23
|
-
|
24
|
-
# parseTestStepData
|
25
|
-
def self.parse_test_step_data(_test_file_type)
|
26
|
-
worksheet = $xlsxDoc[0]
|
27
|
-
worksheet[4..$numberOfTestSteps + 4].map do |row|
|
28
|
-
test = {
|
29
|
-
testStep: row[0].value,
|
30
|
-
testdesc: row[1].value,
|
31
|
-
testFunction: row[2].value,
|
32
|
-
testvalue: row[3].value,
|
33
|
-
locate: row[4].value,
|
34
|
-
testvalue2: row[5].value,
|
35
|
-
locate2: row[6].value,
|
36
|
-
screenShotData: row[7].value,
|
37
|
-
skipTestCase: row[8].value
|
38
|
-
}
|
39
|
-
|
40
|
-
# convert test step, screenshot and skip test case functions to lowercase.
|
41
|
-
test[:testFunction].downcase!
|
42
|
-
|
43
|
-
# get screenshot request, check for a null value and default to 'N'
|
44
|
-
|
45
|
-
test[:screenShotData] = if test[:screenShotData] == 'Y'
|
46
|
-
true
|
47
|
-
elsif test[:screenShotData] == 'N'
|
48
|
-
false
|
49
|
-
else
|
50
|
-
false
|
51
|
-
end
|
52
|
-
|
53
|
-
test[:skipTestCase] = if test[:skipTestCase] == 'Y'
|
54
|
-
true
|
55
|
-
elsif test[:skipTestCase] == 'N'
|
56
|
-
false
|
57
|
-
else
|
58
|
-
false
|
59
|
-
end
|
60
|
-
|
61
|
-
# if there is an element locator then use it, otherwise use an ID
|
62
|
-
test[:locate] = 'id' if test[:locate].to_s == ''
|
63
|
-
|
64
|
-
test[:locate2] = 'id' if test[:locate2].to_s == ''
|
65
|
-
|
66
|
-
test
|
67
|
-
# if an error reading the test step data then re-raise the exception
|
68
|
-
rescue StandardError => error
|
69
|
-
raise error
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|