<!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(&quot;app_env&quot;) # 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(&quot;config/config.yml&quot;) # 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(&quot;environment/parallel_execution_count&quot;, 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(&quot;environment/parallel_execution_count&quot;)</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[&quot;PROFILE&quot;].downcase == &quot;development&quot;</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(&quot;development&quot;)</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(&quot;development&quot;)</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[&quot;PROFILE&quot;].downcase == &quot;test&quot;</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(&quot;test&quot;)</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(&quot;test&quot;)</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 &quot;Invalid profile name : #{ENV[&quot;PROFILE&quot;]}&quot;</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(&quot;application/#{BOX}/#{PROFILE}/url/google&quot;) # 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(&quot;application/#{BOX}/#{PROFILE}/url/rubygems&quot;) # 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[&quot;APP&quot;].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[&quot;APP&quot;].downcase.include? &quot;google&quot;</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[&quot;APP&quot;].downcase.include? &quot;rubygems&quot;</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(&quot;application/#{BOX}/#{PROFILE}/login_credentials/user_name&quot;)</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line58">58</a> PASSWORD = $obj_yml.get_value(&quot;application/#{BOX}/#{PROFILE}/login_credentials/password&quot;)</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(&quot;environment/logger_level&quot;) # get the Logger Level</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line62">62</a> DATETIME_FORMAT = $obj_yml.get_value(&quot;environment/datetime_pattern&quot;)   # get the datetime format</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line63">63</a> FEATURE_ID_PREFIX = $obj_yml.get_value(&quot;environment/feature_id_prefix&quot;)   # 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(&quot;environment/scenario_id_prefix&quot;)   # 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(&quot;environment/no_of_parallel_threads&quot;) # 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(&quot;environment/delay_between_parallel_threads&quot;) # 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(&quot;environment/performance_report&quot;)</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line74">74</a> if [&quot;yes&quot;, &quot;true&quot;].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(&quot;environment/db_server&quot;)</pre></td>
      </tr>
      <tr class="uncovered">
        <td><pre><a name="line76">76</a>   DB_NAME = $obj_yml.get_value(&quot;environment/db_name&quot;)</pre></td>
      </tr>
      <tr class="uncovered">
        <td><pre><a name="line77">77</a>   DB_USER_NAME = $obj_yml.get_value(&quot;environment/db_user_name&quot;)</pre></td>
      </tr>
      <tr class="uncovered">
        <td><pre><a name="line78">78</a>   DB_PASSWORD = $obj_yml.get_value(&quot;environment/db_password&quot;)</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(&quot;__________________________________________________________&quot;)</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line83">83</a> $log.info(&quot;Test Machine         : #{ENV[&quot;COMPUTERNAME&quot;]}(#{ENV[&#39;OS&#39;]})&quot;)</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line84">84</a> $log.info(&quot;Test Browser         : #{BROWSER}&quot;)</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line85">85</a> $log.info(&quot;Test URL             : #{launch_url}&quot;)   # the actual url under test can be given here</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line86">86</a> $log.info(&quot;__________________________________________________________&quot;)</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(&quot;environment/default_element_wait&quot;)  # 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(&quot;environment/default_page_wait&quot;)  # 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(&quot;__________________________________________________________&quot;)</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(&quot;Test Feature         : &quot; + @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(&quot;Test Scenario        : &quot; + @scenario_name)</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line155">155</a>   Kernel.puts(&quot;\n [#{Time.now.strftime(DATETIME_FORMAT)}] Currently running scenario : \n #{@scenario_name.to_s}&quot;)   # 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(&quot;Test tag(s)          : &quot; + $scenario_tags.to_s)</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line160">160</a>   Kernel.puts(&quot;\n \tWith tag(s) : #{$scenario_tags.to_s}&quot;)   # 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?(&#39;scenario_outline&#39;)</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(&quot;__________________________________________________________&quot;)</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(&quot;Test Step (#{scenario.failed? ? &#39;failed&#39; : &#39;success&#39;})  : &quot; + @arr_steps[@step_count])</pre></td>
      </tr>
      <tr class="inferred">
        <td><pre><a name="line186">186</a>   rescue Exception =&gt; e</pre></td>
      </tr>
      <tr class="uncovered">
        <td><pre><a name="line187">187</a>     $log.error(&quot;Error in AfterStep hook for step_count (#{@step_count}): #{e}&quot;)</pre></td>
      </tr>
      <tr class="uncovered">
        <td><pre><a name="line188">188</a>     $log.info(&quot;Test Step (#{scenario.failed? ? &#39;failed&#39; : &#39;success&#39;})  : &quot; + @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(&quot;\n \t\t[#{Time.now.strftime(DATETIME_FORMAT)}] #{@arr_steps[@step_count].to_s}&quot;) 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(&quot;Test Step (failed)   : &quot; + @arr_steps[@step_count])</pre></td>
      </tr>
      <tr class="inferred">
        <td><pre><a name="line216">216</a>     rescue Exception =&gt; e</pre></td>
      </tr>
      <tr class="uncovered">
        <td><pre><a name="line217">217</a>       $log.error(&quot;Error in After hook for step_count (#{@step_count}): #{e}&quot;)</pre></td>
      </tr>
      <tr class="uncovered">
        <td><pre><a name="line218">218</a>       $log.info(&quot;Test Step (failed)   : &quot; + @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, &quot;image/png&quot;, &quot;Click to view screenshot&quot;) 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(&quot;__________________________________________________________&quot;)</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line229">229</a>   $log.info(&quot;Scenario start time  : &quot; + $log.get_formatted_datetime(@scenario_start_time))</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line230">230</a>   $log.info(&quot;Scenario end time    : &quot; + $log.get_formatted_datetime(@scenario_end_time))</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line231">231</a>   $log.info(&quot;Total elapsed time   : &quot; + $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(&quot;__________________________________________________________&quot;)</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(&quot;application/#{BOX}/#{PROFILE}/in_use&quot;, &quot;no&quot;)   # 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(&quot;environment/parallel_execution_count&quot;, $obj_yml.get_value(&quot;application/#{BOX}/#{PROFILE}/in_use&quot;))</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 &#39;app_env.log&#39;</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line246">246</a>   $log_env.info(&quot;__________________________________________________________&quot;)</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line247">247</a>   $log_env.info(&quot;Execution start time : &quot; + $log_env.get_formatted_datetime($start_time))</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line248">248</a>   $log_env.info(&quot;Execution end time   : &quot; + $log_env.get_formatted_datetime($end_time))</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line249">249</a>   $log_env.info(&quot;Total elapsed time   : &quot; + $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(&quot;__________________________________________________________&quot;)</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(&quot;test_result&quot;, &quot;html&quot;, $start_time - $world.get_execution_delay_time.seconds)</pre></td>
      </tr>
      <tr class="marked">
        <td><pre><a name="line259">259</a>     $log.info(&quot;Report directory names (html): #{arr_report_file.to_s}&quot;)</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 [&quot;yes&quot;, &quot;true&quot;].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(&quot;test_result&quot;, &quot;json&quot;, $start_time - $world.get_execution_delay_time.seconds)</pre></td>
      </tr>
      <tr class="uncovered">
        <td><pre><a name="line267">267</a>       $log.info(&quot;Report directory names (json): #{arr_report_file.to_s}&quot;)</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>