awetestlib 0.1.28 → 0.1.29pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/.gitattributes +22 -22
  2. data/.gitignore +69 -69
  3. data/.yardopts +7 -7
  4. data/README.md +108 -108
  5. data/awetestlib.gemspec +57 -57
  6. data/awetestlib.windows.gemspec +41 -41
  7. data/awetestlib_notes.txt +4 -4
  8. data/awetestlib_osx.gemspec +47 -48
  9. data/bin/awetestlib +99 -99
  10. data/bin/awetestlib-android-setup.rb +26 -26
  11. data/bin/awetestlib-cucumber-setup.rb +28 -28
  12. data/bin/awetestlib-driver-setup.rb +21 -21
  13. data/bin/awetestlib-helpers.rb +41 -41
  14. data/bin/awetestlib-mobile-app-setup.rb +31 -31
  15. data/bin/awetestlib-netbeans-setup.rb +58 -58
  16. data/bin/awetestlib-regression-setup.rb +15 -15
  17. data/bin/awetestlib-rubymine-setup.rb +39 -39
  18. data/drivers/chromedriver.exe +0 -0
  19. data/ext/Rakefile +1 -1
  20. data/ext/mkrf_conf.rb +27 -27
  21. data/lib/awetestlib/html_report.rb +142 -142
  22. data/lib/awetestlib/logging.rb +366 -366
  23. data/lib/awetestlib/regression/browser.rb +1380 -1375
  24. data/lib/awetestlib/regression/drag_and_drop.rb +421 -420
  25. data/lib/awetestlib/regression/find.rb +345 -345
  26. data/lib/awetestlib/regression/legacy.rb +1187 -1187
  27. data/lib/awetestlib/regression/page_data.rb +191 -191
  28. data/lib/awetestlib/regression/runner.rb +307 -307
  29. data/lib/awetestlib/regression/tables.rb +627 -619
  30. data/lib/awetestlib/regression/user_input.rb +576 -576
  31. data/lib/awetestlib/regression/utilities.rb +1046 -988
  32. data/lib/awetestlib/regression/validations.rb +1093 -1074
  33. data/lib/awetestlib/regression/waits.rb +470 -470
  34. data/lib/awetestlib/runner.rb +18 -18
  35. data/lib/awetestlib.rb +41 -41
  36. data/lib/patches/README +2 -2
  37. data/lib/patches/firewatir.rb +106 -106
  38. data/lib/patches/watir.rb +175 -175
  39. data/lib/version.rb +2 -2
  40. data/license.txt +13 -13
  41. data/netbeans_setup.md +29 -29
  42. data/rdoc_test.bat +1 -1
  43. data/rubymine_setup.md +23 -23
  44. data/setup_samples/sample_android/features/dk.mejer.hansen.control.FlyingColorsPlayerAidActivity.apk +0 -0
  45. data/setup_samples/sample_android/features/sample_android.feature +5 -5
  46. data/setup_samples/sample_android/features/step_definitions/calabash_steps.rb +1 -1
  47. data/setup_samples/sample_android/features/support/app_installation_hooks.rb +36 -36
  48. data/setup_samples/sample_android/features/support/app_life_cycle_hooks.rb +14 -14
  49. data/setup_samples/sample_android/features/test_servers/8ba795a0288381ae346b67867b586881_0.3.2.apk +0 -0
  50. data/setup_samples/sample_cucumber/features/step_definitions/predefined_steps.rb +76 -76
  51. data/setup_samples/sample_cucumber/features/yahoo_mail.feature +11 -11
  52. data/setup_samples/sample_mobile_app/features/my_first.feature +14 -14
  53. data/setup_samples/sample_mobile_app/features/step_definitions/predefined_webview_steps.rb +80 -80
  54. data/setup_samples/sample_mobile_app/features/support/env.rb +2 -2
  55. data/setup_samples/sample_netbeans/demo.rb +86 -86
  56. data/setup_samples/sample_netbeans/nbproject/configs/Demo.properties +2 -2
  57. data/setup_samples/sample_netbeans/nbproject/private/config.properties +1 -1
  58. data/setup_samples/sample_netbeans/nbproject/private/configs/Demo.properties +2 -2
  59. data/setup_samples/sample_netbeans/nbproject/private/private.properties +2 -2
  60. data/setup_samples/sample_netbeans/nbproject/project.properties +5 -5
  61. data/setup_samples/sample_netbeans/nbproject/project.xml +13 -13
  62. data/setup_samples/sample_rubymine/.idea/encodings.xml +5 -5
  63. data/setup_samples/sample_rubymine/.idea/misc.xml +5 -5
  64. data/setup_samples/sample_rubymine/.idea/modules.xml +9 -9
  65. data/setup_samples/sample_rubymine/.idea/sample_rubymine.iml +9 -9
  66. data/setup_samples/sample_rubymine/.idea/scopes/scope_settings.xml +4 -4
  67. data/setup_samples/sample_rubymine/.idea/vcs.xml +7 -7
  68. data/setup_samples/sample_rubymine/.idea/workspace.xml +213 -213
  69. data/setup_samples/sample_rubymine/demo.rb +86 -86
  70. data/test/create_zoho.rb +66 -66
  71. data/test/create_zoho_account1.rb +68 -68
  72. data/test/create_zoho_account2.rb +72 -72
  73. data/test/demo.rb +87 -87
  74. data/test/google_search1.rb +16 -16
  75. data/test/google_search2.rb +19 -19
  76. data/test/login_1.rb +37 -37
  77. data/test/login_1a.rb +37 -37
  78. data/test/login_2.rb +32 -32
  79. data/test/zoho_exercise.rb +21 -21
  80. data/test/zoho_util.rb +487 -487
  81. data/tmp/placeholder.html +71 -71
  82. metadata +18 -49
