taf 0.1.5 → 0.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 +4 -4
- data/lib/functions/handlers/base_handler.rb +8 -8
- data/lib/functions/handlers/browser_back.rb +2 -2
- data/lib/functions/handlers/browser_forward.rb +2 -2
- data/lib/functions/handlers/browser_quit.rb +2 -2
- data/lib/functions/handlers/browser_refresh.rb +2 -2
- data/lib/functions/handlers/capture_alert.rb +2 -2
- data/lib/functions/handlers/check_box.rb +2 -2
- data/lib/functions/handlers/check_boxdata.rb +3 -3
- data/lib/functions/handlers/check_browser_title.rb +2 -2
- data/lib/functions/handlers/check_logs.rb +2 -2
- data/lib/functions/handlers/check_screendata.rb +2 -2
- data/lib/functions/handlers/check_url.rb +2 -2
- data/lib/functions/handlers/click_button.rb +2 -2
- data/lib/functions/handlers/execute_system_command.rb +2 -2
- data/lib/functions/handlers/handle_browser_window.rb +2 -2
- data/lib/functions/handlers/insert_value_config.rb +3 -3
- data/lib/functions/handlers/ipause.rb +2 -2
- data/lib/functions/handlers/list_all_dropdowns_values.rb +2 -2
- data/lib/functions/handlers/open_portal_url.rb +2 -2
- data/lib/functions/handlers/open_url.rb +2 -2
- data/lib/functions/handlers/ping_test.rb +2 -2
- data/lib/functions/handlers/radio_button.rb +2 -2
- data/lib/functions/handlers/select_dropdown.rb +3 -3
- data/lib/functions/handlers/send_special_keys.rb +2 -2
- data/lib/functions/handlers/write_box_data.rb +3 -3
- data/lib/functions/handlers/write_to_editor.rb +3 -3
- data/lib/main.rb +4 -4
- data/lib/parser/parser.rb +3 -3
- data/lib/parser/xlsx_parser.rb +2 -2
- data/lib/report/junit_report.rb +1 -1
- data/lib/report/report.rb +10 -57
- data/lib/report/report_summary.rb +14 -17
- data/lib/taf_config.rb +1 -0
- data/lib/utils/browser.rb +4 -4
- data/lib/utils/create_directories.rb +2 -14
- data/lib/utils/logger.rb +21 -0
- data/lib/utils/test_engine.rb +5 -24
- data/lib/utils/test_steps.rb +1 -2
- data/lib/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f86ace5ef3a38a6e2dd38706ebe56e20afb50bdf5ec78d6db1f2bd63271340f9
|
4
|
+
data.tar.gz: 0e448aaa2850b5209d132fb8e94e0bec7f3fb39716395494d064ed4069c64c17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e08b8accbbf33503870b9478f2175c88f7d12c4f764b481f2520a4853c509c757d2f95a8c9be2ab92e8faff8abe267efb0796950005a2800b3427e955d219686
|
7
|
+
data.tar.gz: 5e58ff283dff6a4c88409b550b5fb68f7a857d8c66595cafbacfcde673af4ee939e8cb4db0a91cce2f4abfb6eba2a351b50c82d9fddd7276fc8b4b2729fac11c
|
@@ -22,7 +22,7 @@ module TestSteps
|
|
22
22
|
login_button
|
23
23
|
sleep 3
|
24
24
|
else
|
25
|
-
|
25
|
+
MyLog.log.warn("User: #{user} has failed to log in.")
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -32,16 +32,16 @@ module TestSteps
|
|
32
32
|
elsif Browser.b.button(value: 'Log in').exist?
|
33
33
|
Browser.b.button(value: 'Log in').wait_until.click
|
34
34
|
else
|
35
|
-
|
35
|
+
MyLog.log.warn("User: #{user} has failed to log in.")
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
def login_check(b_title_sucess, user)
|
40
40
|
if Browser.b.title.eql?(b_title_sucess)
|
41
|
-
|
41
|
+
MyLog.log.info("User: #{user} has logged in successful.")
|
42
42
|
true
|
43
43
|
else
|
44
|
-
|
44
|
+
MyLog.log.warn("User: #{user} has failed to log in.")
|
45
45
|
false
|
46
46
|
end
|
47
47
|
end
|
@@ -50,10 +50,10 @@ module TestSteps
|
|
50
50
|
if Browser.b.title.eql?('Memorable word - UKCloud Portal')
|
51
51
|
portal_mem_word(user, b_title_sucess)
|
52
52
|
elsif Browser.b.title.eql?(b_title_sucess)
|
53
|
-
|
53
|
+
MyLog.log.info("User: #{user} has logged in successful.")
|
54
54
|
true
|
55
55
|
else
|
56
|
-
|
56
|
+
MyLog.log.warn("User: #{user} has failed to log in.")
|
57
57
|
false
|
58
58
|
end
|
59
59
|
end
|
@@ -77,10 +77,10 @@ module TestSteps
|
|
77
77
|
|
78
78
|
Browser.b.button(value: 'Sign in').wait_until.click
|
79
79
|
if Browser.b.title.eql?(b_title_sucess)
|
80
|
-
|
80
|
+
MyLog.log.info("User: #{user} has logged in successful.")
|
81
81
|
return true
|
82
82
|
else
|
83
|
-
|
83
|
+
MyLog.log.warn("User: #{user} has failed to log in.")
|
84
84
|
return false
|
85
85
|
end
|
86
86
|
end
|
@@ -7,10 +7,10 @@ module TestSteps
|
|
7
7
|
|
8
8
|
def perform(step_attributes)
|
9
9
|
Browser.b.back
|
10
|
-
|
10
|
+
MyLog.log.info('Browser navigated back')
|
11
11
|
true
|
12
12
|
rescue StandardError
|
13
|
-
|
13
|
+
MyLog.log.warn('Browser failed to navigate back')
|
14
14
|
false
|
15
15
|
end
|
16
16
|
end
|
@@ -7,10 +7,10 @@ module TestSteps
|
|
7
7
|
|
8
8
|
def perform(step_attributes)
|
9
9
|
Browser.b.forward
|
10
|
-
|
10
|
+
MyLog.log.info('Browser navigated forward')
|
11
11
|
true
|
12
12
|
rescue StandardError
|
13
|
-
|
13
|
+
MyLog.log.warn('Browser failed to navigate forward')
|
14
14
|
false
|
15
15
|
end
|
16
16
|
end
|
@@ -7,10 +7,10 @@ module TestSteps
|
|
7
7
|
|
8
8
|
def perform(step_attributes)
|
9
9
|
Browser.b.quit
|
10
|
-
|
10
|
+
MyLog.log.info('Browser has closed successfully')
|
11
11
|
true
|
12
12
|
rescue StandardError
|
13
|
-
|
13
|
+
MyLog.log.warn('Browser has failed to close')
|
14
14
|
false
|
15
15
|
end
|
16
16
|
end
|
@@ -7,10 +7,10 @@ module TestSteps
|
|
7
7
|
|
8
8
|
def perform(step_attributes)
|
9
9
|
Browser.b.refresh
|
10
|
-
|
10
|
+
MyLog.log.info('The Browser has been refreshed')
|
11
11
|
true
|
12
12
|
rescue StandardError
|
13
|
-
|
13
|
+
MyLog.log.warn('The Browser failed to refresh')
|
14
14
|
false
|
15
15
|
end
|
16
16
|
end
|
@@ -8,10 +8,10 @@ module TestSteps
|
|
8
8
|
def perform(step_attributes)
|
9
9
|
Browser.b.div(class: 'alert').exist?
|
10
10
|
alertmsg = Browser.b.div(class: 'alert').text
|
11
|
-
|
11
|
+
MyLog.log.info("Alert shown: #{alertmsg}")
|
12
12
|
true
|
13
13
|
rescue StandardError
|
14
|
-
|
14
|
+
MyLog.log.warn('No Alert Found')
|
15
15
|
false
|
16
16
|
end
|
17
17
|
end
|
@@ -10,10 +10,10 @@ module TestSteps
|
|
10
10
|
locate = step_attributes[:locate]
|
11
11
|
|
12
12
|
Browser.b.checkbox(:"#{locate}" => checkbox).wait_until.click
|
13
|
-
|
13
|
+
MyLog.log.info("Check box: #{checkbox} has been selected")
|
14
14
|
true
|
15
15
|
rescue StandardError
|
16
|
-
|
16
|
+
MyLog.log.warn("Check box: #{checkbox} does not exist")
|
17
17
|
false
|
18
18
|
end
|
19
19
|
end
|
@@ -25,13 +25,13 @@ module TestSteps
|
|
25
25
|
Browser.b.text_field(:"#{locate}" => box).wait_until
|
26
26
|
(Browser.b.text_field(:"#{locate}" => box).value == value)
|
27
27
|
end
|
28
|
-
|
28
|
+
MyLog.log.info("Textbox: #{box} has the correct value: #{value}")
|
29
29
|
true
|
30
30
|
rescue StandardError
|
31
|
-
|
31
|
+
MyLog.log.warn("Textbox: #{box} has the incorrect value: #{value}")
|
32
32
|
false
|
33
33
|
rescue StandardError
|
34
|
-
|
34
|
+
MyLog.log.warn("Textbox: #{box} does not exist")
|
35
35
|
false
|
36
36
|
end
|
37
37
|
end
|
@@ -10,10 +10,10 @@ module TestSteps
|
|
10
10
|
|
11
11
|
sleep 2
|
12
12
|
if Browser.b.title.eql?(text_check)
|
13
|
-
|
13
|
+
MyLog.log.info("Browser title: #{text_check}")
|
14
14
|
return true
|
15
15
|
else
|
16
|
-
|
16
|
+
MyLog.log.warn("Title not found: #{text_check}")
|
17
17
|
return false
|
18
18
|
end
|
19
19
|
end
|
@@ -11,10 +11,10 @@ module TestSteps
|
|
11
11
|
|
12
12
|
blog_result = system 'egrep -i ' + text + ' ' + file + ' > ' + output
|
13
13
|
if blog_result == true
|
14
|
-
|
14
|
+
MyLog.log.info("Data has matched: #{text} in LogFile: #{file}")
|
15
15
|
return true
|
16
16
|
else
|
17
|
-
|
17
|
+
MyLog.log.warn("Problem finding: #{text} in LogFile: #{file}")
|
18
18
|
return false
|
19
19
|
end
|
20
20
|
end
|
@@ -10,10 +10,10 @@ module TestSteps
|
|
10
10
|
|
11
11
|
sleep 5
|
12
12
|
if Browser.b.text.include?(text_check)
|
13
|
-
|
13
|
+
MyLog.log.info("Found text: #{text_check}")
|
14
14
|
return true
|
15
15
|
else
|
16
|
-
|
16
|
+
MyLog.log.warn("NOT found text: #{text_check}")
|
17
17
|
return false
|
18
18
|
end
|
19
19
|
end
|
@@ -9,10 +9,10 @@ module TestSteps
|
|
9
9
|
url = step_attributes[:testvalue]
|
10
10
|
|
11
11
|
if Browser.b.url == url
|
12
|
-
|
12
|
+
MyLog.log.info("URL: #{url} is correct")
|
13
13
|
true
|
14
14
|
else
|
15
|
-
|
15
|
+
MyLog.log.warn("URL: #{url} is incorrect")
|
16
16
|
false
|
17
17
|
end
|
18
18
|
end
|
@@ -41,10 +41,10 @@ module TestSteps
|
|
41
41
|
when 9
|
42
42
|
Browser.b.h4(:"#{locate}" => button).wait_until.click
|
43
43
|
end
|
44
|
-
|
44
|
+
MyLog.log.info("Button: #{button} has been selected")
|
45
45
|
true
|
46
46
|
rescue StandardError
|
47
|
-
|
47
|
+
MyLog.log.warn("Button: #{button} does not exist")
|
48
48
|
false
|
49
49
|
end
|
50
50
|
end
|
@@ -10,10 +10,10 @@ module TestSteps
|
|
10
10
|
|
11
11
|
b_result = system syst_cmd
|
12
12
|
if b_result == true
|
13
|
-
|
13
|
+
MyLog.log.info("Cmd has been executed sucessfully #{syst_cmd}")
|
14
14
|
return true
|
15
15
|
else
|
16
|
-
|
16
|
+
MyLog.log.warn("Theres a problem executing command #{syst_cmd}")
|
17
17
|
return false
|
18
18
|
end
|
19
19
|
end
|
@@ -11,10 +11,10 @@ module TestSteps
|
|
11
11
|
Browser.b.window(title: text_check.to_s).use
|
12
12
|
sleep 3
|
13
13
|
Browser.b.title.eql?(text_check.to_s)
|
14
|
-
|
14
|
+
MyLog.log.info("Window title: #{text_check} is correct")
|
15
15
|
true
|
16
16
|
rescue StandardError
|
17
|
-
|
17
|
+
MyLog.log.warn("Window not found: #{text_check}")
|
18
18
|
false
|
19
19
|
end
|
20
20
|
end
|
@@ -13,13 +13,13 @@ module TestSteps
|
|
13
13
|
|
14
14
|
Browser.b.text_field(:"#{locate}" => box).wait_until.set value
|
15
15
|
(Browser.b.text_field(:"#{locate}" => box).value == value)
|
16
|
-
|
16
|
+
MyLog.log.info("Textbox: #{box} has correct value: #{value}")
|
17
17
|
true
|
18
18
|
rescue StandardError
|
19
|
-
|
19
|
+
MyLog.log.warn("Textbox: #{box} has the incorrect value: #{value}")
|
20
20
|
false
|
21
21
|
rescue StandardError
|
22
|
-
|
22
|
+
MyLog.log.warn("Textbox: #{box} does not exist")
|
23
23
|
false
|
24
24
|
end
|
25
25
|
end
|
@@ -9,10 +9,10 @@ module TestSteps
|
|
9
9
|
wait_time = step_attributes[:testvalue]
|
10
10
|
|
11
11
|
sleep(wait_time.to_i)
|
12
|
-
|
12
|
+
MyLog.log.info('Wait completed for seconds: ' + wait_time.to_s)
|
13
13
|
true
|
14
14
|
rescue StandardError
|
15
|
-
|
15
|
+
MyLog.log.warn('Wait failed for seconds: ' + wait_time.to_s)
|
16
16
|
false
|
17
17
|
end
|
18
18
|
end
|
@@ -11,11 +11,11 @@ module TestSteps
|
|
11
11
|
|
12
12
|
Browser.b.element(:"#{locate}" => dropdown).wait_until
|
13
13
|
Browser.b.select_list(:"#{locate}" => dropdown).options.each do |i|
|
14
|
-
|
14
|
+
MyLog.log.info("List of dropdown for #{dropdown} are: #{i.text}")
|
15
15
|
return true
|
16
16
|
end
|
17
17
|
rescue StandardError
|
18
|
-
|
18
|
+
MyLog.log.warn("List dropdown: #{dropdown} does not exist")
|
19
19
|
false
|
20
20
|
end
|
21
21
|
end
|
@@ -12,10 +12,10 @@ module TestSteps
|
|
12
12
|
Browser.b.goto(url)
|
13
13
|
url_nme = Browser.b.url
|
14
14
|
if url_nme == url
|
15
|
-
|
15
|
+
MyLog.log.info("opened URL: #{url}")
|
16
16
|
return true
|
17
17
|
else
|
18
|
-
|
18
|
+
MyLog.log.warn("URL not open: #{url} - opened #{url_nme} instead")
|
19
19
|
return false
|
20
20
|
end
|
21
21
|
end
|
@@ -13,10 +13,10 @@ module TestSteps
|
|
13
13
|
sleep 2
|
14
14
|
url_nme = Browser.b.url
|
15
15
|
if url_nme == url
|
16
|
-
|
16
|
+
MyLog.log.info("Opened URL: #{url}")
|
17
17
|
return true
|
18
18
|
else
|
19
|
-
|
19
|
+
MyLog.log.warn("URL not open: #{url} - opened #{url_nme} instead")
|
20
20
|
return false
|
21
21
|
end
|
22
22
|
end
|
@@ -13,11 +13,11 @@ module TestSteps
|
|
13
13
|
sleep 5
|
14
14
|
if check.ping? == true
|
15
15
|
# website alive
|
16
|
-
|
16
|
+
MyLog.log.info("pinged: #{url}")
|
17
17
|
return true
|
18
18
|
else
|
19
19
|
# website not responding
|
20
|
-
|
20
|
+
MyLog.log.warn("Failed to ping: #{url}")
|
21
21
|
return false
|
22
22
|
end
|
23
23
|
end
|
@@ -13,10 +13,10 @@ module TestSteps
|
|
13
13
|
|
14
14
|
Browser.b.radio(:"#{locate}" => radio).wait_until
|
15
15
|
Browser.b.radio(:"#{locate}" => radio, :"#{locate2}" => "#{value2}").set
|
16
|
-
|
16
|
+
MyLog.log.info("Radio button: #{radio} has been selected")
|
17
17
|
true
|
18
18
|
rescue StandardError
|
19
|
-
|
19
|
+
MyLog.log.warn("Radio button: #{radio} does not exist")
|
20
20
|
false
|
21
21
|
end
|
22
22
|
end
|
@@ -13,13 +13,13 @@ module TestSteps
|
|
13
13
|
|
14
14
|
Browser.b.select_list(:"#{locate}" => dropdown).wait_until
|
15
15
|
Browser.b.select_list(:"#{locate}" => dropdown).option(:"#{locate2}" => "#{value2}").select
|
16
|
-
|
16
|
+
MyLog.log.info("Dropdown item: #{value2} has been selected")
|
17
17
|
true
|
18
18
|
rescue StandardError
|
19
|
-
|
19
|
+
MyLog.log.warn("Dropdown item: #{value2} has NOT been selected")
|
20
20
|
false
|
21
21
|
rescue StandardError
|
22
|
-
|
22
|
+
MyLog.log.warn("the dropdown: #{dropdown} does not exist")
|
23
23
|
false
|
24
24
|
end
|
25
25
|
end
|
@@ -10,10 +10,10 @@ module TestSteps
|
|
10
10
|
|
11
11
|
Browser.b.send_keys :"#{special_key}"
|
12
12
|
sleep 1
|
13
|
-
|
13
|
+
MyLog.log.info("Browser Sent key: :#{special_key} successfully")
|
14
14
|
true
|
15
15
|
rescue StandardError
|
16
|
-
|
16
|
+
MyLog.log.warn("Browser Failed to Send key: :#{special_key}")
|
17
17
|
false
|
18
18
|
end
|
19
19
|
end
|
@@ -25,13 +25,13 @@ module TestSteps
|
|
25
25
|
Browser.b.text_field(:"#{locate}" => box).wait_until.set value
|
26
26
|
(Browser.b.text_field(:"#{locate}" => box).value == value)
|
27
27
|
end
|
28
|
-
|
28
|
+
MyLog.log.info("Textbox: #{box} has correct value: #{value}")
|
29
29
|
true
|
30
30
|
rescue StandardError
|
31
|
-
|
31
|
+
MyLog.log.warn("Textbox: #{box} has the incorrect value: #{value}")
|
32
32
|
false
|
33
33
|
rescue StandardError
|
34
|
-
|
34
|
+
MyLog.log.warn("Textbox: #{box} does not exist")
|
35
35
|
false
|
36
36
|
end
|
37
37
|
end
|
@@ -12,13 +12,13 @@ module TestSteps
|
|
12
12
|
|
13
13
|
Browser.b.iframe(:"#{locate}" => iframe).wait_until
|
14
14
|
Browser.b.iframe(:"#{locate}" => iframe).send_keys value
|
15
|
-
|
15
|
+
MyLog.log.info("Editor box: #{iframe} has correct value: #{value}")
|
16
16
|
true
|
17
17
|
rescue StandardError
|
18
|
-
|
18
|
+
MyLog.log.warn("Editor box: #{iframe} has wrong value: #{value}")
|
19
19
|
false
|
20
20
|
rescue StandardError
|
21
|
-
|
21
|
+
MyLog.log.warn("Editor box: #{iframe} does not exist")
|
22
22
|
false
|
23
23
|
end
|
24
24
|
end
|
data/lib/main.rb
CHANGED
@@ -32,11 +32,11 @@ module Main
|
|
32
32
|
# Testsuite File and Browser.
|
33
33
|
if ARGV.length < 2
|
34
34
|
$testSuiteFile = ARGV[0]
|
35
|
-
|
35
|
+
MyLog.log.info 'Only one argument needed: {TestSuite File}'
|
36
36
|
elsif ARGV.length < 3
|
37
37
|
$testSuiteFile = ARGV[0]
|
38
38
|
$browserType = ARGV[1]
|
39
|
-
|
39
|
+
MyLog.log.info 'Only 2 arguments needed: {TestSuite File} {Browser}'
|
40
40
|
else
|
41
41
|
# unable to open file as not supplied as command-line parameter
|
42
42
|
$testSuiteFile = 'unknown'
|
@@ -50,11 +50,11 @@ module Main
|
|
50
50
|
# unable to read the test file then handle the error and terminate
|
51
51
|
rescue StandardError => error
|
52
52
|
warn error
|
53
|
-
|
53
|
+
MyLog.log.warn error
|
54
54
|
abort
|
55
55
|
end
|
56
56
|
|
57
|
-
|
57
|
+
MyLog.log.info "There are: #{$numberOfTestSpecs} test files to process \n"
|
58
58
|
|
59
59
|
# process the test files to execute the tests
|
60
60
|
TestEngine.process_testfiles
|
data/lib/parser/parser.rb
CHANGED
@@ -14,7 +14,7 @@ module Parser
|
|
14
14
|
def self.read_test_suite_data
|
15
15
|
# check if the file list exists and is readable
|
16
16
|
if (File.file?($testSuiteFile) & File.readable?($testSuiteFile))
|
17
|
-
|
17
|
+
MyLog.log.info "Processing test suite file: #{$testSuiteFile}"
|
18
18
|
# get the file type
|
19
19
|
fileType = File.extname($testSuiteFile)
|
20
20
|
# extract the test data from the test suite
|
@@ -60,8 +60,8 @@ module Parser
|
|
60
60
|
# get the file type
|
61
61
|
fileType = File.extname(testFileName)
|
62
62
|
if (fileType.casecmp(@XlsxFileNameType) == 0)
|
63
|
-
|
64
|
-
|
63
|
+
MyLog.log.info "Processing test file: #{testFileName}"
|
64
|
+
MyLog.log.info "Browser Type: #{$browserType}"
|
65
65
|
$xlsxDoc = RubyXL::Parser.parse(testFileName)
|
66
66
|
XlsxParser.parse_xlxs_test_header_data
|
67
67
|
return 'XLSX'
|
data/lib/parser/xlsx_parser.rb
CHANGED
@@ -52,8 +52,8 @@ module XlsxParser
|
|
52
52
|
worksheet = $xlsxDoc[0]
|
53
53
|
# get the remaining test data
|
54
54
|
$testDes = worksheet.sheet_data[4][1].value
|
55
|
-
|
56
|
-
|
55
|
+
MyLog.log.info "Number of test steps: #{$numberOfTestSteps}"
|
56
|
+
MyLog.log.info "Test Description: #{$testDes}"
|
57
57
|
|
58
58
|
end
|
59
59
|
|
data/lib/report/junit_report.rb
CHANGED
@@ -59,7 +59,7 @@ module JunitReport
|
|
59
59
|
if !File.exist?($TestSuiteSummaryXML) || $TestSuiteSummaryXML.closed?
|
60
60
|
$testSuiteSummaryFile_xml = File.open($TestSuiteSummaryXML, 'w+')
|
61
61
|
$testSuiteSummaryFile_xml.write builder.to_xml
|
62
|
-
elsif
|
62
|
+
elsif MyLog.log.warn "test suite summary file xml name: #{$TestSuiteSummaryXML} is already open"
|
63
63
|
end
|
64
64
|
|
65
65
|
# if the file is open then close it
|
data/lib/report/report.rb
CHANGED
@@ -6,54 +6,15 @@
|
|
6
6
|
# Versions:
|
7
7
|
# 1.0 - Baseline
|
8
8
|
#
|
9
|
-
# report.rb - methods for
|
9
|
+
# report.rb - methods for outputting console.
|
10
10
|
module Report
|
11
11
|
require_relative '../taf_config.rb'
|
12
12
|
# setup the test results output file
|
13
|
-
def self.open_test_report_file
|
14
|
-
# open a new file for writing
|
15
|
-
$log.puts("Opening Test Result file: #{$testResultFileName} \n")
|
16
|
-
|
17
|
-
# open test results file for writing if not already open
|
18
|
-
if !File.exist?($testResultFileName) || $testResultFileName.closed?
|
19
|
-
@results_file = File.open($testResultFileName, 'w')
|
20
|
-
elsif $log.puts "test results file name: #{$testResultFileName} is already open"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# close_testresults_file
|
25
|
-
def self.close_test_results_file
|
26
|
-
# if the file is open then close it
|
27
|
-
Report.results.close unless Report.results.closed?
|
28
|
-
end
|
29
|
-
|
30
13
|
# results file variable
|
31
14
|
def self.results
|
32
15
|
results_file = @results_file
|
33
16
|
end
|
34
17
|
|
35
|
-
def self.open_log_file
|
36
|
-
# open a new file for writing
|
37
|
-
$stdout.puts "Opening log file: #{$logFileName} \n"
|
38
|
-
|
39
|
-
# create a new log file and set the mode as 'append'
|
40
|
-
$log = File.open($logFileName, 'w+')
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.close_log_file
|
44
|
-
# if the file is open then close it
|
45
|
-
$log.close unless $log.closed?
|
46
|
-
end
|
47
|
-
|
48
|
-
# print the main test header info to the test results file
|
49
|
-
def self.print_test_header
|
50
|
-
Report.results.puts("Project Name: #{$projectName} Project ID: #{$projectId} Sprint: #{$sprint}")
|
51
|
-
Report.results.puts("Test ID: #{$testId} Test Description: #{$testDes}")
|
52
|
-
Report.results.puts("Executed with browser: #{$browserType}")
|
53
|
-
Report.results.puts("Test suite: #{$testSuiteFile}")
|
54
|
-
Report.results.puts("Tester: #{$tester}", "\n \n")
|
55
|
-
end
|
56
|
-
|
57
18
|
# get the current time in the format Day - Month - Date - Time (HH:MM:SS)
|
58
19
|
def self.current_time
|
59
20
|
time = Time.new
|
@@ -63,10 +24,8 @@ module Report
|
|
63
24
|
|
64
25
|
# print the test Step info to the test results file
|
65
26
|
def self.print_test_step_header(test_file_name, testStepIndex)
|
66
|
-
|
67
|
-
|
68
|
-
puts "\nTest start time: #{f_time = current_time} \n"
|
69
|
-
puts "Test step: #{$testStep} : #{$testStepDes} "
|
27
|
+
MyLog.log.info "Test start time: #{f_time = current_time}"
|
28
|
+
MyLog.log.info "Test step: #{$testStep} : #{$testStepDes}"
|
70
29
|
|
71
30
|
step = {
|
72
31
|
'id' => $testStep,
|
@@ -89,14 +48,12 @@ module Report
|
|
89
48
|
$previousTestFail = $currentTestFail
|
90
49
|
$currentTestFail = false
|
91
50
|
$testStepPasses += 1
|
92
|
-
|
93
|
-
puts "Test #{$testStep} has Passed ".green
|
51
|
+
MyLog.log.info "Test #{$testStep} has Passed ".green
|
94
52
|
elsif passFail == false
|
95
53
|
$previousTestFail = $currentTestFail
|
96
54
|
$currentTestFail = true
|
97
55
|
$testStepFailures += 1
|
98
|
-
|
99
|
-
puts "Test #{$testStep} has FAILED ".red
|
56
|
+
MyLog.log.info "Test #{$testStep} has FAILED ".red
|
100
57
|
failstep = {
|
101
58
|
'message' => 'SuiteID: ' + $testId.to_s + ' Test Step: ' + $testStep.to_s + ' Test has FAILED - Check logs',
|
102
59
|
'type' => 'FAILURE',
|
@@ -112,8 +69,7 @@ module Report
|
|
112
69
|
else
|
113
70
|
$currentTestFail = false
|
114
71
|
$testStepNotrun += 1
|
115
|
-
|
116
|
-
puts "Test #{$testStep} no checks performed ".blue
|
72
|
+
MyLog.log.info "Test #{$testStep} no checks performed ".blue
|
117
73
|
skipstep = {
|
118
74
|
'message' => 'SuiteID: ' + $testId.to_s + ' Test Step: ' + $testStep.to_s + ' No checks performed - Check logs',
|
119
75
|
'type' => 'SKIPPED',
|
@@ -127,8 +83,7 @@ module Report
|
|
127
83
|
$skiptestStep_xml[test_file_name] ||= []
|
128
84
|
$skiptestStep_xml[test_file_name][testStepIndex] = skipstep
|
129
85
|
end
|
130
|
-
|
131
|
-
puts "Test end time: #{f_time = current_time} \n"
|
86
|
+
MyLog.log.info "Test end time: #{f_time = current_time}"
|
132
87
|
end
|
133
88
|
|
134
89
|
# check if the test failure threshold has been reached for total failures or consecutive failures.
|
@@ -142,11 +97,9 @@ module Report
|
|
142
97
|
end
|
143
98
|
|
144
99
|
if @consecutiveTestFail >= consecutiveFailThreshold
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
$stderr.puts "Terminating the current test case: #{test_file_name} as the test failure threshold (#{consecutiveFailThreshold}) has been reached."
|
149
|
-
$stderr.puts '...continuing with the next test case (if there is one)'
|
100
|
+
# write info to stdout
|
101
|
+
MyLog.log.warn "Terminating the current test case: #{test_file_name} as the test failure threshold (#{consecutiveFailThreshold}) has been reached."
|
102
|
+
MyLog.log.warn '...continuing with the next test case (if there is one)'
|
150
103
|
|
151
104
|
raise FailureThresholdExceeded,
|
152
105
|
"#{consecutiveFailThreshold} Test Steps Failed."
|
@@ -14,7 +14,7 @@ module ReportSummary
|
|
14
14
|
# output the test results summary for the current test case
|
15
15
|
def self.test_step_summary(test_file_name, test_file_name_index)
|
16
16
|
# construct the test step report summary
|
17
|
-
@testStepReportSummary[test_file_name_index] =
|
17
|
+
@testStepReportSummary[test_file_name_index] = 'Test file:', test_file_name,\
|
18
18
|
"\n" 'Browser type:', $browserType, \
|
19
19
|
"\n" 'Browser version:', Browser.browser_version.to_s, \
|
20
20
|
"\n" 'Environment:', $env_type, \
|
@@ -25,38 +25,35 @@ module ReportSummary
|
|
25
25
|
"\n" 'There are:', $testStepNotrun, 'Skipped Tests' "\n"
|
26
26
|
# ... and save in a format that is printable
|
27
27
|
@testStepReportSummary[test_file_name_index] = @testStepReportSummary[test_file_name_index].join(' ')
|
28
|
-
Report.results.puts ''
|
29
|
-
Report.results.puts("Test Summary: #{@testStepReportSummary[test_file_name_index]}")
|
30
|
-
Report.results.puts("Test end time: #{$test_case_end_time} \n")
|
31
28
|
end
|
32
29
|
|
33
30
|
# output the overall test results summary
|
34
31
|
def self.print_overall_test_summary
|
35
32
|
# output to the console
|
36
33
|
|
37
|
-
|
38
|
-
|
34
|
+
MyLog.log.info "Finished processing all test files - executed via test suite: #{$testSuiteFile} by tester: #{$tester}"
|
35
|
+
MyLog.log.info "Overall Test Summary:"
|
39
36
|
@testStepReportSummary.each do |testStepReportSummary|
|
40
|
-
|
37
|
+
MyLog.log.info testStepReportSummary
|
41
38
|
end
|
42
39
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
40
|
+
MyLog.log.info "Total Tests started at: #{$test_start_time}"
|
41
|
+
MyLog.log.info "Total Tests finished at: #{$test_end_time}"
|
42
|
+
MyLog.log.info ('Total Tests duration: ' + TimeDifference.between($test_end_time, $test_start_time).humanize)
|
43
|
+
MyLog.log.info "Total Tests Passed: #{$totalTestPasses}".green
|
44
|
+
MyLog.log.info "Total Tests Failed: #{$totalTestFailures}".red
|
45
|
+
MyLog.log.info "Total Tests Skipped: #{$totalTestNotrun}".blue
|
49
46
|
$totalTests = [$totalTestPasses, $totalTestFailures, $totalTestNotrun].sum
|
50
|
-
|
47
|
+
MyLog.log.info "Total Tests: #{$totalTests}\n"
|
51
48
|
|
52
49
|
# output to the suite summary file
|
53
50
|
|
54
51
|
# open the suite summary file for writing if not already open
|
55
52
|
if !File.exist?($testSuiteSummaryFileName) || $testSuiteSummaryFileName.closed?
|
56
53
|
testSuiteSummaryFile = File.open($testSuiteSummaryFileName, 'w')
|
57
|
-
|
58
|
-
|
59
|
-
elsif
|
54
|
+
MyLog.log.info"Test Suite Summary file located at:"
|
55
|
+
MyLog.log.info "#{$testSuiteSummaryFileName}\n"
|
56
|
+
elsif MyLog.log.warn "test suite summary file name: #{$testSuiteSummarylFileName} is already open"
|
60
57
|
end
|
61
58
|
|
62
59
|
testSuiteSummaryFile.puts "Finished processing all test files - executed via test suite: #{$testSuiteFile} by tester: #{$tester} \n"
|
data/lib/taf_config.rb
CHANGED
@@ -25,6 +25,7 @@ require_relative './utils/test_steps'
|
|
25
25
|
require_relative './report/report'
|
26
26
|
require_relative './utils/browser'
|
27
27
|
require_relative './utils/create_directories'
|
28
|
+
require_relative './utils/logger'
|
28
29
|
require_relative './utils/test_engine'
|
29
30
|
require_relative './utils/exceptions'
|
30
31
|
require_relative './report/junit_report'
|
data/lib/utils/browser.rb
CHANGED
@@ -24,7 +24,7 @@ module Browser
|
|
24
24
|
when 'safari'
|
25
25
|
safari
|
26
26
|
else
|
27
|
-
|
27
|
+
MyLog.log.error "unable to open selected browser: #{lc_browser_type}"
|
28
28
|
raise BrowserFailedOpen
|
29
29
|
end
|
30
30
|
rescue BrowserFailedOpen => error
|
@@ -126,15 +126,15 @@ module Browser
|
|
126
126
|
|
127
127
|
# Screenshot capture for websites
|
128
128
|
Browser.b.screenshot.save scFileName
|
129
|
-
|
129
|
+
MyLog.log.info("Screenshot saved to: #{scFileName} \n")
|
130
130
|
else
|
131
|
-
|
131
|
+
MyLog.log.debug "No screenshot requested \n"
|
132
132
|
end
|
133
133
|
|
134
134
|
# if any issues with saving the screenshot then log a warning
|
135
135
|
rescue StandardError => error
|
136
136
|
# construct the error message from custom text and the actual system
|
137
137
|
# error message (converted to a string).
|
138
|
-
|
138
|
+
MyLog.log.warn("Error saving the screenshot: #{scFileName} #{error.to_s}")
|
139
139
|
end
|
140
140
|
end
|
@@ -20,8 +20,6 @@ module CreateDirectories
|
|
20
20
|
#
|
21
21
|
# ---------->directory named after test_id (with browser type identified)
|
22
22
|
#
|
23
|
-
# ------------->directory named 'Test_Results'
|
24
|
-
#
|
25
23
|
# ------------->directory named 'Screenshots'
|
26
24
|
|
27
25
|
def self.construct_projectdirs
|
@@ -53,18 +51,10 @@ module CreateDirectories
|
|
53
51
|
screenshot_dir = testid_dir + '/' + 'Screenshots' + '/'
|
54
52
|
Dir.mkdir(screenshot_dir)
|
55
53
|
|
56
|
-
# create a test results directory under the 'test run' directory - it will always need creating
|
57
|
-
test_res_dir = testid_dir + '/' + 'Test_Results' + '/'
|
58
|
-
Dir.mkdir(test_res_dir)
|
59
|
-
|
60
54
|
# create absolute paths to the screenshots, test results and test suite summary directories
|
61
55
|
abs_path_screenshot_dir = File.absolute_path(screenshot_dir)
|
62
|
-
abs_path_test_res_dir = File.absolute_path(test_res_dir)
|
63
56
|
abs_path_run_no_dir = File.absolute_path($runNoDir)
|
64
57
|
|
65
|
-
# the test results file name will be 'testId'_Res.txt
|
66
|
-
$testResultFileName = abs_path_test_res_dir + '/' + $testId + '_Res.txt'
|
67
|
-
|
68
58
|
# the test suite summary file name will be 'suite_summary.txt'
|
69
59
|
$testSuiteSummaryFileName = abs_path_run_no_dir + '/suite_summary.txt'
|
70
60
|
|
@@ -76,11 +66,9 @@ module CreateDirectories
|
|
76
66
|
$TestSuiteSummaryXML = 'Results/' + $projectId + '/' + f_date + '_' + f_time + '_test_result.xml'
|
77
67
|
|
78
68
|
# the log file name will be under the test ID directory
|
79
|
-
$logFileName = testid_dir + '/TestLogFile.txt'
|
80
69
|
|
81
|
-
|
82
|
-
|
83
|
-
puts "Test result directory: #{abs_path_test_res_dir}"
|
70
|
+
MyLog.log.info "TestId: #{$testId}"
|
71
|
+
MyLog.log.info "Screenshot directory: #{abs_path_screenshot_dir} \n"
|
84
72
|
|
85
73
|
# if any issues then set error message and re-raise the exception
|
86
74
|
rescue Exception => error
|
data/lib/utils/logger.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Created on 04 Feb 2019
|
4
|
+
# @author: Andy Perrett
|
5
|
+
#
|
6
|
+
# Versions:
|
7
|
+
# 1.0 - Baseline
|
8
|
+
#
|
9
|
+
# logger.rb - logger file
|
10
|
+
|
11
|
+
module MyLog
|
12
|
+
require_relative '../taf_config.rb'
|
13
|
+
def self.log
|
14
|
+
if @logger.nil?
|
15
|
+
@logger = Logger.new STDOUT
|
16
|
+
@logger.level = Logger::DEBUG
|
17
|
+
@logger.datetime_format = '%Y-%m-%d %H:%M:%S '
|
18
|
+
end
|
19
|
+
@logger
|
20
|
+
end
|
21
|
+
end
|
data/lib/utils/test_engine.rb
CHANGED
@@ -36,13 +36,10 @@ module TestEngine
|
|
36
36
|
|
37
37
|
if ARGV.length < 2
|
38
38
|
$browserType = test_suite[:browser]
|
39
|
-
|
40
|
-
puts "Will use the following browser from Test Suite: #{$browserType}"
|
41
|
-
puts ''
|
39
|
+
MyLog.log.info "Will use the following browser from Test Suite: #{$browserType}"
|
42
40
|
elsif ARGV.length < 3
|
43
41
|
$browserType = ARGV[1]
|
44
|
-
|
45
|
-
puts ''
|
42
|
+
MyLog.log.info "Will use the following browser from CMD line: " + ARGV[1]
|
46
43
|
else
|
47
44
|
raise IOError, 'Unable to open browser'
|
48
45
|
end
|
@@ -56,37 +53,27 @@ module TestEngine
|
|
56
53
|
# if unable to read the test data, show the error and move onto the
|
57
54
|
# next file (if there is one)
|
58
55
|
rescue StandardError => error
|
59
|
-
|
56
|
+
MyLog.log.warn "Terminating the current test case: " \
|
60
57
|
"#{test_file_name} #{error}"
|
61
|
-
|
58
|
+
MyLog.log.info '...continuing with the next test case (if there is one)'
|
62
59
|
end # of rescue block for readTestData
|
63
60
|
|
64
61
|
# create the project directories, returns the screenshot directory name
|
65
62
|
begin # start of rescue block for construct_projectdirs
|
66
63
|
# create test spec directories - these need creating once per testspec
|
67
64
|
full_sc_dirname = CreateDirectories.construct_testspecdirs
|
68
|
-
# open the log file
|
69
|
-
Report.open_log_file
|
70
65
|
# if an error then show the error and terminate
|
71
66
|
rescue StandardError => error
|
72
67
|
warn error
|
73
|
-
|
68
|
+
MyLog.log.warn error
|
74
69
|
abort
|
75
70
|
end
|
76
71
|
|
77
|
-
# open the test results output file
|
78
|
-
Report.open_test_report_file
|
79
|
-
|
80
|
-
# print the main test header
|
81
|
-
Report.print_test_header
|
82
|
-
|
83
72
|
# loop through the test file
|
84
73
|
if testFileType != 'XLSX'
|
85
74
|
puts 'Not a valid XLSX File Type'
|
86
75
|
end
|
87
76
|
|
88
|
-
Report.results.puts("Number of test steps: #{$numberOfTestSteps}")
|
89
|
-
|
90
77
|
# get the test case start time
|
91
78
|
$test_case_start_time = Report.current_time
|
92
79
|
# initialise the test end time
|
@@ -118,12 +105,6 @@ module TestEngine
|
|
118
105
|
ReportSummary.test_step_summary(test_file_name, test_file_name_index)
|
119
106
|
JunitReport.test_step_summary_xml(test_file_name, test_file_name_index)
|
120
107
|
|
121
|
-
# close the test results file for the current test case
|
122
|
-
Report.close_test_results_file
|
123
|
-
|
124
|
-
# close the log file
|
125
|
-
Report.close_log_file
|
126
|
-
|
127
108
|
# close the browser if created
|
128
109
|
Browser.b.quit
|
129
110
|
|
data/lib/utils/test_steps.rb
CHANGED
@@ -30,8 +30,7 @@ module TestSteps
|
|
30
30
|
Report.check_failure_threshold(test_file_name, teststepindex)
|
31
31
|
return true
|
32
32
|
else
|
33
|
-
|
34
|
-
puts "\nUnable to match function: #{step_function}"
|
33
|
+
MyLog.log.warn "\nUnable to match function: #{step_function}"
|
35
34
|
raise UnknownTestStep, "Unknown test step: #{step_function}"
|
36
35
|
return false
|
37
36
|
end
|
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.1.
|
4
|
+
version: 0.1.6
|
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-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -211,6 +211,7 @@ files:
|
|
211
211
|
- lib/utils/browser.rb
|
212
212
|
- lib/utils/create_directories.rb
|
213
213
|
- lib/utils/exceptions.rb
|
214
|
+
- lib/utils/logger.rb
|
214
215
|
- lib/utils/test_engine.rb
|
215
216
|
- lib/utils/test_steps.rb
|
216
217
|
- lib/version.rb
|