class CukeParser::ParseEngine::HtmlParser
Public Class Methods
new()
click to toggle source
# File lib/parse_engine/html_parser.rb, line 7 def initialize @utils = ParserUtils.new @system_data_path = "/archive/systemData.json" @cuke_data = "/archive/cucumber.html" end
Public Instance Methods
get_build(file_path)
click to toggle source
# File lib/parse_engine/html_parser.rb, line 13 def get_build(file_path) if File.exists?(file_path) today = Time.now date = today.to_s.split(" ")[0] time = today.to_s.split(" ")[1] @cur_build = CukeModel::CukeSuite.new(date,time,today,nil,nil,nil,nil,nil) return parse_build(file_path) else #nothing was found return false end end
parse_build(file_path)
click to toggle source
# File lib/parse_engine/html_parser.rb, line 26 def parse_build(file_path) page = Nokogiri::HTML(open(file_path)) features = parse_features(page) if @cur_build.status.empty? #all the steps passed @cur_build.status = "passed" end script = page.css('script').to_a.pop(2) duration = script[0].text.gsub("document.getElementById('duration').innerHTML = \"Finished in <strong>","") duration = duration.to_s.gsub(" seconds</strong>\";","") @cur_build.duration = 0 @cur_build.converted_duration = duration @cur_build.features = features['list'] return @cur_build end
parse_features(features)
click to toggle source
# File lib/parse_engine/html_parser.rb, line 42 def parse_features(features) feature_data = Hash['duration', 0, 'list', Array.new] features.css('div.feature').each do |feature| @cur_feature = CukeModel::CukeFeature.new("Feature",feature.css('span.val')[0].text.gsub("Feature: ","")) scenarios = parse_scenarios((feature.css('div.background') + feature.css('div.scenario'))) if @cur_feature.status.empty? #all the steps passed @cur_feature.status = "passed" end @cur_feature.duration = scenarios['duration'] @cur_feature.converted_duration = @utils.format_time(scenarios['duration']) @cur_feature.scenarios = scenarios['list'] feature_data['list'].push(@cur_feature) feature_data['duration'] = feature_data['duration'] + @cur_feature.duration end return feature_data end
parse_scenarios(scenarios)
click to toggle source
# File lib/parse_engine/html_parser.rb, line 60 def parse_scenarios(scenarios) scenario_data = Hash['duration', 0, 'list', Array.new] scenarios.each do |scenario| @cur_scenario = CukeModel::CukeScenario.new(scenario.css('span.keyword')[0].text.gsub(":",""),scenario.css('span.val')[0].text) steps = parse_steps(scenario.css('ol li div.step_name')) if @cur_scenario.status.empty? #all the steps passed @cur_scenario.status = "passed" end @cur_scenario.duration = steps['duration'] @cur_scenario.converted_duration = @utils.format_time(steps['duration']) @cur_scenario.steps = steps['list'] scenario_data['list'].push(@cur_scenario) scenario_data['duration'] = scenario_data['duration'] + @cur_scenario.duration end return scenario_data end
parse_steps(steps)
click to toggle source
# File lib/parse_engine/html_parser.rb, line 78 def parse_steps(steps) step_data = Hash['duration', 0, 'list', Array.new] steps.each do |step| stepErrorMessage = '' stepFailureImage = "I NEED TO FIND IMAGE" if step.parent.attribute('class').to_s.gsub("step ","") == "failed" @cur_scenario.status = "failed" @cur_feature.status = "failed" @cur_build.status = "failed" stepErrorMessage = "I NEED TO FIND ERROR" # #failed steps should have an image available: # unless step['embeddings'].nil? # stepFailureImage = step['embeddings'][0]['data'] # end end step_data['list'].push(CukeModel::CukeStep.new(step.css('span.keyword').text,step.css('span.val').text,0,0,step.parent.attribute('class').to_s.gsub("step ",""),stepErrorMessage,stepFailureImage)) end return step_data end