Traces & Analytics

Not a log file.
An execution map.

Salesforce gives you a 40,000-line debug log and a replay debugger built for a different era. Nimbus instruments every test execution with OpenTelemetry - method calls, SOQL, DML, triggers, branches, variables - visualized as an interactive execution tree.

Before and after

Salesforce debug log
Debug log - 40,000 lines
14:23:01.012 (12345)|EXECUTION_STARTED
14:23:01.013 (13001)|CODE_UNIT_STARTED|[EXTERNAL]|...
14:23:01.014 (14223)|METHOD_ENTRY|[1]|AccountService...
14:23:01.015 (15001)|VARIABLE_SCOPE_BEGIN|[1]|name|...
14:23:01.015 (15442)|VARIABLE_ASSIGNMENT|[1]|name|...
14:23:01.016 (16001)|SOQL_EXECUTE_BEGIN|[2]|...
14:23:01.018 (18223)|SOQL_EXECUTE_END|[2]|Rows:3
14:23:01.019 (19001)|DML_BEGIN|[3]|Op:Insert|Type:Account
... 39,982 more lines
Nimbus execution trace
Trace: AccountServiceTest.testCreate - 47 steps
Execution Flow
AccountService.create()34ms
Assign: acc0µs
If condition: true0µs
Assign: acc.Industry0µs
Insert Account 1 record8ms
Trigger: AccountTrigger before insert · 14ms
SOQL SELECT Id FROM Account...3ms
Variables
at: Insert Account
acc (Account)
{ Name: "Acme", Industry: "Technology" }
name (String)
"Acme Corp"
industry (String)
"Technology"
↑↓ navigate · space expand · tab panel · / search

Coverage - lines, methods, branches

Coverage is tracked at three levels: lines, methods, and branches. After every run, you see a summary with progress bars and a per-class breakdown - which classes are covered, which methods were called, and which weren't.

The color coding matches Salesforce's own thresholds: green at 80% and above, amber between 50% and 80%, red below. You know your deployment coverage status before you push - not after CI tells you.

Branch coverage goes further than Salesforce's built-in metric - it tracks whether both sides of every if, switch, and ternary were exercised.

Coverage summary
Code Coverage Summary
Lines: 847 / 912(92.9%)███████████████████░
Methods:64 / 71(90.1%)██████████████████░░
Branches:38 / 52(73.1%)██████████████░░░░░░
Coverage by Class:
AccountService.cls97.2%███████████████████░
├─create100%████████████████
└─createWithDefaults100%████████████████
AccountTriggerHandler.cls88.4%██████████████████░░
├─beforeInsert100%████████████████
└─afterUpdate0%░░░░░░░░░░░░░░░░
PricingService.cls61%████████████░░░░░░░░
├─applyDiscount100%████████████████
└─getMatrix0%░░░░░░░░░░░░░░░░

Test analytics

Every test run is recorded. Over time, Nimbus builds a picture of your test suite's health - pass rate trends, duration trends, and automatic flaky test detection.

The trend chart shows pass rate and duration for every run over the last N days. Regressions are immediately visible - a sudden dip in pass rate or a spike in duration pinpoints exactly when something changed.

Flaky test detection tracks whether each test passes or fails across runs and computes a flip rate - the fraction of adjacent runs where the outcome changed. A test with a 40% flip rate is actively lying to you.

Pass rate - last 14 days
100%75%50%
M
T
W
T
F
S
S
M
T
W
T
F
S
S
Flaky tests - last 20 runs
AccountTriggerTest.testAfterUpdate42% flip
← newest
PricingServiceTest.testConcurrency21% flip
← newest
CollectionUtilsTest.testSortStability11% flip
← newest

Available everywhere

Traces and analytics are always on - no configuration required. Every test run is recorded, every execution is traced.

In the Dev UI, the Analytics tab shows the trend chart, flaky test list, and run history. Click any test in the Results tab to open its trace inline.

In VS Code and IntelliJ, the Nimbus panel includes history, trend charts, and the trace viewer. Right-click any test to open its trace directly in the editor.

From the terminal, use nimbus trace to open the interactive two-panel trace viewer for any recent test.

bash
# Run a test with tracing enabled
nimbus test "AccountServiceTest.testCreate" --trace

# Set trace verbosity
nimbus test "AccountServiceTest.*" --trace --trace-level verbose
# levels: minimal, normal, verbose, debug

# Traces are saved to:
# .nimbus/traces/<timestamp>_<run-id>/trace.jsonl

# History is saved to:
# .nimbus/history/<timestamp>_<run-id>.json

See exactly what your test did.

Every method call, every query, every branch - structured, searchable, interactive. No log files. No replay setup.