@@ -1,59 +1,59 @@
1
- def edit_config_file
2
- @new_config_file = File.join(FileUtils.pwd, @proj_dir, "nbproject","private","configs", "Demo.properties")
3
- @demo_script = File.join(FileUtils.pwd, @proj_dir, "demo.rb")
4
- workspace_text = File.read(@new_config_file)
5
- new_workspace_text = workspace_text.gsub(/SAMPLE-SCRIPT/,@demo_script )
6
- new_workspace_text = new_workspace_text.gsub(/WORK-DIR/, File.dirname(@demo_script))
7
- File.open(@new_config_file, "w") {|file| file.puts new_workspace_text}
8
- end
9
-
10
- def edit_private_file
11
- @new_private_file = File.join(FileUtils.pwd, @proj_dir, "nbproject", "private", "private.properties")
12
- @bin_dir = File.join(File.dirname(__FILE__))
13
- workspace_text = File.read(@new_private_file)
14
- new_workspace_text = workspace_text.gsub(/BIN-DIR/,@bin_dir )
15
- File.open(@new_private_file, "w") {|file| file.puts new_workspace_text}
16
- end
17
-
18
- def edit_project_file
19
- @new_project_file = File.join(FileUtils.pwd, @proj_dir, "nbproject", "project.xml")
20
- project_text = File.read(@new_project_file)
21
- new_project_text = project_text.gsub(/PROJECT-NAME/, @proj_dir)
22
- File.open(@new_project_file, "w") {|file| file.puts new_project_text}
23
-
24
- end
25
-
26
-
27
- def awetestlib_netbeans_setup
28
- if ARGV[1].nil?
29
- @proj_dir = "sample_netbeans"
30
- else
31
- @proj_dir = ARGV[1]
32
- end
33
-
34
- @netbeans_dir = File.join(FileUtils.pwd, @proj_dir)
35
- @source_dir = File.join(File.dirname(__FILE__), '..', 'setup_samples', 'sample_netbeans')
36
-
37
- if File.exists?(@netbeans_dir)
38
- puts "Netbeans project directory already exists."
39
- exit 1
40
- end
41
-
42
- msg("Question") do
43
- puts "I'm about to create a netbeans project named #{ARGV[1]} in this directory" if ARGV[1]
44
- puts "I'm about to create a netbeans project named sample_netbeans in this directory" if ARGV[1].nil?
45
- puts "Please hit return to confirm that's what you want."
46
- puts "NOTE: You may need to run this command as an administrator."
47
- end
48
- exit 2 unless STDIN.gets.chomp == ''
49
-
50
- FileUtils.cp_r(@source_dir, @netbeans_dir)
51
- edit_config_file
52
- edit_private_file
53
- edit_project_file
54
-
55
- msg("Info") do
56
- puts "Configuring files and settings"
57
- end
58
-
1
+ def edit_config_file
2
+ @new_config_file = File.join(FileUtils.pwd, @proj_dir, "nbproject","private","configs", "Demo.properties")
3
+ @demo_script = File.join(FileUtils.pwd, @proj_dir, "demo.rb")
4
+ workspace_text = File.read(@new_config_file)
5
+ new_workspace_text = workspace_text.gsub(/SAMPLE-SCRIPT/,@demo_script )
6
+ new_workspace_text = new_workspace_text.gsub(/WORK-DIR/, File.dirname(@demo_script))
7
+ File.open(@new_config_file, "w") {|file| file.puts new_workspace_text}
8
+ end
9
+
10
+ def edit_private_file
11
+ @new_private_file = File.join(FileUtils.pwd, @proj_dir, "nbproject", "private", "private.properties")
12
+ @bin_dir = File.join(File.dirname(__FILE__))
13
+ workspace_text = File.read(@new_private_file)
14
+ new_workspace_text = workspace_text.gsub(/BIN-DIR/,@bin_dir )
15
+ File.open(@new_private_file, "w") {|file| file.puts new_workspace_text}
16
+ end
17
+
18
+ def edit_project_file
19
+ @new_project_file = File.join(FileUtils.pwd, @proj_dir, "nbproject", "project.xml")
20
+ project_text = File.read(@new_project_file)
21
+ new_project_text = project_text.gsub(/PROJECT-NAME/, @proj_dir)
22
+ File.open(@new_project_file, "w") {|file| file.puts new_project_text}
23
+
24
+ end
25
+
26
+
27
+ def awetestlib_netbeans_setup
28
+ if ARGV[1].nil?
29
+ @proj_dir = "sample_netbeans"
30
+ else
31
+ @proj_dir = ARGV[1]
32
+ end
33
+
34
+ @netbeans_dir = File.join(FileUtils.pwd, @proj_dir)
35
+ @source_dir = File.join(File.dirname(__FILE__), '..', 'setup_samples', 'sample_netbeans')
36
+
37
+ if File.exists?(@netbeans_dir)
38
+ puts "Netbeans project directory already exists."
39
+ exit 1
40
+ end
41
+
42
+ msg("Question") do
43
+ puts "I'm about to create a netbeans project named #{ARGV[1]} in this directory" if ARGV[1]
44
+ puts "I'm about to create a netbeans project named sample_netbeans in this directory" if ARGV[1].nil?
45
+ puts "Please hit return to confirm that's what you want."
46
+ puts "NOTE: You may need to run this command as an administrator."
47
+ end
48
+ exit 2 unless STDIN.gets.chomp == ''
49
+
50
+ FileUtils.cp_r(@source_dir, @netbeans_dir)
51
+ edit_config_file
52
+ edit_private_file
53
+ edit_project_file
54
+
55
+ msg("Info") do
56
+ puts "Configuring files and settings"
57
+ end
58
+
59
59
  end
