lib/lopata/observers/web_logger.rb in lopata-0.1.21 vs lib/lopata/observers/web_logger.rb in lopata-0.1.22

- old
+ new

@@ -1,8 +1,9 @@ require 'httparty' require 'json' require_relative 'backtrace_formatter' +require_relative 'group_tree' module Lopata module Observers # @private class WebLogger < BaseObserver @@ -46,11 +47,28 @@ @launch_id = JSON.parse(post("/projects/#{project_code}/builds/#{build_number}/launches.json", body: {total: count}).body)['id'] end def add_attempt(scenario, finished) status = scenario.failed? ? Lopata::FAILED : Lopata::PASSED - steps = scenario.steps.map { |s| step_hash(s) } + steps = [] + GroupTree.steps_hierarhy(scenario.steps).walk_through do |step| + if step.is_a?(Lopata::StepExecution) + next unless step.loggable? + steps << step_hash(step) + else # GroupTree + + group = step + if %i{ passed skipped }.include?(group.status) + steps << group_hash(group) + false + else + true + end + end + end + + steps = scenario.steps.select(&:loggable?).map { |s| step_hash(s) } request = { status: status, steps: steps, launch: { id: @launch_id, finished: finished } } test = test_id(scenario) post("/tests/#{test}/attempts.json", body: request) rescue SocketError => e # Ignore network problems. Continue with next scenario when cannot log results. @@ -63,9 +81,13 @@ if step.failed? hash[:message] = error_message_for(step) hash[:backtrace] = backtrace_for(step) end hash + end + + def group_hash(group) + { status: group.status, title: group.title } end def test_id(scenario) request = { test: { \ No newline at end of file