Class: RSpecTelemetry::ConsoleReport
- Inherits:
-
Object
- Object
- RSpecTelemetry::ConsoleReport
show all
- Includes:
- Helpers
- Defined in:
- lib/rspec_telemetry/console_report.rb
Defined Under Namespace
Modules: Helpers
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Helpers
fmt, pct, section, truncate
Constructor Details
#initialize(analyzer, files_count:, top: 15) ⇒ ConsoleReport
Returns a new instance of ConsoleReport.
22
23
24
25
26
|
# File 'lib/rspec_telemetry/console_report.rb', line 22
def initialize(analyzer, files_count:, top: 15)
@analyzer = analyzer
@files_count = files_count
@top = top
end
|
Class Method Details
.drill_down(events, example_id) ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/rspec_telemetry/console_report.rb', line 35
def self.drill_down(events, example_id)
lines = Helpers.section("Example: #{example_id}")
finished = events.find { |e| e["type"] == "example.finished" }
if finished
lines << " #{finished["full_description"]}"
lines << " status: #{finished["status"]} duration: #{Helpers.fmt(finished["duration_ms"])}"
end
factories = events.select { |e| e["type"] == "factory_bot.run_factory" }
return lines.join("\n") if factories.empty?
lines << ""
lines << " FactoryBot calls (indented by nesting depth):"
factories.each { |f| lines << factory_line(f) }
total = factories.sum { |f| (f["self_duration_ms"] || f["duration_ms"]).to_f }
lines << ""
lines << " factory self total: #{Helpers.fmt(total)} across #{factories.size} calls"
lines.join("\n")
end
|
.factory_line(fields) ⇒ Object
55
56
57
58
59
60
61
|
# File 'lib/rspec_telemetry/console_report.rb', line 55
def self.factory_line(fields)
indent = " " + (" " * fields["depth"].to_i)
traits = Array(fields["traits"]).empty? ? "" : " [#{fields["traits"].join(",")}]"
self_ms = fields["self_duration_ms"] || fields["duration_ms"]
"#{indent}#{fields["factory"]}:#{fields["strategy"]}#{traits} " \
"self #{Helpers.fmt(self_ms)} / total #{Helpers.fmt(fields["duration_ms"])}"
end
|
Instance Method Details
#render ⇒ Object
28
29
30
31
32
33
|
# File 'lib/rspec_telemetry/console_report.rb', line 28
def render
lines = overview + slow_files + slow_examples + top_factories
lines << ""
lines << "Tip: drill into one example with `rspec-telemetry --example \"<example_id>\"`"
lines.join("\n")
end
|