@@ -1,16 +1,16 @@
1
- def awetestlib_regression_setup
2
- msg("Question") do
3
- puts "I'm about to setup awetest regression support and register the AutoIt.dll"
4
- puts "Please hit return to confirm that's what you want."
5
- puts "NOTE: You may need to run this command as an administrator."
6
- end
7
- exit 2 unless STDIN.gets.chomp == ''
8
-
9
- autoit_file = File.join(File.dirname(__FILE__),"AutoItX3.dll")
10
- system("regsvr32 #{autoit_file}")
11
-
12
- msg("Info") do
13
- puts "Configuring files and settings"
14
- end
15
-
1
+ def awetestlib_regression_setup
2
+ msg("Question") do
3
+ puts "I'm about to setup awetest regression support and register the AutoIt.dll"
4
+ puts "Please hit return to confirm that's what you want."
5
+ puts "NOTE: You may need to run this command as an administrator."
6
+ end
7
+ exit 2 unless STDIN.gets.chomp == ''
8
+
9
+ autoit_file = File.join(File.dirname(__FILE__),"AutoItX3.dll")
10
+ system("regsvr32 #{autoit_file}")
11
+
12
+ msg("Info") do
13
+ puts "Configuring files and settings"
14
+ end
15
+
16
16
  end
@@ -1,40 +1,40 @@
1
- def edit_config_file
2
- @new_config_file = File.join(FileUtils.pwd, @proj_dir, ".idea", "workspace.xml")
3
- @demo_script = File.join(FileUtils.pwd, @proj_dir, "demo.rb")
4
- @awetestlib_file = File.join(File.dirname(__FILE__), "awetestlib")
5
- workspace_text = File.read(@new_config_file)
6
- new_workspace_text = workspace_text.gsub(/SAMPLE-SCRIPT/,@demo_script )
7
- new_workspace_text = new_workspace_text.gsub(/RUBY-SCRIPT/, @awetestlib_file)
8
- new_workspace_text = new_workspace_text.gsub(/WORK-DIR/, File.dirname(@demo_script))
9
- File.open(@new_config_file, "w") {|file| file.puts new_workspace_text}
10
- end
11
-
12
- def awetestlib_rubymine_setup
13
- if ARGV[1].nil?
14
- @proj_dir = "sample_rubymine"
15
- else
16
- @proj_dir = ARGV[1]
17
- end
18
-
19
- @rubymine_dir = File.join(FileUtils.pwd, @proj_dir)
20
- @source_dir = File.join(File.dirname(__FILE__), '..', 'setup_samples', 'sample_rubymine')
21
-
22
- if File.exists?(@rubymine_dir)
23
- puts "Rubymine project directory already exists."
24
- exit 1
25
- end
26
-
27
- msg("Question") do
28
- puts "I'm about to create a rubymine project named #{ARGV[1]} in this directory" if ARGV[1]
29
- puts "I'm about to create a rubymine project named sample_rubymine in this directory" if ARGV[1].nil?
30
- puts "Please hit return to confirm that's what you want."
31
- puts "NOTE: You may need to run this command as an administrator."
32
- end
33
- exit 2 unless STDIN.gets.chomp == ''
34
- FileUtils.cp_r(@source_dir, @rubymine_dir)
35
- edit_config_file
36
- msg("Info") do
37
- puts "Configuring files and settings"
38
- end
39
-
1
+ def edit_config_file
2
+ @new_config_file = File.join(FileUtils.pwd, @proj_dir, ".idea", "workspace.xml")
3
+ @demo_script = File.join(FileUtils.pwd, @proj_dir, "demo.rb")
4
+ @awetestlib_file = File.join(File.dirname(__FILE__), "awetestlib")
5
+ workspace_text = File.read(@new_config_file)
6
+ new_workspace_text = workspace_text.gsub(/SAMPLE-SCRIPT/,@demo_script )
7
+ new_workspace_text = new_workspace_text.gsub(/RUBY-SCRIPT/, @awetestlib_file)
8
+ new_workspace_text = new_workspace_text.gsub(/WORK-DIR/, File.dirname(@demo_script))
9
+ File.open(@new_config_file, "w") {|file| file.puts new_workspace_text}
10
+ end
11
+
12
+ def awetestlib_rubymine_setup
13
+ if ARGV[1].nil?
14
+ @proj_dir = "sample_rubymine"
15
+ else
16
+ @proj_dir = ARGV[1]
17
+ end
18
+
19
+ @rubymine_dir = File.join(FileUtils.pwd, @proj_dir)
20
+ @source_dir = File.join(File.dirname(__FILE__), '..', 'setup_samples', 'sample_rubymine')
21
+
22
+ if File.exists?(@rubymine_dir)
23
+ puts "Rubymine project directory already exists."
24
+ exit 1
25
+ end
26
+
27
+ msg("Question") do
28
+ puts "I'm about to create a rubymine project named #{ARGV[1]} in this directory" if ARGV[1]
29
+ puts "I'm about to create a rubymine project named sample_rubymine in this directory" if ARGV[1].nil?
30
+ puts "Please hit return to confirm that's what you want."
31
+ puts "NOTE: You may need to run this command as an administrator."
32
+ end
33
+ exit 2 unless STDIN.gets.chomp == ''
34
+ FileUtils.cp_r(@source_dir, @rubymine_dir)
35
+ edit_config_file
36
+ msg("Info") do
37
+ puts "Configuring files and settings"
38
+ end
39
+
40
40
  end
