lib/lopata/scenario.rb in lopata-0.1.22 vs lib/lopata/scenario.rb in lopata-0.1.23

- old
+ new

@@ -88,11 +88,21 @@ world.notify_observers(:scenario_finished, self) cleanup end def run_step(step) - return if step.skipped? + return if step.skipped? || step.ignored? + groups = step.groups + if groups.length > 0 && groups != @current_groups + @current_groups = groups + condition = groups.last.condition + if condition&.dynamic? && !condition.match_dynamic?(scenario) + step.ignored! + ignore_groups(groups) + return + end + end @current_step = step step.run(scenario) skip_rest if step.failed? && step.skip_rest_on_failure? @current_step = nil end @@ -109,9 +119,13 @@ @steps = steps.reject(&:teardown_group?) + steps.select(&:teardown_group?) end def skip_rest steps.select { |s| s.status == :not_runned && !s.teardown? }.each(&:skip!) + end + + def ignore_groups(groups) + steps.select { _1.status == :not_runned && _1.groups.take(groups.length) == groups }.each(&:ignored!) end def metadata if current_step @metadata.merge(current_step.metadata)