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