VSCode Extension

The Nimbus test runner
inside VS Code.

The extension shows test results, a live debugger, execution traces, governor limit tracking, and coverage gutters inside the file you are editing.

Inline resultsLive debuggerTrace viewerGovernor limitsCoverage guttersWatch modeSchema explorer

Published to both the VS Code Marketplace and Open VSX and works in VS Code, Cursor, Windsurf, and VSCodium.

Tests run from the file you are editing

Every @isTest class gets action buttons above the code. Click Run Test and the result appears next to the method, with execution time.

Non-test classes get Run and Debug buttons above each public method. Parameters are entered in input boxes and return values appear inline.

After every run, method execution times appear as inline annotations (// ⏱ 45ms) next to each method signature, without opening an output channel.

The extension also registers with VSCode's native Test Explorer. Tests are discovered automatically and can be run from there or from CodeLens.
DateTimeTest.cls — Nimbus: 1/1 passed
5Run All TestsValidate✓ 4/4 passed
6private class DateTimeTest {
11Run TestDebug TestView Trace
12static void testDateNewInstance() {✓ 83ms
13Date d = Date.newInstance(2024, 3, 15);
14System.assertEquals(2024, d.year());
15}
18Run TestDebug TestView Trace
19static void testDateParse() {✓ 12ms
20Date d = Date.parse('03/15/2024');
21}
24Run TestDebug TestView Trace
25static void testDateToday() {✓ 6ms
26Date d = Date.today();
27System.assertNotEquals(null, d);
28}
31public static processRecords(List<Account> accounts) // ⏱ 45ms

Three sidebar views

The Nimbus activity bar icon opens a panel with three views, covering test run history, Salesforce governor limit tracking, and a live schema browser for the local database.

Nimbus — sidebar
▾ Test History
✓8 Apr, 15:561/1 passed (979ms)
✓7 Apr, 17:52581/581 passed (259ms)
✓7 Apr, 15:09581/581 passed (262ms)
✗7 Apr, 14:51578/581 passed (244ms)
▾ Governor Limits
testCreateAccount
SOQL12%
DML5%
CPU8%
testBulkInsert
SOQL68%
DML71%
CPU22%
testComplexQuery
SOQL88%
DML14%
CPU55%
▾ Schema Explorer
▸ Account12 rows · 47 cols
▸ Contact8 rows · 39 cols
▸ Opportunity5 rows · 61 cols
▸ CustomObj__c24 rows · 18 cols

Test History

Every test run logged, sorted newest first. Expand any run to see pass/fail by class and method. Open Trends for a 30-day pass rate chart and automatic flaky test detection. Right-click any run to diff it against another.

Governor Limits

Per-method Salesforce governor limit consumption (SOQL, DML, CPU, Heap, HTTP Callouts, and more), updated after every run. Color-coded: green under 50%, amber at 50–80%, red over 80%. Also shows inline as CodeLens above each method.

Schema Explorer

Browse the local PostgreSQL database Nimbus uses to store SObject data. See tables, row counts, column types, constraints, and foreign key relationships. Refreshes automatically after schema changes.

The trace viewer

After any test run, click View Trace above a method. A side panel opens with three tabs (Call Tree, Timeline waterfall, and a filterable Log) plus a variable inspector that updates as you navigate the trace.

Trace: DateTimeTest.testDateNewInstance
▼test.session94ms
▼test.method83ms
◆DateTimeTest.testDateNewInstance44ms
←apex.assign80µs
←variables.structured—
←variables.structured—
Inspector
Span
Nametest.method
Span ID76bd52a89df36c52
Parent0f5a86425048214d
StatusOK
Duration83.532ms
Attributes
test.classDateTimeTest
duration81.471ms
test.methodtestdatene...
test.passedtrue
Call Tree

Indented method invocation tree. Each node shows name, duration, and pass/fail. Click any node to inspect variables captured at that point.

Timeline

Horizontal waterfall chart. Wider bars are slower calls. Immediately shows which part of the execution is the bottleneck.

Log

Filterable event log with timestamps. Search by method name, event type, or variable value. Every branch, assignment, and SOQL call listed.

Coverage in the editor gutter

Enable coverage with nimbus.coverage.enabled and every test run annotates the editor directly. A green circle marks an executed line, red a missed one, and an orange half-circle a partially taken branch.

Method-level percentages appear inline after each signature: // 75% (3/4 lines), so you can see where coverage is thin without opening a report.

Branch coverage tracks both sides of every if, switch, and ternary, which Salesforce's built-in metric does not.

AccountService.cls — coverage: 75%
42
●
public static Account create(String name, String industry) {
43
●
Account acc = new Account(Name = name);
44
◐
if (industry != null) {
45
●
acc.Industry = industry;
46
●
} else {
47
●
acc.Industry = getDefaultIndustry();
48
}
49
●
insert acc;
50
●
return acc;
51
}
● covered● uncovered◐ partial branch

Watch mode

Toggle watch mode from the status bar or the command palette. Pick a package scope (all packages or a specific directory) and every .cls or .trigger save triggers a re-run.

The status bar shows live state throughout: Watch: force-app while idle, 3/10 tests... during a run, Watch: all passed or Watch: 2 failed after.

It pairs well with a split editor, with the test on the left and the implementation on the right. Save the implementation and the test result updates.

status bar — watch mode active
Idle$(eye) Watch: force-app
Running$(loading~spin) 7/20 tests...
Passed$(eye) Watch: all passed
Failed$(eye) Watch: 2 failed
Off$(eye-closed) Watch: off

Settings

All settings under the nimbus.* namespace. Configure in settings.json or the Settings UI.

SettingDefaultDescription
nimbus.binaryPath"nimbus"Path to the nimbus CLI binary
nimbus.parallel4Number of parallel test workers
nimbus.coverage.enabledfalseCollect coverage data on test runs
nimbus.coverage.showGutterIconstrueShow green/red/orange coverage icons in the editor gutter
nimbus.validateOnSavetrueValidate Apex syntax automatically on every save
nimbus.autoRun.onSavefalseAuto-run tests when a test file is saved
nimbus.autoRun.onOpenfalseAuto-run tests when a test file is opened
nimbus.performance.showInlineTimingstrueShow ⏱ method execution time annotations
nimbus.governor.showCodeLenstrueShow governor limit usage above each method

The test runner inside the editor

Inline results, live debugging, execution traces, coverage gutters, and governor limit tracking, all wired into VSCode through the Nimbus daemon. A Pro license is required.