Dev UI

A browser-based test
dashboard for Apex

Run renmy dev and renmy runtime opens a test dashboard in the browser: test explorer, live results, coverage, watch mode, a schema browser and an Apex REPL. It needs no editor plugin, so it works without VS Code or IntelliJ.

What renmy dev starts

Run renmy dev and renmy runtime starts a local web server on a free port, or on nimbus.devui.port, prints its URL and opens it in your browser. The dashboard stays connected over WebSocket, so results update as tests run, without a page refresh. If you know the Quarkus Dev UI, this is the same idea for Apex.

It is useful on a machine without a Salesforce IDE, in a browser-only environment, when pairing with someone who does not have the plugin, or when you prefer a dashboard to terminal output.

The Dev UI runs alongside the editor integration. Both share the same daemon, so tests run from VS Code update the Dev UI too.

bash
# Start the Dev UI
renmy dev

# → Prints its URL and opens it in your browser
# → Stays connected via WebSocket
# → Results update live as tests run

# Don't open browser automatically
renmy dev --no-browser

# Or configure in nimbus.properties
# nimbus.devui.port=8085          # default: a free port; --addr wins
# nimbus.devui.open-browser=true  # --no-browser wins over the key

The interface

A resizable sidebar holds the test explorer: every class and method in the project, grouped by class. Click to expand a class, click a method to select it. Each entry shows its live status: pending, running, passed, or failed. Run buttons on hover run a single class or method.

Nimbus Dev
✓ 24✗ 226 tests
▶ Run All↺ Run Failed◉ Watch● Ready
Test Explorer
▾AccountServiceTest6
▸AccountTriggerTest24
▾CalculatorTest8
▾CollectionUtilsTest6
ResultsCoverageExecuteSchemaOutputConfig
✗AccountTriggerTest.testBeforeInsertExpected: Other, Actual: null18ms
✗AccountTriggerTest.testAfterUpdateSystem.NullPointerException at line 3422ms
✓AccountServiceTest.testCreateAccount12ms
✓AccountServiceTest.testBulkInsert8ms
✓CalculatorTest.testAddition2ms
Results

Live test results as they complete. Pass/fail per method, duration, failure messages inline. Click any test to see its full output and error trace.

Coverage

Line coverage percentages per class, updated after every run. It shows which lines are covered and which are not, in the browser.

ExecuteUnique

An Apex REPL. Write and run anonymous Apex in the browser: query data, test expressions, prototype logic.

Schema

Every SObject in the project schema, with fields, types and required flags. Useful when writing SOQL and a field name escapes you.

Output

The raw test output log: System.debug() calls, governor limit warnings, trace entries. Scrollable and searchable.

Config

The effective nimbus.properties configuration with the active profile highlighted. It shows what is set, what is overridden, and which file each value came from.

The Execute tab

The Execute tab is an Apex REPL against the local database. Write an Apex expression or block and run it immediately, with no test class, no deploy and no org.

It behaves like renmy exec in the browser, with structured output: results for SObjects and collections, inline System.debug() output, error messages with line numbers.

Useful for prototyping SOQL against seeded data, checking an expression before writing a test, seeing how the runtime handles an edge case, or verifying DML behavior without a full test method.

apex
// In the Execute tab - runs immediately

// Query your seeded data
List<Account> accounts = [
    SELECT Id, Name, Industry
    FROM Account
    WHERE Industry = 'Technology'
    LIMIT 5
];
System.debug('Found: ' + accounts.size());

// Test an expression
Decimal result = Math.round(3.7);
System.debug(result); // → 4

// Insert a record and query it back
Account acc = new Account(Name = 'Test');
insert acc;
Account fetched = [SELECT Name FROM Account WHERE Id = :acc.Id];
System.debug(fetched.Name); // → Test
Execute runs in a transaction that rolls back afterwards, so seeded test data stays clean between executions.

Watch mode in the Dev UI

Click the Watch button in the toolbar and renmy runtime monitors your Apex classes for changes. Save a class and the tests rerun; results update in the browser as they complete.

For multi-package projects, use the Watch scope dropdown to restrict watching to a specific package directory. Only tests related to that package rerun on save, which keeps reruns short in large projects.

The parallel workers panel appears during runs and shows how many test workers are active and which test each is running. Watch mode respects your nimbus.test.parallel setting, so more cores mean faster reruns.

bash
# Click Watch in the toolbar, or press Cmd/Ctrl+W
# → Watches the package directories for .cls changes
# → Reruns the tests on every save
# → Results update live in the browser

# Scope watch to a specific package
# Use the Watch ▾ dropdown in the toolbar
# → "All packages" or select a specific path

A test dashboard in the browser

renmy dev opens a test dashboard with a test explorer, live results, coverage, a schema browser and an Apex REPL. It needs no editor plugin.