<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html lang=‘en’ xml:lang=‘en’ xmlns=‘www.w3.org/1999/xhtml’>
<head> <title>support/hooks.rb</title> <link href="./assets/0.2.3/screen.css" media="all" rel="stylesheet" type="text/css" /> <link href="./assets/0.2.3/print.css" media="print" rel="stylesheet" type="text/css" /> <meta http-equiv="Content-type" content="text/html;charset=UTF-8" /> <script type="text/javascript" src="./assets/0.2.3/rcov.js"></script> </head> <body> <h1>Cukes C0 Coverage Information - Simploco - RCov</h1> <h2>support/hooks.rb</h2> <div class="report_table_wrapper"> <table class='report' id='report_table'> <thead> <tr> <th class="left_align">Name</th> <th class="right_align">Total Lines</th> <th class="right_align">Lines of Code</th> <th class="left_align">Total Coverage</th> <th class="left_align">Code Coverage</th> </tr> </thead> <tbody> <tr> <td class="left_align"><a href="support-hooks_rb.html">support/hooks.rb</a></td> <td class='right_align'><tt>273</tt></td> <td class='right_align'><tt>129</tt></td> <td class="left_align"><div class="percent_graph_legend"><tt class=''>89.74%</tt></div> <div class="percent_graph"> <div class="covered" style="width:90px"></div> <div class="uncovered" style="width:10px"></div> </div></td> <td class="left_align"><div class="percent_graph_legend"><tt class=''>78.29%</tt></div> <div class="percent_graph"> <div class="covered" style="width:78px"></div> <div class="uncovered" style="width:22px"></div> </div></td> </tr> </tbody> </table> </div> <h3>Key</h3> <div class="key"><pre><span class='marked'>Code reported as executed by Ruby looks like this...</span><span class='marked1'>and this: this line is also marked as covered.</span><span class='inferred'>Lines considered as run by rcov, but not reported by Ruby, look like this,</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).</span><span class='uncovered'>Finally, here's a line marked as not executed.</span></pre></div> <h3>Coverage Details</h3> <table class="details"> <tbody> <tr class="inferred"> <td><pre><a name="line2">2</a> =begin</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line3">3</a> *Name : hooks.rb</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line4">4</a> *Description : hooks definition to perform task pre/post a scenario and/or step execution</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line5">5</a> *Author : Chandra sekaran</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line6">6</a> *Creation Date : 24/04/2015</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line7">7</a> *Updation Date :</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line8">8</a> =end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line9">9</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line10">10</a> $log = CUKES::CreateLog.new("app_env") # base log to hold the environment details</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line11">11</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line12">12</a> $obj_yml = CUKES::Read_From_YML.new("config/config.yml") # read the config file content</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line13">13</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line14">14</a> # for resetting config values</pre></td> </tr> <tr class="marked"> <td><pre><a name="line15">15</a> if !RESET_CONFIG_VALUES.nil?</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line16">16</a> $obj_yml.set_value("environment/parallel_execution_count", 0) # reset parallel execution count</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line17">17</a> $obj_yml.release_all_profiles # release all unused profiles</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line18">18</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line19">19</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line20">20</a> # this global variable holds the number of parallel executions (also accounts for single execution)</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line21">21</a> # and generates consolidated custom html report file(s)</pre></td> </tr> <tr class="marked"> <td><pre><a name="line22">22</a> $parallel_execution_count = $obj_yml.get_value("environment/parallel_execution_count")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line23">23</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line24">24</a> # set dynamic profile for a specific box or any free box</pre></td> </tr> <tr class="marked"> <td><pre><a name="line25">25</a> if ENV["PROFILE"].downcase == "development"</pre></td> </tr> <tr class="marked"> <td><pre><a name="line26">26</a> if BOX.nil?</pre></td> </tr> <tr class="marked"> <td><pre><a name="line27">27</a> BOX, PROFILE = $obj_yml.get_any_profile("development")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line28">28</a> else</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line29">29</a> PROFILE = $obj_yml.get_specific_profile("development")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line30">30</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line31">31</a> elsif ENV["PROFILE"].downcase == "test"</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line32">32</a> if BOX.nil?</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line33">33</a> BOX, PROFILE = $obj_yml.get_any_profile("test")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line34">34</a> else</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line35">35</a> PROFILE = $obj_yml.get_specific_profile("test")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line36">36</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line37">37</a> else</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line38">38</a> raise "Invalid profile name : #{ENV["PROFILE"]}"</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line39">39</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line40">40</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line41">41</a> GOOGLE_URL = $obj_yml.get_value("application/#{BOX}/#{PROFILE}/url/google") # get the google url to be launched</pre></td> </tr> <tr class="marked"> <td><pre><a name="line42">42</a> RUBYGEMS_URL = $obj_yml.get_value("application/#{BOX}/#{PROFILE}/url/rubygems") # get the rubygems url to be launched</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line43">43</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line44">44</a> # Since I have used two different applications, I use two different urls, else this is not required and you can use</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line45">45</a> # the url present in config.yml file (the environment argument APP is just for demonstration only)</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line46">46</a> # For the present feature files, if you want to run rubygems feature, kindly add APP=GOOGLE in cucumber run command</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line47">47</a> # and for google feature add APP=GOOGLE in cucumber run command</pre></td> </tr> <tr class="marked"> <td><pre><a name="line48">48</a> if ENV["APP"].nil?</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line49">49</a> launch_url = GOOGLE_URL</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line50">50</a> elsif ENV["APP"].downcase.include? "google"</pre></td> </tr> <tr class="marked"> <td><pre><a name="line51">51</a> launch_url = GOOGLE_URL</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line52">52</a> elsif ENV["APP"].downcase.include? "rubygems"</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line53">53</a> launch_url = RUBYGEMS_URL</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line54">54</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line55">55</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line56">56</a> # Login credentials</pre></td> </tr> <tr class="marked"> <td><pre><a name="line57">57</a> USER_NAME = $obj_yml.get_value("application/#{BOX}/#{PROFILE}/login_credentials/user_name")</pre></td> </tr> <tr class="marked"> <td><pre><a name="line58">58</a> PASSWORD = $obj_yml.get_value("application/#{BOX}/#{PROFILE}/login_credentials/password")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line59">59</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line60">60</a> # Application framework setting details</pre></td> </tr> <tr class="marked"> <td><pre><a name="line61">61</a> LOGGER_LEVEL = $obj_yml.get_value("environment/logger_level") # get the Logger Level</pre></td> </tr> <tr class="marked"> <td><pre><a name="line62">62</a> DATETIME_FORMAT = $obj_yml.get_value("environment/datetime_pattern") # get the datetime format</pre></td> </tr> <tr class="marked"> <td><pre><a name="line63">63</a> FEATURE_ID_PREFIX = $obj_yml.get_value("environment/feature_id_prefix") # get the feature id prefix</pre></td> </tr> <tr class="marked"> <td><pre><a name="line64">64</a> SCENARIO_ID_PREFIX = $obj_yml.get_value("environment/scenario_id_prefix") # get the scenario id prefix</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line65">65</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line66">66</a> # for consolidated html report</pre></td> </tr> <tr class="marked"> <td><pre><a name="line67">67</a> NO_OF_PARALLEL_THREADS = $obj_yml.get_value("environment/no_of_parallel_threads") # get the parallel threads count</pre></td> </tr> <tr class="marked"> <td><pre><a name="line68">68</a> DELAY_BETWEEN_PARALLEL_THREADS = $obj_yml.get_value("environment/delay_between_parallel_threads") # get the delay between parallel threads</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line69">69</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line70">70</a> # Performance report</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line71">71</a> # the cucumber execution details are extracted from report(s) generated and saved into Sybase database</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line72">72</a> # below are the database details</pre></td> </tr> <tr class="marked"> <td><pre><a name="line73">73</a> PERFORMANCE_REPORT = $obj_yml.get_value("environment/performance_report")</pre></td> </tr> <tr class="marked"> <td><pre><a name="line74">74</a> if ["yes", "true"].include?(PERFORMANCE_REPORT.to_s.downcase)</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line75">75</a> DB_SERVER = $obj_yml.get_value("environment/db_server")</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line76">76</a> DB_NAME = $obj_yml.get_value("environment/db_name")</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line77">77</a> DB_USER_NAME = $obj_yml.get_value("environment/db_user_name")</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line78">78</a> DB_PASSWORD = $obj_yml.get_value("environment/db_password")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line79">79</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line80">80</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line81">81</a> # log test execution environment details</pre></td> </tr> <tr class="marked"> <td><pre><a name="line82">82</a> $log.info("__________________________________________________________")</pre></td> </tr> <tr class="marked"> <td><pre><a name="line83">83</a> $log.info("Test Machine : #{ENV["COMPUTERNAME"]}(#{ENV['OS']})")</pre></td> </tr> <tr class="marked"> <td><pre><a name="line84">84</a> $log.info("Test Browser : #{BROWSER}")</pre></td> </tr> <tr class="marked"> <td><pre><a name="line85">85</a> $log.info("Test URL : #{launch_url}") # the actual url under test can be given here</pre></td> </tr> <tr class="marked"> <td><pre><a name="line86">86</a> $log.info("__________________________________________________________")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line87">87</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line88">88</a> $current_log_dir = $log.get_current_log_dir # global variable to hold the base log directory name</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line89">89</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line90">90</a> $start_time = $log.get_current_datetime # start time of the execution</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line91">91</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line92">92</a> $log_env = $log # to hold base log file object for log entries after test execution</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line93">93</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line94">94</a> $current_log_file = nil # hold the current log file name</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line95">95</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line96">96</a> PageObject.default_element_wait = $obj_yml.get_value("environment/default_element_wait") # set default timeout for element wait</pre></td> </tr> <tr class="marked"> <td><pre><a name="line97">97</a> PageObject.default_page_wait = $obj_yml.get_value("environment/default_page_wait") # set default timeout for page wait</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line98">98</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line99">99</a> $browser = CUKES::BrowserSettings.browser_setup(BROWSER) # launches the browser</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line100">100</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line101">101</a> # if you want to launch the URL only once (at the beginning), then you can use the below script</pre></td> </tr> <tr class="marked"> <td><pre><a name="line102">102</a> $browser.navigate.to(launch_url)</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line103">103</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line104">104</a> $scenario_count = 0 # holds scenario count for each feature file</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line105">105</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line106">106</a> # Description : called before the execution of a scenario</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line107">107</a> # Author : Chandra sekaran</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line108">108</a> # Arguments :</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line109">109</a> # scenario : scenario object</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line110">110</a> #</pre></td> </tr> <tr class="marked"> <td><pre><a name="line111">111</a> Before do |scenario|</pre></td> </tr> <tr class="marked"> <td><pre><a name="line112">112</a> @step_count = nil # step counter used in AfterStep to get current step name</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line113">113</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line114">114</a> @scenario_start_time = $log.get_current_datetime # scenario execution start time</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line115">115</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line116">116</a> @browser = $browser # passes the browser object to the page class constructor (implicitly)</pre></td> </tr> <tr class="marked"> <td><pre><a name="line117">117</a> @browser.manage.timeouts.implicit_wait = 3 # set 3s implicit wait time</pre></td> </tr> <tr class="marked"> <td><pre><a name="line118">118</a> $browser_version = @browser.capabilities[:version] # current browser version</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line119">119</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line120">120</a> $world = self # for overriding puts method to print the argument into html file and in console as well </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line121">121</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line122">122</a> $str_feature_file_path = scenario.file # absolute path of current feature file</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line123">123</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line124">124</a> @str_feature_module_name = $log.get_feature_module_name($str_feature_file_path) # extracts module (and/or submodule) name from str_file_path</pre></td> </tr> <tr class="marked"> <td><pre><a name="line125">125</a> if $current_log_file.nil? || !($current_log_file.include? @str_feature_module_name)</pre></td> </tr> <tr class="marked"> <td><pre><a name="line126">126</a> $log = CUKES::CreateLog.new(@str_feature_module_name) # creates a new log file with the module ame</pre></td> </tr> <tr class="marked"> <td><pre><a name="line127">127</a> $current_log_file = $log.get_current_log_file</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line128">128</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line129">129</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line130">130</a> $log.info("__________________________________________________________")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line131">131</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line132">132</a> # feature name</pre></td> </tr> <tr class="marked"> <td><pre><a name="line133">133</a> case scenario</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line134">134</a> when Cucumber::Ast::Scenario</pre></td> </tr> <tr class="marked"> <td><pre><a name="line135">135</a> @feature_name = scenario.feature.name</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line136">136</a> when Cucumber::Ast::OutlineTable::ExampleRow</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line137">137</a> @feature_name = scenario.scenario_outline.feature.name</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line138">138</a> end</pre></td> </tr> <tr class="marked"> <td><pre><a name="line139">139</a> $log.info("Test Feature : " + @feature_name)</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line140">140</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line141">141</a> # check for a new feature and set $scenario_count accordingly</pre></td> </tr> <tr class="marked"> <td><pre><a name="line142">142</a> if $feature_name_old != @feature_name</pre></td> </tr> <tr class="marked"> <td><pre><a name="line143">143</a> $scenario_count = 0</pre></td> </tr> <tr class="marked"> <td><pre><a name="line144">144</a> $feature_name_old = @feature_name</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line145">145</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line146">146</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line147">147</a> # scenario name</pre></td> </tr> <tr class="marked"> <td><pre><a name="line148">148</a> case scenario</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line149">149</a> when Cucumber::Ast::Scenario</pre></td> </tr> <tr class="marked"> <td><pre><a name="line150">150</a> @scenario_name = scenario.name</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line151">151</a> when Cucumber::Ast::OutlineTable::ExampleRow</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line152">152</a> @scenario_name = scenario.scenario_outline.name</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line153">153</a> end</pre></td> </tr> <tr class="marked"> <td><pre><a name="line154">154</a> $log.info("Test Scenario : " + @scenario_name)</pre></td> </tr> <tr class="marked"> <td><pre><a name="line155">155</a> Kernel.puts("\n [#{Time.now.strftime(DATETIME_FORMAT)}] Currently running scenario : \n #{@scenario_name.to_s}") # for logging in console</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line156">156</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line157">157</a> # tags name</pre></td> </tr> <tr class="marked"> <td><pre><a name="line158">158</a> $scenario_tags = scenario.source_tag_names</pre></td> </tr> <tr class="marked"> <td><pre><a name="line159">159</a> $log.info("Test tag(s) : " + $scenario_tags.to_s)</pre></td> </tr> <tr class="marked"> <td><pre><a name="line160">160</a> Kernel.puts("\n \tWith tag(s) : #{$scenario_tags.to_s}") # for logging in console</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line161">161</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line162">162</a> # get first step name of first scenario</pre></td> </tr> <tr class="marked"> <td><pre><a name="line163">163</a> @current_feature = if scenario.respond_to?('scenario_outline')</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line164">164</a> # execute the following code only for scenarios outline (starting from the second example)</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line165">165</a> scenario.scenario_outline.feature</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line166">166</a> else</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line167">167</a> # execute the following code only for a scenario and a scenario outline (the first example only)</pre></td> </tr> <tr class="marked"> <td><pre><a name="line168">168</a> scenario.feature</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line169">169</a> end</pre></td> </tr> <tr class="marked"> <td><pre><a name="line170">170</a> $log.info("__________________________________________________________")</pre></td> </tr> <tr class="marked"> <td><pre><a name="line171">171</a> @arr_steps = []</pre></td> </tr> <tr class="marked"> <td><pre><a name="line172">172</a> @arr_steps = get_steps(@current_feature) # get all steps under the current scenario</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line173">173</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line174">174</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line175">175</a> # Description : called after the execution of a step</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line176">176</a> # Author : Chandra sekaran</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line177">177</a> # Arguments :</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line178">178</a> # scenario : scenario object</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line179">179</a> #</pre></td> </tr> <tr class="marked"> <td><pre><a name="line180">180</a> AfterStep do |scenario|</pre></td> </tr> <tr class="marked"> <td><pre><a name="line181">181</a> sleep 1</pre></td> </tr> <tr class="marked"> <td><pre><a name="line182">182</a> @step_count = 0 if @step_count.nil? # @step_count ||= 0</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line183">183</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line184">184</a> begin</pre></td> </tr> <tr class="marked"> <td><pre><a name="line185">185</a> $log.info("Test Step (#{scenario.failed? ? 'failed' : 'success'}) : " + @arr_steps[@step_count])</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line186">186</a> rescue Exception => e</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line187">187</a> $log.error("Error in AfterStep hook for step_count (#{@step_count}): #{e}")</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line188">188</a> $log.info("Test Step (#{scenario.failed? ? 'failed' : 'success'}) : " + @arr_steps[@step_count-1]) rescue Exception</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line189">189</a> end</pre></td> </tr> <tr class="marked"> <td><pre><a name="line190">190</a> Kernel.puts("\n \t\t[#{Time.now.strftime(DATETIME_FORMAT)}] #{@arr_steps[@step_count].to_s}") rescue Exception # for logging in console</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line191">191</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line192">192</a> @step_count += 1 # increase step counter</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line193">193</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line194">194</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line195">195</a> # Description : called after support has been loaded but before features are loaded</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line196">196</a> # Author : Chandra sekaran</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line197">197</a> # Arguments :</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line198">198</a> # config : config object</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line199">199</a> #</pre></td> </tr> <tr class="marked"> <td><pre><a name="line200">200</a> AfterConfiguration do |config|</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line201">201</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line202">202</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line203">203</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line204">204</a> # Description : called after the execution of a scenario</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line205">205</a> # Author : Chandra sekaran</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line206">206</a> # Arguments :</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line207">207</a> # scenario : scenario object</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line208">208</a> #</pre></td> </tr> <tr class="marked"> <td><pre><a name="line209">209</a> After do |scenario|</pre></td> </tr> <tr class="marked"> <td><pre><a name="line210">210</a> @step_count = 0 if @step_count.nil?</pre></td> </tr> <tr class="marked"> <td><pre><a name="line211">211</a> @scenario_end_time = $log.get_current_datetime # scenario execution finish time</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line212">212</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line213">213</a> if scenario.failed?</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line214">214</a> begin</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line215">215</a> $log.info("Test Step (failed) : " + @arr_steps[@step_count])</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line216">216</a> rescue Exception => e</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line217">217</a> $log.error("Error in After hook for step_count (#{@step_count}): #{e}")</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line218">218</a> $log.info("Test Step (failed) : " + @arr_steps[@step_count-1]) rescue Exception</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line219">219</a> end</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line220">220</a> str_img_path = CUKES::BrowserSettings.capture_screenshot(@str_feature_module_name) # takes the screenshot of webpage</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line221">221</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line222">222</a> # attaches a link to html page, on click of which shows the image in the web page</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line223">223</a> embed(str_img_path, "image/png", "Click to view screenshot") rescue Exception</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line224">224</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line225">225</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line226">226</a> $scenario_count += 1 # increment scenario count by 1</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line227">227</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line228">228</a> $log.info("__________________________________________________________")</pre></td> </tr> <tr class="marked"> <td><pre><a name="line229">229</a> $log.info("Scenario start time : " + $log.get_formatted_datetime(@scenario_start_time))</pre></td> </tr> <tr class="marked"> <td><pre><a name="line230">230</a> $log.info("Scenario end time : " + $log.get_formatted_datetime(@scenario_end_time))</pre></td> </tr> <tr class="marked"> <td><pre><a name="line231">231</a> $log.info("Total elapsed time : " + $log.get_datetime_diff(@scenario_start_time, @scenario_end_time))</pre></td> </tr> <tr class="marked"> <td><pre><a name="line232">232</a> $log.info("__________________________________________________________")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line233">233</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line234">234</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line235">235</a> # Description : called after the execution of all features</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line236">236</a> # Author : Chandra sekaran</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line237">237</a> #</pre></td> </tr> <tr class="marked"> <td><pre><a name="line238">238</a> at_exit do</pre></td> </tr> <tr class="marked"> <td><pre><a name="line239">239</a> $obj_yml.set_value("application/#{BOX}/#{PROFILE}/in_use", "no") # releases the current profile</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line240">240</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line241">241</a> $obj_yml.change_execution_count("environment/parallel_execution_count", $obj_yml.get_value("application/#{BOX}/#{PROFILE}/in_use"))</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line242">242</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line243">243</a> $end_time = $log_env.get_current_datetime</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line244">244</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line245">245</a> # logs into the base log file created with the name 'app_env.log'</pre></td> </tr> <tr class="marked"> <td><pre><a name="line246">246</a> $log_env.info("__________________________________________________________")</pre></td> </tr> <tr class="marked"> <td><pre><a name="line247">247</a> $log_env.info("Execution start time : " + $log_env.get_formatted_datetime($start_time))</pre></td> </tr> <tr class="marked"> <td><pre><a name="line248">248</a> $log_env.info("Execution end time : " + $log_env.get_formatted_datetime($end_time))</pre></td> </tr> <tr class="marked"> <td><pre><a name="line249">249</a> $log_env.info("Total elapsed time : " + $log_env.get_datetime_diff($start_time, $end_time).to_s)</pre></td> </tr> <tr class="marked"> <td><pre><a name="line250">250</a> $log_env.info("__________________________________________________________")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line251">251</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line252">252</a> # rename the html report file and move it to respective log report directory</pre></td> </tr> <tr class="marked"> <td><pre><a name="line253">253</a> $log_env.create_html_report</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line254">254</a> </pre></td> </tr> <tr class="inferred"> <td><pre><a name="line255">255</a> # creates a new custom HTML report based on cucumber report(s) generated only after complete (single or parallel) execution</pre></td> </tr> <tr class="marked"> <td><pre><a name="line256">256</a> if $parallel_execution_count == 0</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line257">257</a> # get the html report files of current execution</pre></td> </tr> <tr class="marked"> <td><pre><a name="line258">258</a> arr_report_file = $log_env.get_files_absolute_path("test_result", "html", $start_time - $world.get_execution_delay_time.seconds)</pre></td> </tr> <tr class="marked"> <td><pre><a name="line259">259</a> $log.info("Report directory names (html): #{arr_report_file.to_s}")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line260">260</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line261">261</a> obj = CUKES::CustomHtmlReport.new(arr_report_file)</pre></td> </tr> <tr class="marked"> <td><pre><a name="line262">262</a> obj.create_custom_report</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line263">263</a> </pre></td> </tr> <tr class="marked"> <td><pre><a name="line264">264</a> if ["yes", "true"].include?(PERFORMANCE_REPORT.to_s.downcase)</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line265">265</a> # get the json report files of current execution</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line266">266</a> arr_report_file = $log_env.get_files_absolute_path("test_result", "json", $start_time - $world.get_execution_delay_time.seconds)</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line267">267</a> $log.info("Report directory names (json): #{arr_report_file.to_s}")</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line268">268</a> </pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line269">269</a> obj = CUKES::PerformanceReport.new(arr_report_file)</pre></td> </tr> <tr class="uncovered"> <td><pre><a name="line270">270</a> obj.create_performance_report</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line271">271</a> end</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line272">272</a> end</pre></td> </tr> <tr class="marked"> <td><pre><a name="line273">273</a> CUKES::BrowserSettings.quit_browser # closes the current browser</pre></td> </tr> <tr class="inferred"> <td><pre><a name="line274">274</a> end</pre></td> </tr> </tbody> </table> <p>Generated on 2015-05-08 10:40:30 +0530 with <a href="https://github.com/fguillen/simplecov-rcov">SimpleCov-RCov 0.2.3</a></p> </body>
</html>