File without changes
data/ext/Rakefile CHANGED
@@ -1 +1 @@
1
- task :default
1
+ task :default
data/ext/mkrf_conf.rb CHANGED
@@ -1,27 +1,27 @@
1
- require 'rubygems/dependency_installer.rb'
2
- using_windows = !!((RUBY_PLATFORM =~ /(win|w)(32|64)$/) || (RUBY_PLATFORM=~ /mswin|mingw/))
3
- #using_jruby = defined?(JRUBY_VERSION)
4
- using_osx = RUBY_PLATFORM =~ /darwin/
5
- installer = Gem::DependencyInstaller.new
6
- begin
7
- puts "#{RUBY_PLATFORM}"
8
- if using_windows
9
- installer.install "watirloo", ">=0"
10
- installer.install "win32-process", ">=0"
11
- installer.install "win32-screenshot", ">=0"
12
- installer.install "commonwatir", "=1.8.1"
13
- installer.install "watir", "=1.8.1"
14
- installer.install "firewatir", "=1.8.1"
15
- elsif using_osx
16
- installer.install "rb_appscript", ">=0"
17
- installer.install "safariwatir", ">=0"
18
- end
19
-
20
- rescue
21
- puts "#{$!}"
22
- exit(1)
23
- end
24
-
25
- f = File.open(File.join(File.dirname(__FILE__), "Rakefile"), "w")
26
- f.write("task :default\n")
27
- f.close
1
+ require 'rubygems/dependency_installer.rb'
2
+ using_windows = !!((RUBY_PLATFORM =~ /(win|w)(32|64)$/) || (RUBY_PLATFORM=~ /mswin|mingw/))
3
+ #using_jruby = defined?(JRUBY_VERSION)
4
+ using_osx = RUBY_PLATFORM =~ /darwin/
5
+ installer = Gem::DependencyInstaller.new
6
+ begin
7
+ puts "#{RUBY_PLATFORM}"
8
+ if using_windows
9
+ installer.install "watirloo", ">=0"
10
+ installer.install "win32-process", ">=0"
11
+ installer.install "win32-screenshot", ">=0"
12
+ installer.install "commonwatir", "=1.8.1"
13
+ installer.install "watir", "=1.8.1"
14
+ installer.install "firewatir", "=1.8.1"
15
+ elsif using_osx
16
+ installer.install "rb_appscript", ">=0"
17
+ installer.install "safariwatir", ">=0"
18
+ end
19
+
20
+ rescue
21
+ puts "#{$!}"
22
+ exit(1)
23
+ end
24
+
25
+ f = File.open(File.join(File.dirname(__FILE__), "Rakefile"), "w")
26
+ f.write("task :default\n")
27
+ f.close
@@ -1,142 +1,142 @@
1
- module Awetestlib
2
- # Report generator for Awetestlib.
3
- class HtmlReport
4
-
5
- # Initialize the report class
6
- # @private
7
- def initialize(report_name)
8
- @reportname = report_name
9
- @reportContent1 = ''
10
- @reportContent2 = ''
11
- end
12
-
13
- # Create a report
14
- # @private
15
- def create_report(reportName)
16
- # Get current time
17
- t = Time.now
18
-
19
- # Create the report name
20
- strTime = "#{t.strftime("%Y%m%d_%H%M%S")}"
21
- strNiceTime = "#{t.strftime("%m/%d/%Y @ %H:%M:%S")}"
22
- strTotalReport = "#{reportName}_#{strTime}.html"
23
-
24
- # Create the HTML report
25
- strFile = File.open(strTotalReport, 'w')
26
-
27
- # Format the header of the HTML report
28
- @reportContent1 = '<html>
29
- <head>
30
- <meta content=text/html; charset=ISO-8859-1 http-equiv=content-type>
31
- <title>Awetestlib Test Run</title>
32
- <style type=text/css>
33
- .title { font-family: verdana; font-size: 30px; font-weight: bold; align: left; color: #000000;}
34
- .bold_text { font-family: verdana; font-size: 12px; font-weight: bold;}
35
- .bold_large_text { font-family: verdana; font-size: 13px; font-weight: bold;}
36
- .normal_text { font-family: verdana; font-size: 12px; font-weight: normal;}
37
- .small_text { font-family: verdana; font-size: 10px; font-weight: normal; }
38
- .border { border: 1px solid #000000;}
39
- .mark_testlevel_left { border-top: 1px solid #858585; border-left: 1px solid #858585;background-color:#E2F4FE;}
40
- .mark_testlevel_right { border-top: 1px solid #858585; border-right: 1px solid #858585;background-color:#E2F4FE;}
41
- .border_left { border-top: 1px solid #858585; border-left: 1px solid #858585; border-right: 1px solid #858585;}
42
- .border_right { border-top: 1px solid #858585; border-right: 1px solid #858585;}
43
- .result_ok { font-family: verdana; font-size: 12px; font-weight: bold; text-align: center; color: green;}
44
- .result_nok { font-family: verdana; font-size: 12px; font-weight: bold; text-align: center; color: red;}
45
- .overall_ok { font-family: verdana; font-size: 12px; font-weight: bold; text-align: left; color: green;}
46
- .overall_nok { font-family: verdana; font-size: 12px; font-weight: bold; text-align: left; color: red;}
47
- .bborder_left { border-top: 1px solid #858585; border-left: 1px solid #858585; border-bottom: 1px solid #858585; background-color:#858585;font-family: verdana; font-size: 12px; font-weight: bold; text-align: center; color: white;}
48
- .bborder_right { border-right: 1px solid #858585; background-color:#858585;font-family: verdana; font-size: 12px; font-weight: bold; text-align: center; color: white;}
49
- </style>
50
- </head>
51
- <body>
52
- <br>
53
- <center>
54
- <table width=800 border=0 cellpadding=2 cellspacing=2>
55
- <tbody>
56
- <tr>
57
- <td>
58
- <table width=100% border=0 cellpadding=2 cellspacing=2>
59
- <tbody>
60
- <tr>
61
- <td style=width: 150px;>&nbsp;</td>
62
- <td align=left><img src="https://raw.github.com/3qilabs/awetestlib/develop/images/logo.png"></img></td>
63
- <td align=right><p class=title>Test Report</p></td>
64
- </tr>
65
- </tbody>
66
- </table>
67
- <br>
68
- <hr width=100% class=border size=1px>
69
- <center>
70
- <table border=0 width=95% cellpadding=2 cellspacing=2>
71
- <tbody>
72
- <tr>
73
- <td width=20%><p class=bold_text>Script</p></td>
74
- <td width=5%><p class=bold_text>:</p></td>
75
- <td width=75%><p class=normal_text>' + @reportname.capitalize + '</p></td>
76
- </tr>
77
- <tr>
78
- <td width=20%><p class=bold_text>Test Execution</p></td>
79
- <td width=5%><p class=bold_text>:</p></td>
80
- <td width=75%><p class=normal_text>' + strNiceTime + '</p></td>
81
- </tr>
82
- <tr>'
83
-
84
- @reportContent2 = '</tr>
85
- </tbody>
86
- </table>
87
- </center>
88
- <br>
89
- <center>
90
- <table width=95% cellpadding=2 cellspacing=0>
91
- <tbody>
92
- <tr>
93
- <td class=bborder_left width=80%><p>Test Step</p></td>
94
- <td class=bborder_left width=20%><p>Result</p></td>
95
- </tr>'
96
-
97
- # Close the report
98
- strFile.close
99
-
100
- return strTotalReport
101
- end
102
-
103
- # Add a row to the report
104
- # @private
105
- def add_to_report(step, result, level = 1)
106
- # Format the body of the HTML report
107
- if (result == 'PASSED')
108
- @reportContent2 = @reportContent2 + '<tr><td class=border_left width=80%><p class=normal_text>' + step + '</p></td>'
109
- @reportContent2 = @reportContent2 + '<td class=border_right width=20%><p class=result_ok>' + result + '</p></td>'
110
- elsif (result == 'FAILED')
111
- @reportContent2 = @reportContent2 + '<tr><td class=border_left width=80%><p class=normal_text>' + step + '</p></td>'
112
- @reportContent2 = @reportContent2 + '<td class=border_right width=20%><p class=result_nok>' + result + '</p></td>'
113
- elsif level < 1
114
- @reportContent2 = @reportContent2 + '<tr><td class=border_left width=80%><p class=normal_text>' + step + '</p></td>'
115
- @reportContent2 = @reportContent2 + '<td class=border_right width=20%><p class=result_nok>' + result + '</p></td>'
116
- else
117
- @reportContent2 = @reportContent2 + '<tr><td class=mark_testlevel_left width=80%><p class=bold_large_text>' + step + '</p></td>'
118
- @reportContent2 = @reportContent2 + '<td class=mark_testlevel_right width=20%><p class=result_nok>' + result + '</p></td>'
119
- end
120
- end
121
-
122
- # Close the report HTML
123
- # @private
124
- def finish_report(reportName)
125
- # Open the HTML report
126
- strFile = File.open(reportName, 'a')
127
-
128
- @reportContent2 = @reportContent2 + '<tr>
129
- <td class=bborder_left width=80%><p>&nbsp;</p></td>
130
- <td class=bborder_left width=20%><p>&nbsp;</p></td>
131
- </tr>
132
- </table>'
133
-
134
- strFile.puts(@reportContent1)
135
-
136
- strFile.puts(@reportContent2)
137
-
138
- # Close the report
139
- strFile.close
140
- end
141
- end
142
- end
1
+ module Awetestlib
2
+ # Report generator for Awetestlib.
3
+ class HtmlReport
4
+
5
+ # Initialize the report class
6
+ # @private
7
+ def initialize(report_name)
8
+ @reportname = report_name
9
+ @reportContent1 = ''
10
+ @reportContent2 = ''
11
+ end
12
+
13
+ # Create a report
14
+ # @private
15
+ def create_report(reportName)
16
+ # Get current time
17
+ t = Time.now
18
+
19
+ # Create the report name
20
+ strTime = "#{t.strftime("%Y%m%d_%H%M%S")}"
21
+ strNiceTime = "#{t.strftime("%m/%d/%Y @ %H:%M:%S")}"
22
+ strTotalReport = "#{reportName}_#{strTime}.html"
23
+
24
+ # Create the HTML report
25
+ strFile = File.open(strTotalReport, 'w')
26
+
27
+ # Format the header of the HTML report
28
+ @reportContent1 = '<html>
29
+ <head>
30
+ <meta content=text/html; charset=ISO-8859-1 http-equiv=content-type>
31
+ <title>Awetestlib Test Run</title>
32
+ <style type=text/css>
33
+ .title { font-family: verdana; font-size: 30px; font-weight: bold; align: left; color: #000000;}
34
+ .bold_text { font-family: verdana; font-size: 12px; font-weight: bold;}
35
+ .bold_large_text { font-family: verdana; font-size: 13px; font-weight: bold;}
36
+ .normal_text { font-family: verdana; font-size: 12px; font-weight: normal;}
37
+ .small_text { font-family: verdana; font-size: 10px; font-weight: normal; }
38
+ .border { border: 1px solid #000000;}
39
+ .mark_testlevel_left { border-top: 1px solid #858585; border-left: 1px solid #858585;background-color:#E2F4FE;}
40
+ .mark_testlevel_right { border-top: 1px solid #858585; border-right: 1px solid #858585;background-color:#E2F4FE;}
41
+ .border_left { border-top: 1px solid #858585; border-left: 1px solid #858585; border-right: 1px solid #858585;}
42
+ .border_right { border-top: 1px solid #858585; border-right: 1px solid #858585;}
43
+ .result_ok { font-family: verdana; font-size: 12px; font-weight: bold; text-align: center; color: green;}
44
+ .result_nok { font-family: verdana; font-size: 12px; font-weight: bold; text-align: center; color: red;}
45
+ .overall_ok { font-family: verdana; font-size: 12px; font-weight: bold; text-align: left; color: green;}
46
+ .overall_nok { font-family: verdana; font-size: 12px; font-weight: bold; text-align: left; color: red;}
47
+ .bborder_left { border-top: 1px solid #858585; border-left: 1px solid #858585; border-bottom: 1px solid #858585; background-color:#858585;font-family: verdana; font-size: 12px; font-weight: bold; text-align: center; color: white;}
48
+ .bborder_right { border-right: 1px solid #858585; background-color:#858585;font-family: verdana; font-size: 12px; font-weight: bold; text-align: center; color: white;}
49
+ </style>
50
+ </head>
51
+ <body>
52
+ <br>
53
+ <center>
54
+ <table width=800 border=0 cellpadding=2 cellspacing=2>
55
+ <tbody>
56
+ <tr>
57
+ <td>
58
+ <table width=100% border=0 cellpadding=2 cellspacing=2>
59
+ <tbody>
60
+ <tr>
61
+ <td style=width: 150px;>&nbsp;</td>
62
+ <td align=left><img src="https://raw.github.com/3qilabs/awetestlib/develop/images/logo.png"></img></td>
63
+ <td align=right><p class=title>Test Report</p></td>
64
+ </tr>
65
+ </tbody>
66
+ </table>
67
+ <br>
68
+ <hr width=100% class=border size=1px>
69
+ <center>
70
+ <table border=0 width=95% cellpadding=2 cellspacing=2>
71
+ <tbody>
72
+ <tr>
73
+ <td width=20%><p class=bold_text>Script</p></td>
74
+ <td width=5%><p class=bold_text>:</p></td>
75
+ <td width=75%><p class=normal_text>' + @reportname.capitalize + '</p></td>
76
+ </tr>
77
+ <tr>
78
+ <td width=20%><p class=bold_text>Test Execution</p></td>
79
+ <td width=5%><p class=bold_text>:</p></td>
80
+ <td width=75%><p class=normal_text>' + strNiceTime + '</p></td>
81
+ </tr>
82
+ <tr>'
83
+
84
+ @reportContent2 = '</tr>
85
+ </tbody>
86
+ </table>
87
+ </center>
88
+ <br>
89
+ <center>
90
+ <table width=95% cellpadding=2 cellspacing=0>
91
+ <tbody>
92
+ <tr>
93
+ <td class=bborder_left width=80%><p>Test Step</p></td>
94
+ <td class=bborder_left width=20%><p>Result</p></td>
95
+ </tr>'
96
+
97
+ # Close the report
98
+ strFile.close
99
+
100
+ return strTotalReport
101
+ end
102
+
103
+ # Add a row to the report
104
+ # @private
105
+ def add_to_report(step, result, level = 1)
106
+ # Format the body of the HTML report
107
+ if (result == 'PASSED')
108
+ @reportContent2 = @reportContent2 + '<tr><td class=border_left width=80%><p class=normal_text>' + step + '</p></td>'
109
+ @reportContent2 = @reportContent2 + '<td class=border_right width=20%><p class=result_ok>' + result + '</p></td>'
110
+ elsif (result == 'FAILED')
111
+ @reportContent2 = @reportContent2 + '<tr><td class=border_left width=80%><p class=normal_text>' + step + '</p></td>'
112
+ @reportContent2 = @reportContent2 + '<td class=border_right width=20%><p class=result_nok>' + result + '</p></td>'
113
+ elsif level < 1
114
+ @reportContent2 = @reportContent2 + '<tr><td class=border_left width=80%><p class=normal_text>' + step + '</p></td>'
115
+ @reportContent2 = @reportContent2 + '<td class=border_right width=20%><p class=result_nok>' + result + '</p></td>'
116
+ else
117
+ @reportContent2 = @reportContent2 + '<tr><td class=mark_testlevel_left width=80%><p class=bold_large_text>' + step + '</p></td>'
118
+ @reportContent2 = @reportContent2 + '<td class=mark_testlevel_right width=20%><p class=result_nok>' + result + '</p></td>'
119
+ end
120
+ end
121
+
122
+ # Close the report HTML
123
+ # @private
124
+ def finish_report(reportName)
125
+ # Open the HTML report
126
+ strFile = File.open(reportName, 'a')
127
+
128
+ @reportContent2 = @reportContent2 + '<tr>
129
+ <td class=bborder_left width=80%><p>&nbsp;</p></td>
130
+ <td class=bborder_left width=20%><p>&nbsp;</p></td>
131
+ </tr>
132
+ </table>'
133
+
134
+ strFile.puts(@reportContent1)
135
+
136
+ strFile.puts(@reportContent2)
137
+
138
+ # Close the report
139
+ strFile.close
140
+ end
141
+ end
142
+ end