Traces & Analytics

An execution trace
for every test run.

Salesforce gives you a 40,000-line debug log and a replay debugger. Nimbus instruments every test execution with OpenTelemetry (method calls, SOQL, DML, triggers, branches, variables) and shows it as an interactive execution tree.

A debug log next to a trace

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 by line, method, and branch

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.

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 unreliable.

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

Where to find it

Traces and analytics are always on, with no configuration required. Every test run is recorded and 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

Nimbus records what every test did.

Every method call, query, and branch is recorded in a structured, searchable trace. There are no log files and no replay setup.